• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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_CONSENT_MIGRATED__MIGRATION_STATUS__FAILURE;
20 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__SUCCESS_WITH_SHARED_PREF_NOT_UPDATED;
21 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__SUCCESS_WITH_SHARED_PREF_UPDATED;
22 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__UNSPECIFIED_MIGRATION_STATUS;
23 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__APPSEARCH_TO_SYSTEM_SERVICE;
24 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__PPAPI_TO_SYSTEM_SERVICE;
25 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__UNSPECIFIED_MIGRATION_TYPE;
26 
27 import com.google.auto.value.AutoValue;
28 
29 /***
30  * Class for AdServicesConsentMigrationEvent atom
31  *
32  *  Please see go/rb-consent-migration-metrics for more details.
33  */
34 @AutoValue
35 public abstract class ConsentMigrationStats {
36 
37     /**
38      * @return type of consent migration
39      */
getMigrationType()40     public abstract MigrationType getMigrationType();
41 
42     /**
43      * @return status of consent migration
44      */
getMigrationStatus()45     public abstract MigrationStatus getMigrationStatus();
46 
47     /**
48      * @return opt in/out value of measuremnt app
49      */
getMsmtConsent()50     public abstract boolean getMsmtConsent();
51 
52     /**
53      * @return opt in/out value of topics app
54      */
getTopicsConsent()55     public abstract boolean getTopicsConsent();
56 
57     /**
58      * @return opt in/out value of fledge app
59      */
getFledgeConsent()60     public abstract boolean getFledgeConsent();
61 
62     /**
63      * @return opt in/out value in beta for all apps
64      */
getDefaultConsent()65     public abstract boolean getDefaultConsent();
66 
67     /***
68      *
69      * @return region of OTA
70      */
getRegion()71     public abstract int getRegion();
72 
73     /**
74      * @return generic builder.
75      */
builder()76     public static ConsentMigrationStats.Builder builder() {
77         return new AutoValue_ConsentMigrationStats.Builder();
78     }
79 
80     public enum MigrationType {
81         UNSPECIFIED_MIGRATION_TYPE(
82                 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__UNSPECIFIED_MIGRATION_TYPE),
83 
84         // Migrating consent from PPAPI to system service
85         PPAPI_TO_SYSTEM_SERVICE(
86                 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__PPAPI_TO_SYSTEM_SERVICE),
87 
88         // Migrating consent from App Search to system service
89         APPSEARCH_TO_SYSTEM_SERVICE(
90                 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__APPSEARCH_TO_SYSTEM_SERVICE);
91 
92         private final int mMigrationType;
93 
MigrationType(int migrationType)94         MigrationType(int migrationType) {
95             this.mMigrationType = migrationType;
96         }
97 
98         /**
99          * @return Autogen enum logging value for migrationType in AdServicesConsentMigrated atom
100          */
getMigrationTypeValue()101         public int getMigrationTypeValue() {
102             return mMigrationType;
103         }
104     }
105 
106     // Logs the Migration status
107     public enum MigrationStatus {
108         UNSPECIFIED_MIGRATION_STATUS(
109                 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__UNSPECIFIED_MIGRATION_STATUS),
110 
111         // Consent migration unsuccessful
112         FAILURE(AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__FAILURE),
113 
114         // Consent migration successful with shared prefs updated
115         SUCCESS_WITH_SHARED_PREF_UPDATED(
116                 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__SUCCESS_WITH_SHARED_PREF_UPDATED),
117 
118         // Consent migration successful with shared prefs not updated
119         SUCCESS_WITH_SHARED_PREF_NOT_UPDATED(
120                 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__SUCCESS_WITH_SHARED_PREF_NOT_UPDATED);
121 
122         private final int mMigrationStatus;
123 
MigrationStatus(int migrationStatus)124         MigrationStatus(int migrationStatus) {
125             this.mMigrationStatus = migrationStatus;
126         }
127 
128         /**
129          * @return Autogen enum logging value for migrationStatus in AdServicesConsentMigrated atom
130          */
getMigrationStatusValue()131         public int getMigrationStatusValue() {
132             return mMigrationStatus;
133         }
134     }
135 
136     /** Builder class for {@link ConsentMigrationStats}. */
137     @AutoValue.Builder
138     public abstract static class Builder {
139         /** Set type of consent migration */
setMigrationType(MigrationType value)140         public abstract Builder setMigrationType(MigrationType value);
141 
142         /** Set status of consent migration */
setMigrationStatus(MigrationStatus value)143         public abstract Builder setMigrationStatus(MigrationStatus value);
144 
145         /** Set opt in/out value of measurement app */
setMsmtConsent(boolean value)146         public abstract Builder setMsmtConsent(boolean value);
147 
148         /** Set opt in/out value of topics app */
setTopicsConsent(boolean value)149         public abstract Builder setTopicsConsent(boolean value);
150 
151         /** Set opt in/out value of fledge app */
setFledgeConsent(boolean value)152         public abstract Builder setFledgeConsent(boolean value);
153 
154         /** Set opt in/out value in beta for all apps */
setDefaultConsent(boolean value)155         public abstract Builder setDefaultConsent(boolean value);
156 
157         /** Set region of OTA */
setRegion(int value)158         public abstract Builder setRegion(int value);
159 
160         /** build for {@link ConsentMigrationStats}. */
build()161         public abstract ConsentMigrationStats build();
162     }
163 }
164