1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.adservices.service.stats; 18 19 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__ON_DEVICE_CLASSIFIER; 20 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__PRECOMPUTED_CLASSIFIER; 21 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER; 22 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__UNKNOWN_CLASSIFIER; 23 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_FAILURE; 24 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_NOT_INVOKED; 25 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_SUCCESS; 26 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_UNSPECIFIED; 27 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_FAILURE; 28 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_NOT_INVOKED; 29 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_SUCCESS; 30 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_UNSPECIFIED; 31 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__ON_DEVICE_CLASSIFIER; 32 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__PRECOMPUTED_CLASSIFIER; 33 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER; 34 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__UNKNOWN_CLASSIFIER; 35 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_FAILURE; 36 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_NOT_INVOKED; 37 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_SUCCESS; 38 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_UNSPECIFIED; 39 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_FAILURE; 40 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_NOT_INVOKED; 41 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_SUCCESS; 42 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_UNSPECIFIED; 43 44 import com.google.auto.value.AutoValue; 45 import com.google.common.collect.ImmutableList; 46 47 /** 48 * Class for AdServicesEpochComputationClassifierReported atom (for T+ logging) and 49 * AdServicesBackCompatEpochComputationClassifierReported atom (for R+ logging). 50 * 51 * <p>See go/rbc-ww-logging for more details. 52 */ 53 @AutoValue 54 public abstract class EpochComputationClassifierStats { 55 56 /** @return list of topics returned by the classifier for each app. */ getTopicIds()57 public abstract ImmutableList<Integer> getTopicIds(); 58 59 /** @return build id of the assets. */ getBuildId()60 public abstract int getBuildId(); 61 62 /** @return version of the assets used. */ getAssetVersion()63 public abstract String getAssetVersion(); 64 65 /** @return type of the classifier used for classification. */ getClassifierType()66 public abstract ClassifierType getClassifierType(); 67 68 /** @return on-device classifier status. */ getOnDeviceClassifierStatus()69 public abstract OnDeviceClassifierStatus getOnDeviceClassifierStatus(); 70 71 /** @return pre-computed classifier status. */ getPrecomputedClassifierStatus()72 public abstract PrecomputedClassifierStatus getPrecomputedClassifierStatus(); 73 74 /** @return generic builder. */ builder()75 public static EpochComputationClassifierStats.Builder builder() { 76 return new AutoValue_EpochComputationClassifierStats.Builder(); 77 } 78 79 /** Builder class for {@link EpochComputationClassifierStats}. */ 80 @AutoValue.Builder 81 public abstract static class Builder { 82 /** Set list of topics returned by the classifier for each app */ setTopicIds( ImmutableList<Integer> value)83 public abstract EpochComputationClassifierStats.Builder setTopicIds( 84 ImmutableList<Integer> value); 85 86 /** Set duplicate topic count. */ setBuildId(int value)87 public abstract EpochComputationClassifierStats.Builder setBuildId(int value); 88 89 /** Set version of the assets used. */ setAssetVersion(String value)90 public abstract EpochComputationClassifierStats.Builder setAssetVersion(String value); 91 92 /** Set type of the classifier used for classification. */ setClassifierType( ClassifierType value)93 public abstract EpochComputationClassifierStats.Builder setClassifierType( 94 ClassifierType value); 95 96 /** Set on-device classifier status. */ setOnDeviceClassifierStatus( OnDeviceClassifierStatus value)97 public abstract EpochComputationClassifierStats.Builder setOnDeviceClassifierStatus( 98 OnDeviceClassifierStatus value); 99 100 /** Set pre-computed classifier status. */ setPrecomputedClassifierStatus( PrecomputedClassifierStatus value)101 public abstract EpochComputationClassifierStats.Builder setPrecomputedClassifierStatus( 102 PrecomputedClassifierStatus value); 103 104 /** build for {@link EpochComputationClassifierStats}. */ build()105 public abstract EpochComputationClassifierStats build(); 106 } 107 108 /** Type of the classifier used for classifying apps. */ 109 public enum ClassifierType { 110 UNKNOWN_CLASSIFIER( 111 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__UNKNOWN_CLASSIFIER, 112 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__UNKNOWN_CLASSIFIER), 113 ON_DEVICE_CLASSIFIER( 114 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__ON_DEVICE_CLASSIFIER, 115 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__ON_DEVICE_CLASSIFIER), 116 PRECOMPUTED_CLASSIFIER( 117 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__PRECOMPUTED_CLASSIFIER, 118 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__PRECOMPUTED_CLASSIFIER), 119 PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER( 120 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER, 121 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__CLASSIFIER_TYPE__PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER); 122 123 private final int mLoggingValue; 124 private final int mCompatLoggingValue; 125 ClassifierType(int mLoggingValue, int mCompatLoggingValue)126 ClassifierType(int mLoggingValue, int mCompatLoggingValue) { 127 this.mLoggingValue = mLoggingValue; 128 this.mCompatLoggingValue = mCompatLoggingValue; 129 } 130 131 /** 132 * @return Autogen enum logging value for AdServicesEpochComputationClassifierReported atom 133 * used for T+ logging. 134 */ getLoggingValue()135 public int getLoggingValue() { 136 return mLoggingValue; 137 } 138 139 /** 140 * @return Autogen enum logging value for AdServicesEpochComputationClassifierReported atom 141 * used for R+ logging. 142 */ getCompatLoggingValue()143 public int getCompatLoggingValue() { 144 return mCompatLoggingValue; 145 } 146 } 147 148 /** On Device classifier status. */ 149 public enum OnDeviceClassifierStatus { 150 ON_DEVICE_CLASSIFIER_STATUS_UNSPECIFIED( 151 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_UNSPECIFIED, 152 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_UNSPECIFIED), 153 ON_DEVICE_CLASSIFIER_STATUS_NOT_INVOKED( 154 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_NOT_INVOKED, 155 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_NOT_INVOKED), 156 ON_DEVICE_CLASSIFIER_STATUS_SUCCESS( 157 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_SUCCESS, 158 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_SUCCESS), 159 ON_DEVICE_CLASSIFIER_STATUS_FAILURE( 160 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_FAILURE, 161 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__ON_DEVICE_CLASSIFIER_STATUS__ON_DEVICE_CLASSIFIER_STATUS_FAILURE); 162 163 private final int mLoggingValue; 164 private final int mCompatLoggingValue; 165 OnDeviceClassifierStatus(int mLoggingValue, int mCompatLoggingValue)166 OnDeviceClassifierStatus(int mLoggingValue, int mCompatLoggingValue) { 167 this.mLoggingValue = mLoggingValue; 168 this.mCompatLoggingValue = mCompatLoggingValue; 169 } 170 171 /** 172 * @return Autogen enum logging value for AdServicesEpochComputationClassifierReported atom 173 * used for T+ logging. 174 */ getLoggingValue()175 public int getLoggingValue() { 176 return mLoggingValue; 177 } 178 179 /** 180 * @return Autogen enum logging value for AdServicesEpochComputationClassifierReported atom 181 * used for R+ logging. 182 */ getCompatLoggingValue()183 public int getCompatLoggingValue() { 184 return mCompatLoggingValue; 185 } 186 } 187 188 /** Precomputed classifier status. */ 189 public enum PrecomputedClassifierStatus { 190 PRECOMPUTED_CLASSIFIER_STATUS_UNSPECIFIED( 191 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_UNSPECIFIED, 192 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_UNSPECIFIED), 193 PRECOMPUTED_CLASSIFIER_STATUS_NOT_INVOKED( 194 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_NOT_INVOKED, 195 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_NOT_INVOKED), 196 PRECOMPUTED_CLASSIFIER_STATUS_SUCCESS( 197 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_SUCCESS, 198 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_SUCCESS), 199 PRECOMPUTED_CLASSIFIER_STATUS_FAILURE( 200 AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_FAILURE, 201 AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED__PRECOMPUTED_CLASSIFIER_STATUS__PRECOMPUTED_CLASSIFIER_STATUS_FAILURE); 202 203 private final int mLoggingValue; 204 private final int mCompatLoggingValue; 205 PrecomputedClassifierStatus(int mLoggingValue, int mCompatLoggingValue)206 PrecomputedClassifierStatus(int mLoggingValue, int mCompatLoggingValue) { 207 this.mLoggingValue = mLoggingValue; 208 this.mCompatLoggingValue = mCompatLoggingValue; 209 } 210 211 /** 212 * @return Autogen enum logging value for AdServicesEpochComputationClassifierReported atom 213 * used for T+ logging. 214 */ getLoggingValue()215 public int getLoggingValue() { 216 return mLoggingValue; 217 } 218 219 /** 220 * @return Autogen enum logging value for AdServicesEpochComputationClassifierReported atom 221 * used for R+ logging. 222 */ getCompatLoggingValue()223 public int getCompatLoggingValue() { 224 return mCompatLoggingValue; 225 } 226 } 227 } 228