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