diff options
Diffstat (limited to 'adservices/tests/unittest/service-core/src/com/android/adservices/service/PhFlagsTest.java')
-rw-r--r-- | adservices/tests/unittest/service-core/src/com/android/adservices/service/PhFlagsTest.java | 375 |
1 files changed, 371 insertions, 4 deletions
diff --git a/adservices/tests/unittest/service-core/src/com/android/adservices/service/PhFlagsTest.java b/adservices/tests/unittest/service-core/src/com/android/adservices/service/PhFlagsTest.java index 5fc24c523a..e9351fac78 100644 --- a/adservices/tests/unittest/service-core/src/com/android/adservices/service/PhFlagsTest.java +++ b/adservices/tests/unittest/service-core/src/com/android/adservices/service/PhFlagsTest.java @@ -19,8 +19,10 @@ package com.android.adservices.service; import static com.android.adservices.service.Flags.ADID_KILL_SWITCH; import static com.android.adservices.service.Flags.ADSERVICES_ENABLED; import static com.android.adservices.service.Flags.APPSETID_KILL_SWITCH; +import static com.android.adservices.service.Flags.ASYNC_REGISTRATION_JOB_QUEUE_INTERVAL_MS; import static com.android.adservices.service.Flags.CLASSIFIER_DESCRIPTION_MAX_LENGTH; import static com.android.adservices.service.Flags.CLASSIFIER_DESCRIPTION_MAX_WORDS; +import static com.android.adservices.service.Flags.CLASSIFIER_FORCE_USE_BUNDLED_FILES; import static com.android.adservices.service.Flags.CLASSIFIER_NUMBER_OF_TOP_LABELS; import static com.android.adservices.service.Flags.CLASSIFIER_THRESHOLD; import static com.android.adservices.service.Flags.DEFAULT_CLASSIFIER_TYPE; @@ -30,14 +32,21 @@ import static com.android.adservices.service.Flags.DISABLE_TOPICS_ENROLLMENT_CHE import static com.android.adservices.service.Flags.DOWNLOADER_CONNECTION_TIMEOUT_MS; import static com.android.adservices.service.Flags.DOWNLOADER_MAX_DOWNLOAD_THREADS; import static com.android.adservices.service.Flags.DOWNLOADER_READ_TIMEOUT_MS; +import static com.android.adservices.service.Flags.ENABLE_DATABASE_SCHEMA_VERSION_3; +import static com.android.adservices.service.Flags.ENABLE_TOPIC_CONTRIBUTORS_CHECK; import static com.android.adservices.service.Flags.ENFORCE_FOREGROUND_STATUS_FLEDGE_CUSTOM_AUDIENCE; import static com.android.adservices.service.Flags.ENFORCE_FOREGROUND_STATUS_FLEDGE_OVERRIDES; import static com.android.adservices.service.Flags.ENFORCE_FOREGROUND_STATUS_FLEDGE_REPORT_IMPRESSION; import static com.android.adservices.service.Flags.ENFORCE_FOREGROUND_STATUS_FLEDGE_RUN_AD_SELECTION; import static com.android.adservices.service.Flags.ENFORCE_FOREGROUND_STATUS_TOPICS; import static com.android.adservices.service.Flags.ENFORCE_ISOLATE_MAX_HEAP_SIZE; +import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_BUYER_MS; import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_CA_MS; import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_CONCURRENT_BIDDING_COUNT; +import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_EXPIRATION_WINDOW_S; +import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_OFF_DEVICE_ENABLED; +import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_OFF_DEVICE_OVERALL_TIMEOUT_MS; +import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_OFF_DEVICE_REQUEST_COMPRESSION_ENABLED; import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_OVERALL_TIMEOUT_MS; import static com.android.adservices.service.Flags.FLEDGE_AD_SELECTION_SCORING_TIMEOUT_MS; import static com.android.adservices.service.Flags.FLEDGE_BACKGROUND_FETCH_ELIGIBLE_UPDATE_BASE_INTERVAL_S; @@ -96,6 +105,7 @@ import static com.android.adservices.service.Flags.MEASUREMENT_JOB_AGGREGATE_FAL import static com.android.adservices.service.Flags.MEASUREMENT_JOB_AGGREGATE_REPORTING_KILL_SWITCH; import static com.android.adservices.service.Flags.MEASUREMENT_JOB_ATTRIBUTION_KILL_SWITCH; import static com.android.adservices.service.Flags.MEASUREMENT_JOB_DELETE_EXPIRED_KILL_SWITCH; +import static com.android.adservices.service.Flags.MEASUREMENT_JOB_DELETE_UNINSTALLED_KILL_SWITCH; import static com.android.adservices.service.Flags.MEASUREMENT_JOB_EVENT_FALLBACK_REPORTING_KILL_SWITCH; import static com.android.adservices.service.Flags.MEASUREMENT_JOB_EVENT_REPORTING_KILL_SWITCH; import static com.android.adservices.service.Flags.MEASUREMENT_KILL_SWITCH; @@ -105,6 +115,7 @@ import static com.android.adservices.service.Flags.MEASUREMENT_NETWORK_READ_TIME import static com.android.adservices.service.Flags.MEASUREMENT_RECEIVER_DELETE_PACKAGES_KILL_SWITCH; import static com.android.adservices.service.Flags.MEASUREMENT_RECEIVER_INSTALL_ATTRIBUTION_KILL_SWITCH; import static com.android.adservices.service.Flags.MEASUREMENT_REGISTRATION_INPUT_EVENT_VALID_WINDOW_MS; +import static com.android.adservices.service.Flags.MEASUREMENT_REGISTRATION_JOB_QUEUE_KILL_SWITCH; import static com.android.adservices.service.Flags.NUMBER_OF_EPOCHS_TO_KEEP_IN_HISTORY; import static com.android.adservices.service.Flags.PPAPI_APP_ALLOW_LIST; import static com.android.adservices.service.Flags.PPAPI_APP_SIGNATURE_ALLOW_LIST; @@ -122,6 +133,7 @@ import static com.android.adservices.service.PhFlags.KEY_ADSERVICES_ENABLED; import static com.android.adservices.service.PhFlags.KEY_APPSETID_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_CLASSIFIER_DESCRIPTION_MAX_LENGTH; import static com.android.adservices.service.PhFlags.KEY_CLASSIFIER_DESCRIPTION_MAX_WORDS; +import static com.android.adservices.service.PhFlags.KEY_CLASSIFIER_FORCE_USE_BUNDLED_FILES; import static com.android.adservices.service.PhFlags.KEY_CLASSIFIER_NUMBER_OF_TOP_LABELS; import static com.android.adservices.service.PhFlags.KEY_CLASSIFIER_THRESHOLD; import static com.android.adservices.service.PhFlags.KEY_CLASSIFIER_TYPE; @@ -131,10 +143,18 @@ import static com.android.adservices.service.PhFlags.KEY_DISABLE_TOPICS_ENROLLME import static com.android.adservices.service.PhFlags.KEY_DOWNLOADER_CONNECTION_TIMEOUT_MS; import static com.android.adservices.service.PhFlags.KEY_DOWNLOADER_MAX_DOWNLOAD_THREADS; import static com.android.adservices.service.PhFlags.KEY_DOWNLOADER_READ_TIMEOUT_MS; +import static com.android.adservices.service.PhFlags.KEY_ENABLE_DATABASE_SCHEMA_VERSION_3; +import static com.android.adservices.service.PhFlags.KEY_ENABLE_TOPIC_CONTRIBUTORS_CHECK; import static com.android.adservices.service.PhFlags.KEY_ENFORCE_FOREGROUND_STATUS_TOPICS; import static com.android.adservices.service.PhFlags.KEY_ENFORCE_ISOLATE_MAX_HEAP_SIZE; +import static com.android.adservices.service.PhFlags.KEY_ENROLLMENT_BLOCKLIST_IDS; +import static com.android.adservices.service.PhFlags.KEY_FLEDE_AD_SELECTION_OFF_DEVICE_ENABLED; +import static com.android.adservices.service.PhFlags.KEY_FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_BUYER_MS; import static com.android.adservices.service.PhFlags.KEY_FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_CA_MS; import static com.android.adservices.service.PhFlags.KEY_FLEDGE_AD_SELECTION_CONCURRENT_BIDDING_COUNT; +import static com.android.adservices.service.PhFlags.KEY_FLEDGE_AD_SELECTION_EXPIRATION_WINDOW_S; +import static com.android.adservices.service.PhFlags.KEY_FLEDGE_AD_SELECTION_OFF_DEVICE_OVERALL_TIMEOUT_MS; +import static com.android.adservices.service.PhFlags.KEY_FLEDGE_AD_SELECTION_OFF_DEVICE_REQUEST_COMPRESSION_ENABLED; import static com.android.adservices.service.PhFlags.KEY_FLEDGE_AD_SELECTION_OVERALL_TIMEOUT_MS; import static com.android.adservices.service.PhFlags.KEY_FLEDGE_AD_SELECTION_SCORING_TIMEOUT_MS; import static com.android.adservices.service.PhFlags.KEY_FLEDGE_BACKGROUND_FETCH_ELIGIBLE_UPDATE_BASE_INTERVAL_S; @@ -194,6 +214,7 @@ import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_JOB_AGGREGA import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_JOB_AGGREGATE_REPORTING_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_JOB_ATTRIBUTION_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_JOB_DELETE_EXPIRED_KILL_SWITCH; +import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_JOB_DELETE_UNINSTALLED_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_JOB_EVENT_FALLBACK_REPORTING_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_JOB_EVENT_REPORTING_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_KILL_SWITCH; @@ -203,9 +224,11 @@ import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_NETWORK_REA import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_RECEIVER_DELETE_PACKAGES_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_RECEIVER_INSTALL_ATTRIBUTION_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_REGISTRATION_INPUT_EVENT_VALID_WINDOW_MS; +import static com.android.adservices.service.PhFlags.KEY_MEASUREMENT_REGISTRATION_JOB_QUEUE_KILL_SWITCH; import static com.android.adservices.service.PhFlags.KEY_NUMBER_OF_EPOCHS_TO_KEEP_IN_HISTORY; import static com.android.adservices.service.PhFlags.KEY_PPAPI_APP_ALLOW_LIST; import static com.android.adservices.service.PhFlags.KEY_PPAPI_APP_SIGNATURE_ALLOW_LIST; +import static com.android.adservices.service.PhFlags.KEY_REGISTRATION_JOB_QUEUE_INTERVAL_MS; import static com.android.adservices.service.PhFlags.KEY_SDK_REQUEST_PERMITS_PER_SECOND; import static com.android.adservices.service.PhFlags.KEY_TOPICS_EPOCH_JOB_FLEX_MS; import static com.android.adservices.service.PhFlags.KEY_TOPICS_EPOCH_JOB_PERIOD_MS; @@ -508,6 +531,23 @@ public class PhFlagsTest { } @Test + public void testGetClassifierForceUseBundledFiles() { + // Without any overriding, the value is the hard coded constant. + assertThat(FlagsFactory.getFlags().getClassifierForceUseBundledFiles()) + .isEqualTo(CLASSIFIER_FORCE_USE_BUNDLED_FILES); + + boolean phOverridingValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_CLASSIFIER_FORCE_USE_BUNDLED_FILES, + Boolean.toString(phOverridingValue), + /* makeDefault */ false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getClassifierForceUseBundledFiles()).isEqualTo(phOverridingValue); + } + + @Test public void testGetMaintenanceJobPeriodMs() { // Without any overriding, the value is the hard coded constant. assertThat(FlagsFactory.getFlags().getMaintenanceJobPeriodMs()) @@ -620,6 +660,23 @@ public class PhFlagsTest { } @Test + public void testGetAdSelectionBiddingTimeoutPerBuyerMs() { + // without any overriding, the value is hard coded constant + assertThat(FlagsFactory.getFlags().getAdSelectionBiddingTimeoutPerBuyerMs()) + .isEqualTo(FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_BUYER_MS); + + final long phOverrideValue = 5000; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_BUYER_MS, + Long.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getAdSelectionBiddingTimeoutPerBuyerMs()).isEqualTo(phOverrideValue); + } + + @Test public void testGetAdSelectionScoringTimeoutMs() { // without any overriding, the value is hard coded constant assertThat(FlagsFactory.getFlags().getAdSelectionScoringTimeoutMs()) @@ -654,6 +711,22 @@ public class PhFlagsTest { } @Test + public void testGetOffDeviceAdSelectionOverallTimeoutMs() { + assertThat(FlagsFactory.getFlags().getAdSelectionOffDeviceOverallTimeoutMs()) + .isEqualTo(FLEDGE_AD_SELECTION_OFF_DEVICE_OVERALL_TIMEOUT_MS); + + final int phOverrideValue = 4; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_FLEDGE_AD_SELECTION_OFF_DEVICE_OVERALL_TIMEOUT_MS, + Integer.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getAdSelectionOffDeviceOverallTimeoutMs()).isEqualTo(phOverrideValue); + } + + @Test public void testGetDownloaderConnectionTimeoutMs() { // without any overriding, the value is hard coded constant assertThat(FlagsFactory.getFlags().getDownloaderConnectionTimeoutMs()) @@ -2226,6 +2299,64 @@ public class PhFlagsTest { } @Test + public void testGetMeasurementJobDeleteUninstalledKillSwitch() { + // without any overriding, the value is hard coded constant + assertThat(FlagsFactory.getFlags().getMeasurementJobDeleteUninstalledKillSwitch()) + .isEqualTo(MEASUREMENT_JOB_DELETE_UNINSTALLED_KILL_SWITCH); + + final boolean phOverrideValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_MEASUREMENT_JOB_DELETE_UNINSTALLED_KILL_SWITCH, + Boolean.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getMeasurementJobDeleteUninstalledKillSwitch()) + .isEqualTo(phOverrideValue); + + Flags flags = FlagsFactory.getFlagsForTest(); + assertThat(flags.getMeasurementJobDeleteUninstalledKillSwitch()) + .isEqualTo(MEASUREMENT_JOB_DELETE_UNINSTALLED_KILL_SWITCH); + } + + @Test + public void testGetMeasurementJobDeleteUninstalledKillSwitch_measurementOverride() { + // without any overriding, the value is hard coded constant + assertThat(FlagsFactory.getFlags().getMeasurementJobDeleteUninstalledKillSwitch()) + .isEqualTo(MEASUREMENT_JOB_DELETE_EXPIRED_KILL_SWITCH); + + final boolean phOverrideValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_MEASUREMENT_KILL_SWITCH, + Boolean.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getMeasurementJobDeleteUninstalledKillSwitch()) + .isEqualTo(phOverrideValue); + } + + @Test + public void testGetMeasurementJobDeleteUninstalledKillSwitch_globalOverride() { + // without any overriding, the value is hard coded constant + assertThat(FlagsFactory.getFlags().getMeasurementJobDeleteUninstalledKillSwitch()) + .isEqualTo(MEASUREMENT_JOB_DELETE_EXPIRED_KILL_SWITCH); + + final boolean phOverrideValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_GLOBAL_KILL_SWITCH, + Boolean.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getMeasurementJobDeleteUninstalledKillSwitch()) + .isEqualTo(phOverrideValue); + } + + @Test public void testGetMeasurementJobEventFallbackReportingKillSwitch() { // without any overriding, the value is hard coded constant assertThat(FlagsFactory.getFlags().getMeasurementJobEventFallbackReportingKillSwitch()) @@ -2455,6 +2586,77 @@ public class PhFlagsTest { } @Test + public void testGetAdIdKillSwitch_globalOverride() { + // test that global killswitch override has no effect on + // AdIdKillswitch. + assertThat(FlagsFactory.getFlags().getAdIdKillSwitch()).isEqualTo(ADID_KILL_SWITCH); + + final boolean phOverrideValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_GLOBAL_KILL_SWITCH, + Boolean.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getAdIdKillSwitch()).isEqualTo(ADID_KILL_SWITCH); + } + + @Test + public void testGetMeasurementRegistrationJobQueueKillSwitch() { + // without any overrides the Registration Job Queue kill switch should be off + assertThat(FlagsFactory.getFlags().getRegistrationJobQueueKillSwitch()) + .isEqualTo(MEASUREMENT_REGISTRATION_JOB_QUEUE_KILL_SWITCH); + + // Now overriding with the value from PH. + final boolean phOverrideValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_MEASUREMENT_REGISTRATION_JOB_QUEUE_KILL_SWITCH, + Boolean.toString(phOverrideValue), + /* makeDefault */ false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getRegistrationJobQueueKillSwitch()).isEqualTo(phOverrideValue); + } + + @Test + public void testGetMeasurementRegistrationJobQueueKillSwitch_measurementOverride() { + // without any overrides the Registration Job Queue kill switch should be off + assertThat(FlagsFactory.getFlags().getRegistrationJobQueueKillSwitch()) + .isEqualTo(MEASUREMENT_REGISTRATION_JOB_QUEUE_KILL_SWITCH); + + // Now overriding with the value from PH. + final boolean phOverrideValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_MEASUREMENT_KILL_SWITCH, + Boolean.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getRegistrationJobQueueKillSwitch()).isEqualTo(phOverrideValue); + } + + @Test + public void testGetMeasurementRegistrationJobQueueKillSwitch_globalOverride() { + // without any overrides the Registration Job Queue kill switch should be off + assertThat(FlagsFactory.getFlags().getRegistrationJobQueueKillSwitch()) + .isEqualTo(MEASUREMENT_REGISTRATION_JOB_QUEUE_KILL_SWITCH); + + // Now overriding with the value from PH. + final boolean phOverrideValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_GLOBAL_KILL_SWITCH, + Boolean.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getRegistrationJobQueueKillSwitch()).isEqualTo(phOverrideValue); + } + + @Test public void testGetAdIdKillSwitch() { // Without any overriding, the value is the hard coded constant. assertThat(FlagsFactory.getFlags().getAdIdKillSwitch()).isEqualTo(ADID_KILL_SWITCH); @@ -2543,8 +2745,25 @@ public class PhFlagsTest { Flags phFlags = FlagsFactory.getFlags(); assertThat(phFlags.getGlobalKillSwitch()).isEqualTo(phOverridingValue); - // Global Killswitch is on and overrides the getAdIdKillswitch. - assertThat(FlagsFactory.getFlags().getAdIdKillSwitch()).isEqualTo(true); + // Global Killswitch is on, but is ignored by the getAdIdKillswitch. + assertThat(FlagsFactory.getFlags().getAdIdKillSwitch()).isEqualTo(false); + } + + @Test + public void testGetAppSetIdKillSwitch_globalOverride() { + // test that global killswitch override has no effect on + // AppSetIdKillswitch. + assertThat(FlagsFactory.getFlags().getAppSetIdKillSwitch()).isEqualTo(APPSETID_KILL_SWITCH); + + final boolean phOverrideValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_GLOBAL_KILL_SWITCH, + Boolean.toString(phOverrideValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getAppSetIdKillSwitch()).isEqualTo(APPSETID_KILL_SWITCH); } @Test @@ -2567,8 +2786,8 @@ public class PhFlagsTest { Flags phFlags = FlagsFactory.getFlags(); assertThat(phFlags.getGlobalKillSwitch()).isEqualTo(phOverridingValue); - // Global Killswitch is on and overrides the getAppSetIdKillswitch. - assertThat(FlagsFactory.getFlags().getAppSetIdKillSwitch()).isEqualTo(true); + // Global Killswitch is on, but is ignored by getAppSetIdKillswitch. + assertThat(FlagsFactory.getFlags().getAppSetIdKillSwitch()).isEqualTo(false); } @Test @@ -2890,6 +3109,55 @@ public class PhFlagsTest { } @Test + public void testGetOffDeviceAdSelectionEnabled() { + assertThat(FlagsFactory.getFlags().getAdSelectionOffDeviceEnabled()) + .isEqualTo(FLEDGE_AD_SELECTION_OFF_DEVICE_ENABLED); + + final boolean phOverridingValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_FLEDE_AD_SELECTION_OFF_DEVICE_ENABLED, + Boolean.toString(phOverridingValue), + /* makeDefault */ false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getAdSelectionOffDeviceEnabled()).isEqualTo(phOverridingValue); + } + + @Test + public void testgetFledgeAdselectionExpirationWindow() { + // Without any overriding, the value is the hard coded constant. + assertThat(FlagsFactory.getFlags().getAdSelectionExpirationWindowS()) + .isEqualTo(FLEDGE_AD_SELECTION_EXPIRATION_WINDOW_S); + + final int phOverridingValue = 4; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_FLEDGE_AD_SELECTION_EXPIRATION_WINDOW_S, + Integer.toString(phOverridingValue), + /* makeDefault */ false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getAdSelectionExpirationWindowS()).isEqualTo(phOverridingValue); + } + + @Test + public void testGetRegistrationJobQueueIntervalMs() { + assertThat(FlagsFactory.getFlags().getRegistrationJobQueueIntervalMs()) + .isEqualTo(ASYNC_REGISTRATION_JOB_QUEUE_INTERVAL_MS); + + final long phOverridingValue = 1L; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_REGISTRATION_JOB_QUEUE_INTERVAL_MS, + Long.toString(phOverridingValue), + /* makeDefault */ false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getRegistrationJobQueueIntervalMs()).isEqualTo(phOverridingValue); + } + + @Test public void testDump() throws FileNotFoundException { // Trigger the dump to verify no crash PrintWriter printWriter = @@ -2926,5 +3194,104 @@ public class PhFlagsTest { assertThat(phFlags.getMaxResponseBasedRegistrationPayloadSizeBytes()) .isEqualTo(phOverrideValue); } + + @Test + public void testGetOffDeviceAdSelectionRequestCompressionEnabled() { + assertThat(FlagsFactory.getFlags().getAdSelectionOffDeviceRequestCompressionEnabled()) + .isEqualTo(FLEDGE_AD_SELECTION_OFF_DEVICE_REQUEST_COMPRESSION_ENABLED); + + final boolean phOverridingValue = false; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_FLEDGE_AD_SELECTION_OFF_DEVICE_REQUEST_COMPRESSION_ENABLED, + Boolean.toString(phOverridingValue), + false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getAdSelectionOffDeviceRequestCompressionEnabled()) + .isEqualTo(phOverridingValue); + } + + @Test + public void testGetEnableTopicContributorsCheck() { + assertThat(FlagsFactory.getFlags().getEnableTopicContributorsCheck()) + .isEqualTo(ENABLE_TOPIC_CONTRIBUTORS_CHECK); + + final boolean phOverridingValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_ENABLE_TOPIC_CONTRIBUTORS_CHECK, + Boolean.toString(phOverridingValue), + /* makeDefault */ false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getEnableTopicContributorsCheck()).isEqualTo(phOverridingValue); + } + + @Test + public void testGetEnableDatabaseSchemaVersion3() { + assertThat(FlagsFactory.getFlags().getEnableDatabaseSchemaVersion3()) + .isEqualTo(ENABLE_DATABASE_SCHEMA_VERSION_3); + + final boolean phOverridingValue = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_ENABLE_DATABASE_SCHEMA_VERSION_3, + Boolean.toString(phOverridingValue), + /* makeDefault */ false); + + Flags phFlags = FlagsFactory.getFlags(); + assertThat(phFlags.getEnableDatabaseSchemaVersion3()).isEqualTo(phOverridingValue); + } + + @Test + public void testEnrollmentBlocklist_singleEnrollment() { + Flags phFlags = FlagsFactory.getFlags(); + + String blocklistedEnrollmentId = "enrollmentId1"; + setEnrollmentBlocklist(blocklistedEnrollmentId); + + assertThat(phFlags.getEnrollmentBlocklist()).contains(blocklistedEnrollmentId); + } + + @Test + public void testEnrollmentBlocklist_multipleEnrollments() { + Flags phFlags = FlagsFactory.getFlags(); + + String enrollmentId1 = "enrollmentId1"; + String enrollmentId2 = "enrollmentId2"; + String enrollmentId3 = "enrollmentId3"; + + String blocklistedEnrollmentId = + String.format("%s,%s,%s", enrollmentId1, enrollmentId2, enrollmentId3); + setEnrollmentBlocklist(blocklistedEnrollmentId); + + assertThat(phFlags.getEnrollmentBlocklist()) + .containsExactly(enrollmentId1, enrollmentId2, enrollmentId3); + } + + @Test + public void testEnrollmentBlocklist_malformedList() { + Flags phFlags = FlagsFactory.getFlags(); + + String enrollmentId1 = "enrollmentId1"; + String enrollmentId2 = "enrollmentId2"; + String enrollmentId3 = "enrollmentId3"; + + String blocklistedEnrollmentId = + String.format("%s%s%s", enrollmentId1, enrollmentId2, enrollmentId3); + setEnrollmentBlocklist(blocklistedEnrollmentId); + + assertThat(phFlags.getEnrollmentBlocklist()) + .containsNoneOf(enrollmentId1, enrollmentId2, enrollmentId3); + } + + private void setEnrollmentBlocklist(String blocklistFlag) { + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_ADSERVICES, + KEY_ENROLLMENT_BLOCKLIST_IDS, + blocklistFlag, + false); + } // CHECKSTYLE:ON IndentationCheck } |