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 package com.android.adservices.service.stats; 17 18 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__FAILURE; 19 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__SUCCESS_WITH_SHARED_PREF_NOT_UPDATED; 20 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__SUCCESS_WITH_SHARED_PREF_UPDATED; 21 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__UNSPECIFIED_MIGRATION_STATUS; 22 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__ADEXT_SERVICE_TO_APPSEARCH; 23 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__ADEXT_SERVICE_TO_SYSTEM_SERVICE; 24 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__APPSEARCH_TO_SYSTEM_SERVICE; 25 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__PPAPI_TO_SYSTEM_SERVICE; 26 import static com.android.adservices.service.stats.AdServicesStatsLog.AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__UNSPECIFIED_MIGRATION_TYPE; 27 28 import com.google.auto.value.AutoValue; 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 * @return type of consent migration 38 */ getMigrationType()39 public abstract MigrationType getMigrationType(); 40 /** 41 * @return status of consent migration 42 */ getMigrationStatus()43 public abstract MigrationStatus getMigrationStatus(); 44 /** 45 * @return opt in/out value of measuremnt app 46 */ getMsmtConsent()47 public abstract boolean getMsmtConsent(); 48 /** 49 * @return opt in/out value of topics app 50 */ getTopicsConsent()51 public abstract boolean getTopicsConsent(); 52 /** 53 * @return opt in/out value of fledge app 54 */ getFledgeConsent()55 public abstract boolean getFledgeConsent(); 56 /*** 57 * 58 * @return region of OTA 59 */ getRegion()60 public abstract int getRegion(); 61 /** 62 * @return generic builder. 63 */ builder()64 public static ConsentMigrationStats.Builder builder() { 65 return new AutoValue_ConsentMigrationStats.Builder(); 66 } 67 68 public enum MigrationType { 69 UNSPECIFIED_MIGRATION_TYPE( 70 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__UNSPECIFIED_MIGRATION_TYPE), 71 // Migrating consent from PPAPI to system service 72 PPAPI_TO_SYSTEM_SERVICE( 73 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__PPAPI_TO_SYSTEM_SERVICE), 74 // Migrating consent from App Search to system service 75 APPSEARCH_TO_SYSTEM_SERVICE( 76 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__APPSEARCH_TO_SYSTEM_SERVICE), 77 // Migrating consent from AdServicesExtDataStorageService to System Server 78 ADEXT_SERVICE_TO_SYSTEM_SERVICE( 79 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__ADEXT_SERVICE_TO_SYSTEM_SERVICE), 80 // Migrating consent from AdServicesExtDataStorageService to App Search 81 ADEXT_SERVICE_TO_APPSEARCH( 82 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_TYPE__ADEXT_SERVICE_TO_APPSEARCH); 83 84 private final int mMigrationType; 85 MigrationType(int migrationType)86 MigrationType(int migrationType) { 87 this.mMigrationType = migrationType; 88 } 89 /** 90 * @return Autogen enum logging value for migrationType in AdServicesConsentMigrated atom 91 */ getMigrationTypeValue()92 public int getMigrationTypeValue() { 93 return mMigrationType; 94 } 95 } 96 // Logs the Migration status 97 public enum MigrationStatus { 98 UNSPECIFIED_MIGRATION_STATUS( 99 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__UNSPECIFIED_MIGRATION_STATUS), 100 // Consent migration unsuccessful 101 FAILURE(AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__FAILURE), 102 // Consent migration successful with shared prefs updated 103 SUCCESS_WITH_SHARED_PREF_UPDATED( 104 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__SUCCESS_WITH_SHARED_PREF_UPDATED), 105 // Consent migration successful with shared prefs not updated 106 SUCCESS_WITH_SHARED_PREF_NOT_UPDATED( 107 AD_SERVICES_CONSENT_MIGRATED__MIGRATION_STATUS__SUCCESS_WITH_SHARED_PREF_NOT_UPDATED); 108 private final int mMigrationStatus; 109 MigrationStatus(int migrationStatus)110 MigrationStatus(int migrationStatus) { 111 this.mMigrationStatus = migrationStatus; 112 } 113 /** 114 * @return Autogen enum logging value for migrationStatus in AdServicesConsentMigrated atom 115 */ getMigrationStatusValue()116 public int getMigrationStatusValue() { 117 return mMigrationStatus; 118 } 119 } 120 /** Builder class for {@link ConsentMigrationStats}. */ 121 @AutoValue.Builder 122 public abstract static class Builder { 123 /** Set type of consent migration */ setMigrationType(MigrationType value)124 public abstract Builder setMigrationType(MigrationType value); 125 /** Set status of consent migration */ setMigrationStatus(MigrationStatus value)126 public abstract Builder setMigrationStatus(MigrationStatus value); 127 /** Set opt in/out value of measurement app */ setMsmtConsent(boolean value)128 public abstract Builder setMsmtConsent(boolean value); 129 /** Set opt in/out value of topics app */ setTopicsConsent(boolean value)130 public abstract Builder setTopicsConsent(boolean value); 131 /** Set opt in/out value of fledge app */ setFledgeConsent(boolean value)132 public abstract Builder setFledgeConsent(boolean value); 133 /** Set region of OTA */ setRegion(int value)134 public abstract Builder setRegion(int value); 135 /** build for {@link ConsentMigrationStats}. */ build()136 public abstract ConsentMigrationStats build(); 137 } 138 } 139