• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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