| /* |
| * Copyright (C) 2022 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.adservices.service; |
| |
| import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE; |
| import static android.os.Build.VERSION.SDK_INT; |
| |
| import android.annotation.IntDef; |
| import android.annotation.NonNull; |
| import android.app.job.JobInfo; |
| import android.os.Build; |
| |
| import androidx.annotation.Nullable; |
| |
| import com.android.adservices.cobalt.CobaltConstants; |
| import com.android.modules.utils.build.SdkLevel; |
| |
| import com.google.common.collect.ImmutableList; |
| |
| import java.io.PrintWriter; |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.RetentionPolicy; |
| import java.util.HashMap; |
| import java.util.Map; |
| import java.util.concurrent.TimeUnit; |
| |
| /** |
| * AdServices Feature Flags interface. This Flags interface hold the default values of Ad Services |
| * Flags. The default values in this class must match with the default values in PH since we will |
| * migrate to Flag Codegen in the future. With that migration, the Flags.java file will be generated |
| * from the GCL. |
| */ |
| public interface Flags { |
| /** Topics Epoch Job Period. */ |
| long TOPICS_EPOCH_JOB_PERIOD_MS = 7 * 86_400_000; // 7 days. |
| |
| /** Returns the max time period (in millis) between each epoch computation job run. */ |
| default long getTopicsEpochJobPeriodMs() { |
| return TOPICS_EPOCH_JOB_PERIOD_MS; |
| } |
| |
| /** Topics Epoch Job Flex. Note the minimum value system allows is +8h24m0s0ms */ |
| long TOPICS_EPOCH_JOB_FLEX_MS = 9 * 60 * 60 * 1000; // 5 hours. |
| |
| /** Returns flex for the Epoch computation job in Millisecond. */ |
| default long getTopicsEpochJobFlexMs() { |
| return TOPICS_EPOCH_JOB_FLEX_MS; |
| } |
| |
| /* The percentage that we will return a random topic from the Taxonomy. */ |
| int TOPICS_PERCENTAGE_FOR_RANDOM_TOPIC = 5; |
| |
| /** Returns the percentage that we will return a random topic from the Taxonomy. */ |
| default int getTopicsPercentageForRandomTopic() { |
| return TOPICS_PERCENTAGE_FOR_RANDOM_TOPIC; |
| } |
| |
| /** The number of top Topics for each epoch. */ |
| int TOPICS_NUMBER_OF_TOP_TOPICS = 5; |
| |
| /** Returns the number of top topics. */ |
| default int getTopicsNumberOfTopTopics() { |
| return TOPICS_NUMBER_OF_TOP_TOPICS; |
| } |
| |
| /** The number of random Topics for each epoch. */ |
| int TOPICS_NUMBER_OF_RANDOM_TOPICS = 1; |
| |
| /** Returns the number of top topics. */ |
| default int getTopicsNumberOfRandomTopics() { |
| return TOPICS_NUMBER_OF_RANDOM_TOPICS; |
| } |
| |
| /** Global blocked Topics. Default value is empty list. */ |
| ImmutableList<Integer> TOPICS_GLOBAL_BLOCKED_TOPIC_IDS = ImmutableList.of(); |
| |
| /** Returns a list of global blocked topics. */ |
| default ImmutableList<Integer> getGlobalBlockedTopicIds() { |
| return TOPICS_GLOBAL_BLOCKED_TOPIC_IDS; |
| } |
| |
| /** How many epochs to look back when deciding if a caller has observed a topic before. */ |
| int TOPICS_NUMBER_OF_LOOK_BACK_EPOCHS = 3; |
| |
| /** Flag to disable direct app calls for Topics API. go/app-calls-for-topics-api */ |
| boolean TOPICS_DISABLE_DIRECT_APP_CALLS = false; |
| |
| /** Returns the flag to disable direct app calls for Topics API. */ |
| default boolean getTopicsDisableDirectAppCalls() { |
| return TOPICS_DISABLE_DIRECT_APP_CALLS; |
| } |
| |
| /** |
| * Returns the number of epochs to look back when deciding if a caller has observed a topic |
| * before. |
| */ |
| default int getTopicsNumberOfLookBackEpochs() { |
| return TOPICS_NUMBER_OF_LOOK_BACK_EPOCHS; |
| } |
| |
| /** Privacy budget for logging topic ID distributions with randomized response. */ |
| float TOPICS_PRIVACY_BUDGET_FOR_TOPIC_ID_DISTRIBUTION = 5f; |
| |
| /** Returns the privacy budget for logging topic ID distributions with randomized response. */ |
| default float getTopicsPrivacyBudgetForTopicIdDistribution() { |
| return TOPICS_PRIVACY_BUDGET_FOR_TOPIC_ID_DISTRIBUTION; |
| } |
| |
| /** Available types of classifier behaviours for the Topics API. */ |
| @IntDef( |
| flag = true, |
| value = { |
| UNKNOWN_CLASSIFIER, |
| ON_DEVICE_CLASSIFIER, |
| PRECOMPUTED_CLASSIFIER, |
| PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER |
| }) |
| @Retention(RetentionPolicy.SOURCE) |
| @interface ClassifierType {} |
| |
| /** Unknown classifier option. */ |
| int UNKNOWN_CLASSIFIER = 0; |
| |
| /** Only on-device classification. */ |
| int ON_DEVICE_CLASSIFIER = 1; |
| |
| /** Only Precomputed classification. */ |
| int PRECOMPUTED_CLASSIFIER = 2; |
| |
| /** Precomputed classification values are preferred over on-device classification values. */ |
| int PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER = 3; |
| |
| /* Type of classifier intended to be used by default. */ |
| @ClassifierType int DEFAULT_CLASSIFIER_TYPE = PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER; |
| |
| /** Returns the type of classifier currently used by Topics. */ |
| @ClassifierType |
| default int getClassifierType() { |
| return DEFAULT_CLASSIFIER_TYPE; |
| } |
| |
| /** Number of top labels allowed for every app. */ |
| int CLASSIFIER_NUMBER_OF_TOP_LABELS = 3; |
| |
| /** Returns the number of top labels allowed for every app after the classification process. */ |
| default int getClassifierNumberOfTopLabels() { |
| return CLASSIFIER_NUMBER_OF_TOP_LABELS; |
| } |
| |
| /** Threshold value for classification values. */ |
| float CLASSIFIER_THRESHOLD = 0.2f; |
| |
| /** Returns the threshold value for classification values. */ |
| default float getClassifierThreshold() { |
| return CLASSIFIER_THRESHOLD; |
| } |
| |
| /** Number of max words allowed in the description for topics classifier. */ |
| int CLASSIFIER_DESCRIPTION_MAX_WORDS = 500; |
| |
| /** Returns the number of max words allowed in the description for topics classifier. */ |
| default int getClassifierDescriptionMaxWords() { |
| return CLASSIFIER_DESCRIPTION_MAX_WORDS; |
| } |
| |
| /** Number of max characters allowed in the description for topics classifier. */ |
| int CLASSIFIER_DESCRIPTION_MAX_LENGTH = 2500; |
| |
| /** Returns the number of max characters allowed in the description for topics classifier. */ |
| default int getClassifierDescriptionMaxLength() { |
| return CLASSIFIER_DESCRIPTION_MAX_LENGTH; |
| } |
| |
| // TODO(b/243829477): Remove this flag when flow of pushing models is refined. |
| /** |
| * Whether classifier should force using bundled files. This flag is mainly used in CTS tests to |
| * force using precomputed_app_list to avoid model mismatch due to update. Default value is |
| * false which means to use downloaded files. |
| */ |
| boolean CLASSIFIER_FORCE_USE_BUNDLED_FILES = false; |
| |
| /** Returns whether to force using bundled files */ |
| default boolean getClassifierForceUseBundledFiles() { |
| return CLASSIFIER_FORCE_USE_BUNDLED_FILES; |
| } |
| |
| /* The default period for the Maintenance job. */ |
| long MAINTENANCE_JOB_PERIOD_MS = 86_400_000; // 1 day. |
| |
| /** Returns the max time period (in millis) between each idle maintenance job run. */ |
| default long getMaintenanceJobPeriodMs() { |
| return MAINTENANCE_JOB_PERIOD_MS; |
| } |
| |
| /* The default flex for Maintenance Job. */ |
| long MAINTENANCE_JOB_FLEX_MS = 3 * 60 * 60 * 1000; // 3 hours. |
| |
| /** Returns flex for the Daily Maintenance job in Millisecond. */ |
| default long getMaintenanceJobFlexMs() { |
| return MAINTENANCE_JOB_FLEX_MS; |
| } |
| |
| default int getEncryptionKeyNetworkConnectTimeoutMs() { |
| return ENCRYPTION_KEY_NETWORK_CONNECT_TIMEOUT_MS; |
| } |
| |
| int ENCRYPTION_KEY_NETWORK_CONNECT_TIMEOUT_MS = (int) TimeUnit.SECONDS.toMillis(5); |
| |
| default int getEncryptionKeyNetworkReadTimeoutMs() { |
| return ENCRYPTION_KEY_NETWORK_READ_TIMEOUT_MS; |
| } |
| |
| int ENCRYPTION_KEY_NETWORK_READ_TIMEOUT_MS = (int) TimeUnit.SECONDS.toMillis(30); |
| |
| /* The default min time period (in millis) between each event main reporting job run. */ |
| long MEASUREMENT_EVENT_MAIN_REPORTING_JOB_PERIOD_MS = 4 * 60 * 60 * 1000; // 4 hours. |
| |
| /** Returns min time period (in millis) between each event main reporting job run. */ |
| default long getMeasurementEventMainReportingJobPeriodMs() { |
| return MEASUREMENT_EVENT_MAIN_REPORTING_JOB_PERIOD_MS; |
| } |
| |
| /* The default min time period (in millis) between each event fallback reporting job run. */ |
| long MEASUREMENT_EVENT_FALLBACK_REPORTING_JOB_PERIOD_MS = 24 * 60 * 60 * 1000; // 24 hours. |
| |
| /** Returns min time period (in millis) between each event fallback reporting job run. */ |
| default long getMeasurementEventFallbackReportingJobPeriodMs() { |
| return MEASUREMENT_EVENT_FALLBACK_REPORTING_JOB_PERIOD_MS; |
| } |
| |
| /** |
| * The suffix that is appended to the aggregation coordinator origin for retrieving the |
| * encryption keys. |
| */ |
| String MEASUREMENT_AGGREGATION_COORDINATOR_PATH = "v1alpha/publicKeys"; |
| |
| /** Returns the URL for fetching public encryption keys for aggregatable reports. */ |
| default String getMeasurementAggregationCoordinatorPath() { |
| return MEASUREMENT_AGGREGATION_COORDINATOR_PATH; |
| } |
| |
| boolean MEASUREMENT_AGGREGATION_COORDINATOR_ORIGIN_ENABLED = true; |
| |
| /** Returns true if aggregation coordinator origin is enabled. */ |
| default boolean getMeasurementAggregationCoordinatorOriginEnabled() { |
| return MEASUREMENT_AGGREGATION_COORDINATOR_ORIGIN_ENABLED; |
| } |
| |
| /** |
| * Default list(comma-separated) of origins for creating a URL used to fetch public encryption |
| * keys for aggregatable reports. |
| */ |
| String MEASUREMENT_AGGREGATION_COORDINATOR_ORIGIN_LIST = |
| "https://publickeyservice.aws.privacysandboxservices.com"; |
| |
| /** |
| * Returns a string which is a comma separated list of origins used to fetch public encryption |
| * keys for aggregatable reports. |
| */ |
| default String getMeasurementAggregationCoordinatorOriginList() { |
| return MEASUREMENT_AGGREGATION_COORDINATOR_ORIGIN_LIST; |
| } |
| |
| /* The list of origins for creating a URL used to fetch public encryption keys for |
| aggregatable reports. AWS is the current default. */ |
| String MEASUREMENT_DEFAULT_AGGREGATION_COORDINATOR_ORIGIN = |
| "https://publickeyservice.aws.privacysandboxservices.com"; |
| |
| /** |
| * Returns the default origin for creating the URI used to fetch public encryption keys for |
| * aggregatable reports. |
| */ |
| default String getMeasurementDefaultAggregationCoordinatorOrigin() { |
| return MEASUREMENT_DEFAULT_AGGREGATION_COORDINATOR_ORIGIN; |
| } |
| |
| /* The default min time period (in millis) between each aggregate main reporting job run. */ |
| long MEASUREMENT_AGGREGATE_MAIN_REPORTING_JOB_PERIOD_MS = 4 * 60 * 60 * 1000; // 4 hours. |
| |
| /** Returns min time period (in millis) between each aggregate main reporting job run. */ |
| default long getMeasurementAggregateMainReportingJobPeriodMs() { |
| return MEASUREMENT_AGGREGATE_MAIN_REPORTING_JOB_PERIOD_MS; |
| } |
| |
| /* The default min time period (in millis) between each aggregate fallback reporting job run. */ |
| long MEASUREMENT_AGGREGATE_FALLBACK_REPORTING_JOB_PERIOD_MS = 24 * 60 * 60 * 1000; // 24 hours. |
| |
| /** Returns min time period (in millis) between each aggregate fallback job run. */ |
| default long getMeasurementAggregateFallbackReportingJobPeriodMs() { |
| return MEASUREMENT_AGGREGATE_FALLBACK_REPORTING_JOB_PERIOD_MS; |
| } |
| |
| /** |
| * Returns the maximum time in milliseconds allowed for a network call to open its initial |
| * connection during Measurement API calls. |
| */ |
| default int getMeasurementNetworkConnectTimeoutMs() { |
| return MEASUREMENT_NETWORK_CONNECT_TIMEOUT_MS; |
| } |
| |
| /** |
| * Returns the maximum time in milliseconds allowed for a network call to read a response from a |
| * target server during Measurement API calls. |
| */ |
| default int getMeasurementNetworkReadTimeoutMs() { |
| return MEASUREMENT_NETWORK_READ_TIMEOUT_MS; |
| } |
| |
| long MEASUREMENT_DB_SIZE_LIMIT = (1024 * 1024) * 10; // 10 MBs |
| int MEASUREMENT_NETWORK_CONNECT_TIMEOUT_MS = (int) TimeUnit.SECONDS.toMillis(5); |
| int MEASUREMENT_NETWORK_READ_TIMEOUT_MS = (int) TimeUnit.SECONDS.toMillis(30); |
| int MEASUREMENT_REPORT_RETRY_LIMIT = 3; |
| boolean MEASUREMENT_REPORT_RETRY_LIMIT_ENABLED = true; |
| |
| /** |
| * Returns the window that an InputEvent has to be within for the system to register it as a |
| * click. |
| */ |
| long MEASUREMENT_REGISTRATION_INPUT_EVENT_VALID_WINDOW_MS = 60 * 1000; // 1 minute. |
| |
| default long getMeasurementRegistrationInputEventValidWindowMs() { |
| return MEASUREMENT_REGISTRATION_INPUT_EVENT_VALID_WINDOW_MS; |
| } |
| |
| /** Returns whether a click event should be verified before a registration request. */ |
| boolean MEASUREMENT_IS_CLICK_VERIFICATION_ENABLED = true; |
| |
| default boolean getMeasurementIsClickVerificationEnabled() { |
| return MEASUREMENT_IS_CLICK_VERIFICATION_ENABLED; |
| } |
| |
| /** Returns whether a click is verified by Input Event. */ |
| boolean MEASUREMENT_IS_CLICK_VERIFIED_BY_INPUT_EVENT = false; |
| |
| default boolean getMeasurementIsClickVerifiedByInputEvent() { |
| return MEASUREMENT_IS_CLICK_VERIFIED_BY_INPUT_EVENT; |
| } |
| |
| /** Returns the DB size limit for measurement. */ |
| default long getMeasurementDbSizeLimit() { |
| return MEASUREMENT_DB_SIZE_LIMIT; |
| } |
| |
| /** Returns Whether to limit number of Retries for Measurement Reports */ |
| default boolean getMeasurementReportingRetryLimitEnabled() { |
| return MEASUREMENT_REPORT_RETRY_LIMIT_ENABLED; |
| } |
| |
| /** Returns Maximum number of Retries for Measurement Reportss */ |
| default int getMeasurementReportingRetryLimit() { |
| return MEASUREMENT_REPORT_RETRY_LIMIT; |
| } |
| |
| /** Measurement manifest file url, used for MDD download. */ |
| String MEASUREMENT_MANIFEST_FILE_URL = |
| "https://www.gstatic.com/mdi-serving/rubidium-adservices-adtech-enrollment/2483" |
| + "/99f68a201189da021b1f3dd4ebdef7b0fbe75892"; |
| |
| /** Measurement manifest file url. */ |
| default String getMeasurementManifestFileUrl() { |
| return MEASUREMENT_MANIFEST_FILE_URL; |
| } |
| |
| boolean MEASUREMENT_ENABLE_XNA = false; |
| |
| /** Returns whether XNA should be used for eligible sources. */ |
| default boolean getMeasurementEnableXNA() { |
| return MEASUREMENT_ENABLE_XNA; |
| } |
| |
| boolean MEASUREMENT_ENABLE_SHARED_SOURCE_DEBUG_KEY = true; |
| |
| /** Enable/disable shared_debug_key processing from source RBR. */ |
| default boolean getMeasurementEnableSharedSourceDebugKey() { |
| return MEASUREMENT_ENABLE_SHARED_SOURCE_DEBUG_KEY; |
| } |
| |
| boolean MEASUREMENT_ENABLE_SHARED_FILTER_DATA_KEYS_XNA = true; |
| |
| /** Enable/disable shared_filter_data_keys processing from source RBR. */ |
| default boolean getMeasurementEnableSharedFilterDataKeysXNA() { |
| return MEASUREMENT_ENABLE_SHARED_FILTER_DATA_KEYS_XNA; |
| } |
| |
| boolean MEASUREMENT_ENABLE_DEBUG_REPORT = true; |
| |
| /** Returns whether verbose debug report generation is enabled. */ |
| default boolean getMeasurementEnableDebugReport() { |
| return MEASUREMENT_ENABLE_DEBUG_REPORT; |
| } |
| |
| boolean MEASUREMENT_ENABLE_SOURCE_DEBUG_REPORT = true; |
| |
| /** Returns whether source debug report generation is enabled. */ |
| default boolean getMeasurementEnableSourceDebugReport() { |
| return MEASUREMENT_ENABLE_SOURCE_DEBUG_REPORT; |
| } |
| |
| boolean MEASUREMENT_ENABLE_TRIGGER_DEBUG_REPORT = true; |
| |
| /** Returns whether trigger debug report generation is enabled. */ |
| default boolean getMeasurementEnableTriggerDebugReport() { |
| return MEASUREMENT_ENABLE_TRIGGER_DEBUG_REPORT; |
| } |
| |
| long MEASUREMENT_DATA_EXPIRY_WINDOW_MS = TimeUnit.DAYS.toMillis(37); |
| |
| /** Returns the data expiry window in milliseconds. */ |
| default long getMeasurementDataExpiryWindowMs() { |
| return MEASUREMENT_DATA_EXPIRY_WINDOW_MS; |
| } |
| |
| int MEASUREMENT_MAX_REGISTRATION_REDIRECTS = 20; |
| |
| /** Returns the number of maximum registration redirects allowed. */ |
| default int getMeasurementMaxRegistrationRedirects() { |
| return MEASUREMENT_MAX_REGISTRATION_REDIRECTS; |
| } |
| |
| int MEASUREMENT_MAX_REGISTRATIONS_PER_JOB_INVOCATION = 100; |
| |
| /** Returns the number of maximum registration per job invocation. */ |
| default int getMeasurementMaxRegistrationsPerJobInvocation() { |
| return MEASUREMENT_MAX_REGISTRATIONS_PER_JOB_INVOCATION; |
| } |
| |
| int MEASUREMENT_MAX_RETRIES_PER_REGISTRATION_REQUEST = 5; |
| |
| /** Returns the number of maximum retires per registration request. */ |
| default int getMeasurementMaxRetriesPerRegistrationRequest() { |
| return MEASUREMENT_MAX_RETRIES_PER_REGISTRATION_REQUEST; |
| } |
| |
| long DEFAULT_MEASUREMENT_ASYNC_REGISTRATION_JOB_TRIGGER_MIN_DELAY_MS = |
| TimeUnit.MINUTES.toMillis(2); |
| |
| /** |
| * Returns the minimum delay (in milliseconds) in job triggering after a registration request is |
| * received. |
| */ |
| default long getMeasurementAsyncRegistrationJobTriggerMinDelayMs() { |
| return DEFAULT_MEASUREMENT_ASYNC_REGISTRATION_JOB_TRIGGER_MIN_DELAY_MS; |
| } |
| |
| long DEFAULT_MEASUREMENT_ASYNC_REGISTRATION_JOB_TRIGGER_MAX_DELAY_MS = |
| TimeUnit.MINUTES.toMillis(5); |
| |
| /** |
| * Returns the maximum delay (in milliseconds) in job triggering after a registration request is |
| * received. |
| */ |
| default long getMeasurementAsyncRegistrationJobTriggerMaxDelayMs() { |
| return DEFAULT_MEASUREMENT_ASYNC_REGISTRATION_JOB_TRIGGER_MAX_DELAY_MS; |
| } |
| |
| long DEFAULT_MEASUREMENT_ATTRIBUTION_JOB_TRIGGERING_DELAY_MS = TimeUnit.MINUTES.toMillis(2); |
| |
| /** Delay from trigger registration to attribution job triggering */ |
| default long getMeasurementAttributionJobTriggerDelayMs() { |
| return DEFAULT_MEASUREMENT_ATTRIBUTION_JOB_TRIGGERING_DELAY_MS; |
| } |
| |
| boolean MEASUREMENT_ENABLE_AGGREGATABLE_REPORT_PAYLOAD_PADDING = false; |
| |
| /** Returns true if aggregatable report padding is enabled else false. */ |
| default boolean getMeasurementEnableAggregatableReportPayloadPadding() { |
| return MEASUREMENT_ENABLE_AGGREGATABLE_REPORT_PAYLOAD_PADDING; |
| } |
| |
| int DEFAULT_MEASUREMENT_MAX_ATTRIBUTIONS_PER_INVOCATION = 100; |
| |
| /** Max number of {@link Trigger} to process per job for {@link AttributionJobService} */ |
| default int getMeasurementMaxAttributionsPerInvocation() { |
| return DEFAULT_MEASUREMENT_MAX_ATTRIBUTIONS_PER_INVOCATION; |
| } |
| |
| long DEFAULT_MEASUREMENT_MAX_EVENT_REPORT_UPLOAD_RETRY_WINDOW_MS = TimeUnit.DAYS.toMillis(28); |
| |
| /** Maximum event report upload retry window. */ |
| default long getMeasurementMaxEventReportUploadRetryWindowMs() { |
| return DEFAULT_MEASUREMENT_MAX_EVENT_REPORT_UPLOAD_RETRY_WINDOW_MS; |
| } |
| |
| long DEFAULT_MEASUREMENT_MAX_AGGREGATE_REPORT_UPLOAD_RETRY_WINDOW_MS = |
| TimeUnit.DAYS.toMillis(28); |
| |
| /** Maximum aggregate report upload retry window. */ |
| default long getMeasurementMaxAggregateReportUploadRetryWindowMs() { |
| return DEFAULT_MEASUREMENT_MAX_AGGREGATE_REPORT_UPLOAD_RETRY_WINDOW_MS; |
| } |
| |
| long DEFAULT_MEASUREMENT_MAX_DELAYED_SOURCE_REGISTRATION_WINDOW = TimeUnit.MINUTES.toMillis(2); |
| |
| /** Maximum window for a delayed source to be considered valid instead of missed. */ |
| default long getMeasurementMaxDelayedSourceRegistrationWindow() { |
| return DEFAULT_MEASUREMENT_MAX_DELAYED_SOURCE_REGISTRATION_WINDOW; |
| } |
| |
| int DEFAULT_MEASUREMENT_MAX_BYTES_PER_ATTRIBUTION_FILTER_STRING = 25; |
| |
| /** Maximum number of bytes allowed in an attribution filter string. */ |
| default int getMeasurementMaxBytesPerAttributionFilterString() { |
| return DEFAULT_MEASUREMENT_MAX_BYTES_PER_ATTRIBUTION_FILTER_STRING; |
| } |
| |
| int DEFAULT_MEASUREMENT_MAX_FILTER_MAPS_PER_FILTER_SET = 5; |
| |
| /** Maximum number of filter maps allowed in an attribution filter set. */ |
| default int getMeasurementMaxFilterMapsPerFilterSet() { |
| return DEFAULT_MEASUREMENT_MAX_FILTER_MAPS_PER_FILTER_SET; |
| } |
| |
| int DEFAULT_MEASUREMENT_MAX_VALUES_PER_ATTRIBUTION_FILTER = 50; |
| |
| /** Maximum number of values allowed in an attribution filter. */ |
| default int getMeasurementMaxValuesPerAttributionFilter() { |
| return DEFAULT_MEASUREMENT_MAX_VALUES_PER_ATTRIBUTION_FILTER; |
| } |
| |
| int DEFAULT_MEASUREMENT_MAX_ATTRIBUTION_FILTERS = 50; |
| |
| /** Maximum number of attribution filters allowed for a source. */ |
| default int getMeasurementMaxAttributionFilters() { |
| return DEFAULT_MEASUREMENT_MAX_ATTRIBUTION_FILTERS; |
| } |
| |
| int DEFAULT_MEASUREMENT_MAX_BYTES_PER_ATTRIBUTION_AGGREGATE_KEY_ID = 25; |
| |
| /** Maximum number of bytes allowed in an aggregate key ID. */ |
| default int getMeasurementMaxBytesPerAttributionAggregateKeyId() { |
| return DEFAULT_MEASUREMENT_MAX_BYTES_PER_ATTRIBUTION_AGGREGATE_KEY_ID; |
| } |
| |
| int DEFAULT_MEASUREMENT_MAX_AGGREGATE_DEDUPLICATION_KEYS_PER_REGISTRATION = 50; |
| |
| /** Maximum number of aggregate deduplication keys allowed during trigger registration. */ |
| default int getMeasurementMaxAggregateDeduplicationKeysPerRegistration() { |
| return DEFAULT_MEASUREMENT_MAX_AGGREGATE_DEDUPLICATION_KEYS_PER_REGISTRATION; |
| } |
| |
| boolean MEASUREMENT_ATTRIBUTION_FALLBACK_JOB_KILL_SWITCH = false; |
| |
| /** Returns the kill switch for Attribution Fallback Job . */ |
| default boolean getMeasurementAttributionFallbackJobKillSwitch() { |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_ATTRIBUTION_FALLBACK_JOB_KILL_SWITCH; |
| } |
| |
| long MEASUREMENT_ATTRIBUTION_FALLBACK_JOB_PERIOD_MS = TimeUnit.HOURS.toMillis(1); |
| |
| /** Returns the job period in millis for Attribution Fallback Job . */ |
| default long getMeasurementAttributionFallbackJobPeriodMs() { |
| return MEASUREMENT_ATTRIBUTION_FALLBACK_JOB_PERIOD_MS; |
| } |
| |
| int MEASUREMENT_MAX_ATTRIBUTION_PER_RATE_LIMIT_WINDOW = 100; |
| |
| /** |
| * Returns maximum attributions per rate limit window. Rate limit unit: (Source Site, |
| * Destination Site, Reporting Site, Window). |
| */ |
| default int getMeasurementMaxAttributionPerRateLimitWindow() { |
| return MEASUREMENT_MAX_ATTRIBUTION_PER_RATE_LIMIT_WINDOW; |
| } |
| |
| int MEASUREMENT_MAX_DISTINCT_ENROLLMENTS_IN_ATTRIBUTION = 10; |
| |
| /** |
| * Returns max distinct enrollments for attribution per { Advertiser X Publisher X TimePeriod }. |
| */ |
| default int getMeasurementMaxDistinctEnrollmentsInAttribution() { |
| return MEASUREMENT_MAX_DISTINCT_ENROLLMENTS_IN_ATTRIBUTION; |
| } |
| |
| int MEASUREMENT_MAX_DISTINCT_DESTINATIONS_IN_ACTIVE_SOURCE = 100; |
| |
| /** |
| * Returns max distinct advertisers with pending impressions per { Publisher X Enrollment X |
| * TimePeriod }. |
| */ |
| default int getMeasurementMaxDistinctDestinationsInActiveSource() { |
| return MEASUREMENT_MAX_DISTINCT_DESTINATIONS_IN_ACTIVE_SOURCE; |
| } |
| |
| int MEASUREMENT_MAX_REPORTING_ORIGINS_PER_SOURCE_REPORTING_SITE_PER_WINDOW = 1; |
| |
| /** |
| * Returns the maximum number of reporting origins per source site, reporting site, |
| * reporting-origin-update-window counted per source registration. |
| */ |
| default int getMeasurementMaxReportingOriginsPerSourceReportingSitePerWindow() { |
| return MEASUREMENT_MAX_REPORTING_ORIGINS_PER_SOURCE_REPORTING_SITE_PER_WINDOW; |
| } |
| |
| int MEASUREMENT_MAX_DISTINCT_REP_ORIG_PER_PUBLISHER_X_DEST_IN_SOURCE = 100; |
| |
| /** |
| * Max distinct reporting origins with source registration per { Publisher X Advertiser X |
| * TimePeriod }. |
| */ |
| default int getMeasurementMaxDistinctRepOrigPerPublXDestInSource() { |
| return MEASUREMENT_MAX_DISTINCT_REP_ORIG_PER_PUBLISHER_X_DEST_IN_SOURCE; |
| } |
| |
| boolean MEASUREMENT_ENABLE_DESTINATION_RATE_LIMIT = true; |
| |
| /** Returns {@code true} if Measurement destination rate limit is enabled. */ |
| default boolean getMeasurementEnableDestinationRateLimit() { |
| return MEASUREMENT_ENABLE_DESTINATION_RATE_LIMIT; |
| } |
| |
| int MEASUREMENT_MAX_DESTINATIONS_PER_PUBLISHER_PER_RATE_LIMIT_WINDOW = 50; |
| |
| /** |
| * Returns the maximum number of distinct destination sites per source site per rate limit |
| * window. |
| */ |
| default int getMeasurementMaxDestinationsPerPublisherPerRateLimitWindow() { |
| return MEASUREMENT_MAX_DESTINATIONS_PER_PUBLISHER_PER_RATE_LIMIT_WINDOW; |
| } |
| |
| int MEASUREMENT_MAX_DEST_PER_PUBLISHER_X_ENROLLMENT_PER_RATE_LIMIT_WINDOW = 200; |
| |
| /** |
| * Returns the maximum number of distinct destination sites per source site X enrollment per |
| * rate limit window. |
| */ |
| default int getMeasurementMaxDestPerPublisherXEnrollmentPerRateLimitWindow() { |
| return MEASUREMENT_MAX_DEST_PER_PUBLISHER_X_ENROLLMENT_PER_RATE_LIMIT_WINDOW; |
| } |
| |
| long MEASUREMENT_DESTINATION_RATE_LIMIT_WINDOW = TimeUnit.MINUTES.toMillis(1); |
| |
| /** |
| * Returns the duration that controls the rate-limiting window for destinations. |
| */ |
| default long getMeasurementDestinationRateLimitWindow() { |
| return MEASUREMENT_DESTINATION_RATE_LIMIT_WINDOW; |
| } |
| |
| boolean MEASUREMENT_FLEX_LITE_API_ENABLED = true; |
| |
| /** Returns true if flex lite api is enabled else false. */ |
| default boolean getMeasurementFlexLiteAPIEnabled() { |
| return MEASUREMENT_FLEX_LITE_API_ENABLED; |
| } |
| |
| float MEASUREMENT_FLEX_API_MAX_INFO_GAIN_EVENT = 6.5F; |
| |
| /** Returns max information gain in Flexible Event API for Event sources */ |
| default float getMeasurementFlexApiMaxInformationGainEvent() { |
| return MEASUREMENT_FLEX_API_MAX_INFO_GAIN_EVENT; |
| } |
| |
| float MEASUREMENT_FLEX_API_MAX_INFO_GAIN_NAVIGATION = 11.46173F; |
| |
| /** Returns max information gain in Flexible Event API for Navigation sources */ |
| default float getMeasurementFlexApiMaxInformationGainNavigation() { |
| return MEASUREMENT_FLEX_API_MAX_INFO_GAIN_NAVIGATION; |
| } |
| |
| int MEASUREMENT_FLEX_API_MAX_EVENT_REPORTS = 20; |
| |
| /** Returns max event reports in Flexible Event API */ |
| default int getMeasurementFlexApiMaxEventReports() { |
| return MEASUREMENT_FLEX_API_MAX_EVENT_REPORTS; |
| } |
| |
| int MEASUREMENT_FLEX_API_MAX_EVENT_REPORT_WINDOWS = 5; |
| |
| /** Returns max event report windows in Flexible Event API */ |
| default int getMeasurementFlexApiMaxEventReportWindows() { |
| return MEASUREMENT_FLEX_API_MAX_EVENT_REPORT_WINDOWS; |
| } |
| |
| int MEASUREMENT_FLEX_API_MAX_TRIGGER_DATA_CARDINALITY = 32; |
| |
| /** Returns max trigger data cardinality in Flexible Event API */ |
| default int getMeasurementFlexApiMaxTriggerDataCardinality() { |
| return MEASUREMENT_FLEX_API_MAX_TRIGGER_DATA_CARDINALITY; |
| } |
| |
| long MEASUREMENT_MINIMUM_EVENT_REPORT_WINDOW_IN_SECONDS = TimeUnit.HOURS.toSeconds(1); |
| |
| /** Returns minimum event report window */ |
| default long getMeasurementMinimumEventReportWindowInSeconds() { |
| return MEASUREMENT_MINIMUM_EVENT_REPORT_WINDOW_IN_SECONDS; |
| } |
| |
| long MEASUREMENT_MINIMUM_AGGREGATABLE_REPORT_WINDOW_IN_SECONDS = TimeUnit.HOURS.toSeconds(1); |
| |
| /** Returns minimum aggregatable report window */ |
| default long getMeasurementMinimumAggregatableReportWindowInSeconds() { |
| return MEASUREMENT_MINIMUM_AGGREGATABLE_REPORT_WINDOW_IN_SECONDS; |
| } |
| |
| boolean MEASUREMENT_ENABLE_LOOKBACK_WINDOW_FILTER = false; |
| |
| /** Returns true if lookback window filter is enabled else false. */ |
| default boolean getMeasurementEnableLookbackWindowFilter() { |
| return MEASUREMENT_ENABLE_LOOKBACK_WINDOW_FILTER; |
| } |
| |
| long FLEDGE_CUSTOM_AUDIENCE_MAX_COUNT = 4000L; |
| long FLEDGE_CUSTOM_AUDIENCE_PER_APP_MAX_COUNT = 1000L; |
| long FLEDGE_CUSTOM_AUDIENCE_MAX_OWNER_COUNT = 1000L; |
| long FLEDGE_CUSTOM_AUDIENCE_DEFAULT_EXPIRE_IN_MS = 60L * 24L * 60L * 60L * 1000L; // 60 days |
| long FLEDGE_CUSTOM_AUDIENCE_MAX_ACTIVATION_DELAY_IN_MS = |
| 60L * 24L * 60L * 60L * 1000L; // 60 days |
| long FLEDGE_CUSTOM_AUDIENCE_MAX_EXPIRE_IN_MS = 60L * 24L * 60L * 60L * 1000L; // 60 days |
| int FLEDGE_CUSTOM_AUDIENCE_MAX_NAME_SIZE_B = 200; |
| int FLEDGE_CUSTOM_AUDIENCE_MAX_DAILY_UPDATE_URI_SIZE_B = 400; |
| int FLEDGE_CUSTOM_AUDIENCE_MAX_BIDDING_LOGIC_URI_SIZE_B = 400; |
| int FLEDGE_CUSTOM_AUDIENCE_MAX_USER_BIDDING_SIGNALS_SIZE_B = 10 * 1024; // 10 KiB |
| int FLEDGE_CUSTOM_AUDIENCE_MAX_TRUSTED_BIDDING_DATA_SIZE_B = 10 * 1024; // 10 KiB |
| int FLEDGE_CUSTOM_AUDIENCE_MAX_ADS_SIZE_B = 10 * 1024; // 10 KiB |
| int FLEDGE_CUSTOM_AUDIENCE_MAX_NUM_ADS = 100; |
| // Keeping TTL as long as expiry, could be reduced later as we get more fresh CAs with adoption |
| long FLEDGE_CUSTOM_AUDIENCE_ACTIVE_TIME_WINDOW_MS = 60 * 24 * 60L * 60L * 1000; // 60 days |
| long FLEDGE_ENCRYPTION_KEY_MAX_AGE_SECONDS = TimeUnit.DAYS.toSeconds(14); |
| long FLEDGE_FETCH_CUSTOM_AUDIENCE_MIN_RETRY_AFTER_VALUE_MS = 30 * 1000; // 30 seconds |
| long FLEDGE_FETCH_CUSTOM_AUDIENCE_MAX_RETRY_AFTER_VALUE_MS = |
| 24 * 60 * 60 * 1000; // 24 hours in ms |
| |
| /** |
| * Returns the minimum number of milliseconds before the same fetch CA request can be retried. |
| */ |
| default long getFledgeFetchCustomAudienceMinRetryAfterValueMs() { |
| return FLEDGE_FETCH_CUSTOM_AUDIENCE_MIN_RETRY_AFTER_VALUE_MS; |
| } |
| |
| /** |
| * Returns the maximum number of milliseconds before the same fetch CA request can be retried. |
| */ |
| default long getFledgeFetchCustomAudienceMaxRetryAfterValueMs() { |
| return FLEDGE_FETCH_CUSTOM_AUDIENCE_MAX_RETRY_AFTER_VALUE_MS; |
| } |
| |
| /** Returns the maximum number of custom audience can stay in the storage. */ |
| default long getFledgeCustomAudienceMaxCount() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_COUNT; |
| } |
| |
| /** Returns the maximum number of custom audience an app can create. */ |
| default long getFledgeCustomAudiencePerAppMaxCount() { |
| return FLEDGE_CUSTOM_AUDIENCE_PER_APP_MAX_COUNT; |
| } |
| |
| /** Returns the maximum number of apps can have access to custom audience. */ |
| default long getFledgeCustomAudienceMaxOwnerCount() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_OWNER_COUNT; |
| } |
| |
| /** |
| * Returns the default amount of time in milliseconds a custom audience object will live before |
| * being expiring and being removed |
| */ |
| default long getFledgeCustomAudienceDefaultExpireInMs() { |
| return FLEDGE_CUSTOM_AUDIENCE_DEFAULT_EXPIRE_IN_MS; |
| } |
| |
| /** |
| * Returns the maximum permitted difference in milliseconds between the custom audience object's |
| * creation time and its activation time |
| */ |
| default long getFledgeCustomAudienceMaxActivationDelayInMs() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_ACTIVATION_DELAY_IN_MS; |
| } |
| |
| /** |
| * Returns the maximum permitted difference in milliseconds between the custom audience object's |
| * activation time and its expiration time |
| */ |
| default long getFledgeCustomAudienceMaxExpireInMs() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_EXPIRE_IN_MS; |
| } |
| |
| /** Returns the maximum size in bytes allowed for name in each FLEDGE custom audience. */ |
| default int getFledgeCustomAudienceMaxNameSizeB() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_NAME_SIZE_B; |
| } |
| |
| /** |
| * Returns the maximum size in bytes allowed for daily update uri in each FLEDGE custom |
| * audience. |
| */ |
| default int getFledgeCustomAudienceMaxDailyUpdateUriSizeB() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_DAILY_UPDATE_URI_SIZE_B; |
| } |
| |
| /** |
| * Returns the maximum size in bytes allowed for bidding logic uri in each FLEDGE custom |
| * audience. |
| */ |
| default int getFledgeCustomAudienceMaxBiddingLogicUriSizeB() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_BIDDING_LOGIC_URI_SIZE_B; |
| } |
| |
| /** |
| * Returns the maximum size in bytes allowed for user bidding signals in each FLEDGE custom |
| * audience. |
| */ |
| default int getFledgeCustomAudienceMaxUserBiddingSignalsSizeB() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_USER_BIDDING_SIGNALS_SIZE_B; |
| } |
| |
| /** |
| * Returns the maximum size in bytes allowed for trusted bidding data in each FLEDGE custom |
| * audience. |
| */ |
| default int getFledgeCustomAudienceMaxTrustedBiddingDataSizeB() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_TRUSTED_BIDDING_DATA_SIZE_B; |
| } |
| |
| /** Returns the maximum size in bytes allowed for ads in each FLEDGE custom audience. */ |
| default int getFledgeCustomAudienceMaxAdsSizeB() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_ADS_SIZE_B; |
| } |
| |
| /** Returns the maximum allowed number of ads per FLEDGE custom audience. */ |
| default int getFledgeCustomAudienceMaxNumAds() { |
| return FLEDGE_CUSTOM_AUDIENCE_MAX_NUM_ADS; |
| } |
| |
| /** |
| * Returns the time window that defines how long after a successful update a custom audience can |
| * participate in ad selection. |
| */ |
| default long getFledgeCustomAudienceActiveTimeWindowInMs() { |
| return FLEDGE_CUSTOM_AUDIENCE_ACTIVE_TIME_WINDOW_MS; |
| } |
| |
| int FLEDGE_FETCH_CUSTOM_AUDIENCE_MAX_USER_BIDDING_SIGNALS_SIZE_B = 8 * 1024; // 8 KiB |
| int FLEDGE_FETCH_CUSTOM_AUDIENCE_MAX_REQUEST_CUSTOM_HEADER_SIZE_B = 8 * 1024; // 8 KiB |
| int FLEDGE_FETCH_CUSTOM_AUDIENCE_MAX_CUSTOM_AUDIENCE_SIZE_B = 8 * 1024; // 8 KiB |
| |
| /** |
| * Returns the maximum size in bytes allowed for user bidding signals in each |
| * fetchAndJoinCustomAudience request. |
| */ |
| default int getFledgeFetchCustomAudienceMaxUserBiddingSignalsSizeB() { |
| return FLEDGE_FETCH_CUSTOM_AUDIENCE_MAX_USER_BIDDING_SIGNALS_SIZE_B; |
| } |
| |
| /** |
| * Returns the maximum size in bytes allowed for the request custom header derived from each |
| * fetchAndJoinCustomAudience request. |
| */ |
| default int getFledgeFetchCustomAudienceMaxRequestCustomHeaderSizeB() { |
| return FLEDGE_FETCH_CUSTOM_AUDIENCE_MAX_REQUEST_CUSTOM_HEADER_SIZE_B; |
| } |
| |
| /** |
| * Returns the maximum size in bytes for the fused custom audience allowed to be persisted by |
| * the fetchAndJoinCustomAudience API. |
| */ |
| default int getFledgeFetchCustomAudienceMaxCustomAudienceSizeB() { |
| return FLEDGE_FETCH_CUSTOM_AUDIENCE_MAX_CUSTOM_AUDIENCE_SIZE_B; |
| } |
| |
| boolean FLEDGE_BACKGROUND_FETCH_ENABLED = true; |
| long FLEDGE_BACKGROUND_FETCH_JOB_PERIOD_MS = 4L * 60L * 60L * 1000L; // 4 hours |
| long FLEDGE_BACKGROUND_FETCH_JOB_FLEX_MS = 30L * 60L * 1000L; // 30 minutes |
| long FLEDGE_BACKGROUND_FETCH_JOB_MAX_RUNTIME_MS = 10L * 60L * 1000L; // 5 minutes |
| long FLEDGE_BACKGROUND_FETCH_MAX_NUM_UPDATED = 1000; |
| int FLEDGE_BACKGROUND_FETCH_THREAD_POOL_SIZE = 8; |
| long FLEDGE_BACKGROUND_FETCH_ELIGIBLE_UPDATE_BASE_INTERVAL_S = 24L * 60L * 60L; // 24 hours |
| int FLEDGE_BACKGROUND_FETCH_NETWORK_CONNECT_TIMEOUT_MS = 5 * 1000; // 5 seconds |
| int FLEDGE_BACKGROUND_FETCH_NETWORK_READ_TIMEOUT_MS = 30 * 1000; // 30 seconds |
| int FLEDGE_BACKGROUND_FETCH_MAX_RESPONSE_SIZE_B = 10 * 1024; // 10 KiB |
| boolean FLEDGE_HTTP_CACHE_ENABLE = true; |
| boolean FLEDGE_HTTP_CACHE_ENABLE_JS_CACHING = true; |
| long FLEDGE_HTTP_CACHE_DEFAULT_MAX_AGE_SECONDS = 2 * 24 * 60 * 60; // 2 days |
| long FLEDGE_HTTP_CACHE_MAX_ENTRIES = 100; |
| boolean FLEDGE_ON_DEVICE_AUCTION_SHOULD_USE_UNIFIED_TABLES = false; |
| |
| /** Returns {@code true} if the on device auction should use the unified flow tables */ |
| default boolean getFledgeOnDeviceAuctionShouldUseUnifiedTables() { |
| return FLEDGE_ON_DEVICE_AUCTION_SHOULD_USE_UNIFIED_TABLES; |
| } |
| |
| /** Returns {@code true} if the FLEDGE Background Fetch is enabled. */ |
| default boolean getFledgeBackgroundFetchEnabled() { |
| return FLEDGE_BACKGROUND_FETCH_ENABLED; |
| } |
| |
| /** |
| * Returns the best effort max time (in milliseconds) between each FLEDGE Background Fetch job |
| * run. |
| */ |
| default long getFledgeBackgroundFetchJobPeriodMs() { |
| return FLEDGE_BACKGROUND_FETCH_JOB_PERIOD_MS; |
| } |
| |
| /** |
| * Returns the amount of flex (in milliseconds) around the end of each period to run each FLEDGE |
| * Background Fetch job. |
| */ |
| default long getFledgeBackgroundFetchJobFlexMs() { |
| return FLEDGE_BACKGROUND_FETCH_JOB_FLEX_MS; |
| } |
| |
| /** |
| * Returns the maximum amount of time (in milliseconds) each FLEDGE Background Fetch job is |
| * allowed to run. |
| */ |
| default long getFledgeBackgroundFetchJobMaxRuntimeMs() { |
| return FLEDGE_BACKGROUND_FETCH_JOB_MAX_RUNTIME_MS; |
| } |
| |
| /** |
| * Returns the maximum number of custom audiences updated in a single FLEDGE background fetch |
| * job. |
| */ |
| default long getFledgeBackgroundFetchMaxNumUpdated() { |
| return FLEDGE_BACKGROUND_FETCH_MAX_NUM_UPDATED; |
| } |
| |
| /** |
| * Returns the maximum thread pool size to draw workers from in a single FLEDGE background fetch |
| * job. |
| */ |
| default int getFledgeBackgroundFetchThreadPoolSize() { |
| return FLEDGE_BACKGROUND_FETCH_THREAD_POOL_SIZE; |
| } |
| |
| /** |
| * Returns the base interval in seconds after a successful FLEDGE background fetch job after |
| * which a custom audience is next eligible to be updated. |
| */ |
| default long getFledgeBackgroundFetchEligibleUpdateBaseIntervalS() { |
| return FLEDGE_BACKGROUND_FETCH_ELIGIBLE_UPDATE_BASE_INTERVAL_S; |
| } |
| |
| /** |
| * Returns the maximum time in milliseconds allowed for a network call to open its initial |
| * connection during the FLEDGE background fetch. |
| */ |
| default int getFledgeBackgroundFetchNetworkConnectTimeoutMs() { |
| return FLEDGE_BACKGROUND_FETCH_NETWORK_CONNECT_TIMEOUT_MS; |
| } |
| |
| /** |
| * Returns the maximum time in milliseconds allowed for a network call to read a response from a |
| * target server during the FLEDGE background fetch. |
| */ |
| default int getFledgeBackgroundFetchNetworkReadTimeoutMs() { |
| return FLEDGE_BACKGROUND_FETCH_NETWORK_READ_TIMEOUT_MS; |
| } |
| |
| /** |
| * Returns the maximum size in bytes of a single custom audience update response during the |
| * FLEDGE background fetch. |
| */ |
| default int getFledgeBackgroundFetchMaxResponseSizeB() { |
| return FLEDGE_BACKGROUND_FETCH_MAX_RESPONSE_SIZE_B; |
| } |
| |
| /** |
| * Returns boolean, if the caching is enabled for {@link |
| * com.android.adservices.service.common.cache.FledgeHttpCache} |
| */ |
| default boolean getFledgeHttpCachingEnabled() { |
| return FLEDGE_HTTP_CACHE_ENABLE; |
| } |
| |
| /** Returns boolean, if the caching is enabled for JS for bidding and scoring */ |
| default boolean getFledgeHttpJsCachingEnabled() { |
| return FLEDGE_HTTP_CACHE_ENABLE_JS_CACHING; |
| } |
| |
| /** Returns max number of entries that should be persisted in cache */ |
| default long getFledgeHttpCacheMaxEntries() { |
| return FLEDGE_HTTP_CACHE_MAX_ENTRIES; |
| } |
| |
| /** Returns the default max age of entries in cache */ |
| default long getFledgeHttpCacheMaxAgeSeconds() { |
| return FLEDGE_HTTP_CACHE_DEFAULT_MAX_AGE_SECONDS; |
| } |
| |
| boolean PROTECTED_SIGNALS_PERIODIC_ENCODING_ENABLED = false; |
| long PROTECTED_SIGNALS_PERIODIC_ENCODING_JOB_PERIOD_MS = 1L * 60L * 60L * 1000L; // 1 hour |
| long PROTECTED_SIGNALS_PERIODIC_ENCODING_JOB_FLEX_MS = 5L * 60L * 1000L; // 5 minutes |
| int PROTECTED_SIGNALS_ENCODED_PAYLOAD_MAX_SIZE_BYTES = (int) (1.5 * 1024); // 1.5 KB |
| int PROTECTED_SIGNALS_FETCH_SIGNAL_UPDATES_MAX_SIZE_BYTES = (int) (10 * 1024); |
| int PROTECTED_SIGNALS_MAX_JS_FAILURE_EXECUTION_ON_CERTAIN_VERSION_BEFORE_STOP = 3; |
| long PROTECTED_SIGNALS_ENCODER_REFRESH_WINDOW_SECONDS = 24L * 60L * 60L; // 1 day |
| |
| /** Returns {@code true} feature flag if Periodic encoding of Protected Signals is enabled. */ |
| default boolean getProtectedSignalsPeriodicEncodingEnabled() { |
| return PROTECTED_SIGNALS_PERIODIC_ENCODING_ENABLED; |
| } |
| |
| /** |
| * @return period of running periodic encoding in milliseconds |
| */ |
| default long getProtectedSignalPeriodicEncodingJobPeriodMs() { |
| return PROTECTED_SIGNALS_PERIODIC_ENCODING_JOB_PERIOD_MS; |
| } |
| |
| /** |
| * @return the flexible period of running periodic encoding in milliseconds |
| */ |
| default long getProtectedSignalsPeriodicEncodingJobFlexMs() { |
| return PROTECTED_SIGNALS_PERIODIC_ENCODING_JOB_FLEX_MS; |
| } |
| |
| /** |
| * @return the max size in bytes for encoded payload |
| */ |
| default int getProtectedSignalsEncodedPayloadMaxSizeBytes() { |
| return PROTECTED_SIGNALS_ENCODED_PAYLOAD_MAX_SIZE_BYTES; |
| } |
| |
| /** Returns the maximum size of the signal update payload. */ |
| default int getProtectedSignalsFetchSignalUpdatesMaxSizeBytes() { |
| return PROTECTED_SIGNALS_FETCH_SIGNAL_UPDATES_MAX_SIZE_BYTES; |
| } |
| |
| /** Returns the maximum number of continues JS failure before we stop executing the JS. */ |
| default int getProtectedSignalsMaxJsFailureExecutionOnCertainVersionBeforeStop() { |
| return PROTECTED_SIGNALS_MAX_JS_FAILURE_EXECUTION_ON_CERTAIN_VERSION_BEFORE_STOP; |
| } |
| |
| /** Returns the maximum time window beyond which encoder logic should be refreshed */ |
| default long getProtectedSignalsEncoderRefreshWindowSeconds() { |
| return PROTECTED_SIGNALS_ENCODER_REFRESH_WINDOW_SECONDS; |
| } |
| |
| int FLEDGE_AD_COUNTER_HISTOGRAM_ABSOLUTE_MAX_TOTAL_EVENT_COUNT = 10_000; |
| int FLEDGE_AD_COUNTER_HISTOGRAM_LOWER_MAX_TOTAL_EVENT_COUNT = 9_500; |
| int FLEDGE_AD_COUNTER_HISTOGRAM_ABSOLUTE_MAX_PER_BUYER_EVENT_COUNT = 1_000; |
| int FLEDGE_AD_COUNTER_HISTOGRAM_LOWER_MAX_PER_BUYER_EVENT_COUNT = 900; |
| |
| /** Returns the maximum allowed number of events in the entire frequency cap histogram table. */ |
| default int getFledgeAdCounterHistogramAbsoluteMaxTotalEventCount() { |
| return FLEDGE_AD_COUNTER_HISTOGRAM_ABSOLUTE_MAX_TOTAL_EVENT_COUNT; |
| } |
| |
| /** |
| * Returns the number of events that the entire frequency cap histogram table should be trimmed |
| * to, if there are too many entries. |
| */ |
| default int getFledgeAdCounterHistogramLowerMaxTotalEventCount() { |
| return FLEDGE_AD_COUNTER_HISTOGRAM_LOWER_MAX_TOTAL_EVENT_COUNT; |
| } |
| |
| /** |
| * Returns the maximum allowed number of events per buyer in the frequency cap histogram table. |
| */ |
| default int getFledgeAdCounterHistogramAbsoluteMaxPerBuyerEventCount() { |
| return FLEDGE_AD_COUNTER_HISTOGRAM_ABSOLUTE_MAX_PER_BUYER_EVENT_COUNT; |
| } |
| |
| /** |
| * Returns the number of events for a single buyer that the frequency cap histogram table should |
| * be trimmed to, if there are too many entries for that buyer. |
| */ |
| default int getFledgeAdCounterHistogramLowerMaxPerBuyerEventCount() { |
| return FLEDGE_AD_COUNTER_HISTOGRAM_LOWER_MAX_PER_BUYER_EVENT_COUNT; |
| } |
| |
| int FLEDGE_AD_SELECTION_MAX_CONCURRENT_BIDDING_COUNT = 6; |
| |
| /** Returns the number of CA that can be bid in parallel for one Ad Selection */ |
| default int getAdSelectionMaxConcurrentBiddingCount() { |
| return FLEDGE_AD_SELECTION_MAX_CONCURRENT_BIDDING_COUNT; |
| } |
| |
| // TODO(b/240647148): Limits are increased temporarily, re-evaluate these numbers after |
| // getting real world data from telemetry & set accurately scoped timeout |
| long FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_CA_MS = 5000; |
| long FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_BUYER_MS = 10000; |
| long FLEDGE_AD_SELECTION_SCORING_TIMEOUT_MS = 5000; |
| long FLEDGE_AD_SELECTION_SELECTING_OUTCOME_TIMEOUT_MS = 5000; |
| // For *on device* ad selection. |
| long FLEDGE_AD_SELECTION_OVERALL_TIMEOUT_MS = 10000; |
| long FLEDGE_AD_SELECTION_FROM_OUTCOMES_OVERALL_TIMEOUT_MS = 20_000; |
| long FLEDGE_AD_SELECTION_OFF_DEVICE_OVERALL_TIMEOUT_MS = 10_000; |
| long FLEDGE_AD_SELECTION_BIDDING_LOGIC_JS_VERSION = 2L; |
| |
| long FLEDGE_REPORT_IMPRESSION_OVERALL_TIMEOUT_MS = 2000; |
| |
| // RegisterAdBeacon Constants |
| long FLEDGE_REPORT_IMPRESSION_MAX_REGISTERED_AD_BEACONS_TOTAL_COUNT = 1000; // Num entries |
| long FLEDGE_REPORT_IMPRESSION_MAX_REGISTERED_AD_BEACONS_PER_AD_TECH_COUNT = 10; // Num entries |
| long FLEDGE_REPORT_IMPRESSION_REGISTERED_AD_BEACONS_MAX_INTERACTION_KEY_SIZE_B = |
| 20 * 2; // Num characters * 2 bytes per char in UTF-8 |
| long FLEDGE_REPORT_IMPRESSION_MAX_INTERACTION_REPORTING_URI_SIZE_B = 400; |
| |
| /** Returns the timeout constant in milliseconds that limits the bidding per CA */ |
| default long getAdSelectionBiddingTimeoutPerCaMs() { |
| return FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_CA_MS; |
| } |
| |
| /** Returns the timeout constant in milliseconds that limits the bidding per Buyer */ |
| default long getAdSelectionBiddingTimeoutPerBuyerMs() { |
| return FLEDGE_AD_SELECTION_BIDDING_TIMEOUT_PER_BUYER_MS; |
| } |
| |
| /** Returns the timeout constant in milliseconds that limits the scoring */ |
| default long getAdSelectionScoringTimeoutMs() { |
| return FLEDGE_AD_SELECTION_SCORING_TIMEOUT_MS; |
| } |
| |
| /** |
| * Returns the timeout constant in milliseconds that limits the {@link |
| * com.android.adservices.service.adselection.AdOutcomeSelectorImpl#runAdOutcomeSelector} |
| */ |
| default long getAdSelectionSelectingOutcomeTimeoutMs() { |
| return FLEDGE_AD_SELECTION_SELECTING_OUTCOME_TIMEOUT_MS; |
| } |
| |
| /** |
| * Returns the timeout constant in milliseconds that limits the overall *on device* ad selection |
| * orchestration. |
| */ |
| default long getAdSelectionOverallTimeoutMs() { |
| return FLEDGE_AD_SELECTION_OVERALL_TIMEOUT_MS; |
| } |
| |
| /** |
| * Returns the timeout constant in milliseconds that limits the overall *on device* ad selection |
| * from outcomes orchestration. |
| */ |
| default long getAdSelectionFromOutcomesOverallTimeoutMs() { |
| return FLEDGE_AD_SELECTION_FROM_OUTCOMES_OVERALL_TIMEOUT_MS; |
| } |
| |
| /** |
| * Returns the timeout constant in milliseconds that limits the overall off device ad selection |
| * orchestration. |
| */ |
| default long getAdSelectionOffDeviceOverallTimeoutMs() { |
| return FLEDGE_AD_SELECTION_OFF_DEVICE_OVERALL_TIMEOUT_MS; |
| } |
| |
| /** Returns the default JS version for running bidding. */ |
| default long getFledgeAdSelectionBiddingLogicJsVersion() { |
| return FLEDGE_AD_SELECTION_BIDDING_LOGIC_JS_VERSION; |
| } |
| |
| /** |
| * Returns the time out constant in milliseconds that limits the overall impression reporting |
| * execution |
| */ |
| default long getReportImpressionOverallTimeoutMs() { |
| return FLEDGE_REPORT_IMPRESSION_OVERALL_TIMEOUT_MS; |
| } |
| |
| /** |
| * Returns the maximum number of {@link |
| * com.android.adservices.data.adselection.DBRegisteredAdInteraction} that can be in the {@code |
| * registered_ad_interactions} database at any one time. |
| */ |
| default long getFledgeReportImpressionMaxRegisteredAdBeaconsTotalCount() { |
| return FLEDGE_REPORT_IMPRESSION_MAX_REGISTERED_AD_BEACONS_TOTAL_COUNT; |
| } |
| |
| /** |
| * Returns the maximum number of {@link |
| * com.android.adservices.data.adselection.DBRegisteredAdInteraction} that an ad-tech can |
| * register in one call to {@code reportImpression}. |
| */ |
| default long getFledgeReportImpressionMaxRegisteredAdBeaconsPerAdTechCount() { |
| return FLEDGE_REPORT_IMPRESSION_MAX_REGISTERED_AD_BEACONS_PER_AD_TECH_COUNT; |
| } |
| |
| /** |
| * Returns the maximum size in bytes of {@link |
| * com.android.adservices.data.adselection.DBRegisteredAdInteraction#getInteractionKey()} |
| */ |
| default long getFledgeReportImpressionRegisteredAdBeaconsMaxInteractionKeySizeB() { |
| return FLEDGE_REPORT_IMPRESSION_REGISTERED_AD_BEACONS_MAX_INTERACTION_KEY_SIZE_B; |
| } |
| |
| /** |
| * Returns the maximum size in bytes of {@link |
| * com.android.adservices.data.adselection.DBRegisteredAdInteraction#getInteractionReportingUri()} |
| */ |
| default long getFledgeReportImpressionMaxInteractionReportingUriSizeB() { |
| return FLEDGE_REPORT_IMPRESSION_MAX_INTERACTION_REPORTING_URI_SIZE_B; |
| } |
| |
| // 24 hours in seconds |
| long FLEDGE_AD_SELECTION_EXPIRATION_WINDOW_S = 60 * 60 * 24; |
| |
| /** |
| * Returns the amount of time in seconds after which ad selection data is considered expired. |
| */ |
| default long getAdSelectionExpirationWindowS() { |
| return FLEDGE_AD_SELECTION_EXPIRATION_WINDOW_S; |
| } |
| |
| // Filtering feature flag disabled by default |
| boolean FLEDGE_AD_SELECTION_FILTERING_ENABLED = false; |
| |
| /** Returns {@code true} if negative filtering of ads during ad selection is enabled. */ |
| default boolean getFledgeAdSelectionFilteringEnabled() { |
| return FLEDGE_AD_SELECTION_FILTERING_ENABLED; |
| } |
| |
| // Enable contextual Ads feature, based on Filtering feature enabled or not |
| boolean FLEDGE_AD_SELECTION_CONTEXTUAL_ADS_ENABLED = FLEDGE_AD_SELECTION_FILTERING_ENABLED; |
| |
| /** Returns {@code true} if negative filtering of ads during ad selection is enabled. */ |
| default boolean getFledgeAdSelectionContextualAdsEnabled() { |
| return FLEDGE_AD_SELECTION_CONTEXTUAL_ADS_ENABLED; |
| } |
| |
| // Enable FLEDGE fetchAndJoinCustomAudience API. |
| boolean FLEDGE_FETCH_CUSTOM_AUDIENCE_ENABLED = false; |
| |
| /** Returns {@code true} if FLEDGE fetchAndJoinCustomAudience API is enabled. */ |
| default boolean getFledgeFetchCustomAudienceEnabled() { |
| return FLEDGE_FETCH_CUSTOM_AUDIENCE_ENABLED; |
| } |
| |
| boolean FLEDGE_AD_SELECTION_OFF_DEVICE_ENABLED = false; |
| |
| /** @return whether to call trusted servers for off device ad selection. */ |
| default boolean getAdSelectionOffDeviceEnabled() { |
| return FLEDGE_AD_SELECTION_OFF_DEVICE_ENABLED; |
| } |
| |
| boolean FLEDGE_AD_SELECTION_PREBUILT_URI_ENABLED = false; |
| |
| /** @return whether to call trusted servers for off device ad selection. */ |
| default boolean getFledgeAdSelectionPrebuiltUriEnabled() { |
| return FLEDGE_AD_SELECTION_PREBUILT_URI_ENABLED; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_ENABLED = false; |
| |
| /** |
| * @return whether to enable server auction support in post-auction APIs. |
| */ |
| default boolean getFledgeAuctionServerEnabled() { |
| return FLEDGE_AUCTION_SERVER_ENABLED; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_ENABLED_FOR_REPORT_IMPRESSION = true; |
| |
| /** |
| * @return whether to enable server auction support in report impression. |
| */ |
| default boolean getFledgeAuctionServerEnabledForReportImpression() { |
| return getFledgeAuctionServerEnabled() |
| && FLEDGE_AUCTION_SERVER_ENABLED_FOR_REPORT_IMPRESSION; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_ENABLED_FOR_REPORT_EVENT = true; |
| |
| /** |
| * @return whether to enable server auction support in report event API. |
| */ |
| default boolean getFledgeAuctionServerEnabledForReportEvent() { |
| return getFledgeAuctionServerEnabled() && FLEDGE_AUCTION_SERVER_ENABLED_FOR_REPORT_EVENT; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_ENABLED_FOR_UPDATE_HISTOGRAM = true; |
| |
| /** |
| * @return whether to enable server auction support in update histogram API. |
| */ |
| default boolean getFledgeAuctionServerEnabledForUpdateHistogram() { |
| return getFledgeAuctionServerEnabled() |
| && FLEDGE_AUCTION_SERVER_ENABLED_FOR_UPDATE_HISTOGRAM; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_ENABLED_FOR_SELECT_ADS_MEDIATION = true; |
| |
| /** |
| * @return whether to enable server auction support in select ads mediation API. |
| */ |
| default boolean getFledgeAuctionServerEnabledForSelectAdsMediation() { |
| return getFledgeAuctionServerEnabled() |
| && FLEDGE_AUCTION_SERVER_ENABLED_FOR_SELECT_ADS_MEDIATION; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_ENABLE_AD_FILTER_IN_GET_AD_SELECTION_DATA = true; |
| |
| /** |
| * @return whether to enable ad filtering in get ad selection data API. |
| */ |
| default boolean getFledgeAuctionServerEnableAdFilterInGetAdSelectionData() { |
| return FLEDGE_AUCTION_SERVER_ENABLE_AD_FILTER_IN_GET_AD_SELECTION_DATA; |
| } |
| |
| ImmutableList<Integer> FLEDGE_AUCTION_SERVER_PAYLOAD_BUCKET_SIZES = |
| ImmutableList.of(0, 1024, 2048, 4096, 8192, 16384, 32768, 65536); |
| |
| /** Returns available bucket sizes for auction server payloads. */ |
| default ImmutableList<Integer> getFledgeAuctionServerPayloadBucketSizes() { |
| return FLEDGE_AUCTION_SERVER_PAYLOAD_BUCKET_SIZES; |
| } |
| |
| // TODO(b/291680065): Remove when owner field is returned from B&A |
| boolean FLEDGE_AUCTION_SERVER_FORCE_SEARCH_WHEN_OWNER_IS_ABSENT_ENABLED = false; |
| |
| /** |
| * @return true if forcing {@link |
| * android.adservices.adselection.AdSelectionManager#persistAdSelectionResult} to continue |
| * when owner is null, otherwise false. |
| */ |
| default boolean getFledgeAuctionServerForceSearchWhenOwnerIsAbsentEnabled() { |
| return FLEDGE_AUCTION_SERVER_FORCE_SEARCH_WHEN_OWNER_IS_ABSENT_ENABLED; |
| } |
| |
| boolean FLEDGE_EVENT_LEVEL_DEBUG_REPORTING_ENABLED = false; |
| |
| /** |
| * @return whether to call remote URLs for debug reporting. |
| */ |
| default boolean getFledgeEventLevelDebugReportingEnabled() { |
| return FLEDGE_EVENT_LEVEL_DEBUG_REPORTING_ENABLED; |
| } |
| |
| boolean FLEDGE_EVENT_LEVEL_DEBUG_REPORT_SEND_IMMEDIATELY = false; |
| |
| /** |
| * @return whether to call remote URLs for debug reporting. |
| */ |
| default boolean getFledgeEventLevelDebugReportSendImmediately() { |
| return FLEDGE_EVENT_LEVEL_DEBUG_REPORT_SEND_IMMEDIATELY; |
| } |
| |
| int FLEDGE_EVENT_LEVEL_DEBUG_REPORTING_BATCH_DELAY_SECONDS = 60 * 15; |
| |
| /** |
| * @return minimum number of seconds between debug report batch. |
| */ |
| default int getFledgeEventLevelDebugReportingBatchDelaySeconds() { |
| return FLEDGE_EVENT_LEVEL_DEBUG_REPORTING_BATCH_DELAY_SECONDS; |
| } |
| |
| int FLEDGE_EVENT_LEVEL_DEBUG_REPORTING_MAX_ITEMS_PER_BATCH = 1000; |
| |
| /** |
| * @return maximum number of items in a debug report batch. |
| */ |
| default int getFledgeEventLevelDebugReportingMaxItemsPerBatch() { |
| return FLEDGE_EVENT_LEVEL_DEBUG_REPORTING_MAX_ITEMS_PER_BATCH; |
| } |
| |
| int FLEDGE_DEBUG_REPORT_SENDER_JOB_NETWORK_CONNECT_TIMEOUT_MS = 5 * 1000; // 5 seconds |
| |
| /** |
| * @return the maximum time in milliseconds allowed for a network call to open its initial |
| * connection during the FLEDGE debug report sender job. |
| */ |
| default int getFledgeDebugReportSenderJobNetworkConnectionTimeoutMs() { |
| return FLEDGE_DEBUG_REPORT_SENDER_JOB_NETWORK_CONNECT_TIMEOUT_MS; |
| } |
| |
| int FLEDGE_DEBUG_REPORT_SENDER_JOB_NETWORK_READ_TIMEOUT_MS = 30 * 1000; // 30 seconds |
| |
| /** |
| * @return the maximum time in milliseconds allowed for a network call to read a response from a |
| * target server during the FLEDGE debug report sender job. |
| */ |
| default int getFledgeDebugReportSenderJobNetworkReadTimeoutMs() { |
| return FLEDGE_DEBUG_REPORT_SENDER_JOB_NETWORK_READ_TIMEOUT_MS; |
| } |
| |
| long FLEDGE_DEBUG_REPORT_SENDER_JOB_MAX_RUNTIME_MS = 10L * 60L * 1000L; // 5 minutes |
| |
| /** |
| * @return the maximum amount of time (in milliseconds) each FLEDGE debug report sender job is |
| * allowed to run. |
| */ |
| default long getFledgeDebugReportSenderJobMaxRuntimeMs() { |
| return FLEDGE_DEBUG_REPORT_SENDER_JOB_MAX_RUNTIME_MS; |
| } |
| |
| long FLEDGE_DEBUG_REPORT_SENDER_JOB_PERIOD_MS = TimeUnit.MINUTES.toMillis(10); |
| |
| /** |
| * @return the best effort max time (in milliseconds) between each FLEDGE debug report sender |
| * job run. |
| */ |
| default long getFledgeDebugReportSenderJobPeriodMs() { |
| return FLEDGE_DEBUG_REPORT_SENDER_JOB_PERIOD_MS; |
| } |
| |
| long FLEDGE_DEBUG_REPORT_SENDER_JOB_FLEX_MS = TimeUnit.MINUTES.toMillis(2); |
| |
| /** |
| * @return the amount of flex (in milliseconds) around the end of each period to run each FLEDGE |
| * debug report sender job. |
| */ |
| default long getFledgeDebugReportSenderJobFlexMs() { |
| return FLEDGE_DEBUG_REPORT_SENDER_JOB_FLEX_MS; |
| } |
| |
| boolean FLEDGE_AD_SELECTION_OFF_DEVICE_REQUEST_COMPRESSION_ENABLED = true; |
| |
| /** Returns whether to compress requests sent off device for ad selection. */ |
| default boolean getAdSelectionOffDeviceRequestCompressionEnabled() { |
| return FLEDGE_AD_SELECTION_OFF_DEVICE_REQUEST_COMPRESSION_ENABLED; |
| } |
| |
| /** The server uses the following version numbers: 1. Brotli : 1 2. Gzip : 2 */ |
| int FLEDGE_AUCTION_SERVER_COMPRESSION_ALGORITHM_VERSION = 2; |
| |
| /** Returns the compression algorithm version */ |
| default int getFledgeAuctionServerCompressionAlgorithmVersion() { |
| return FLEDGE_AUCTION_SERVER_COMPRESSION_ALGORITHM_VERSION; |
| } |
| |
| String FLEDGE_AUCTION_SERVER_AUCTION_KEY_FETCH_URI = |
| "https://publickeyservice-test1.bas-kms.xyz/v1alpha/publicKeys"; |
| |
| /** |
| * @return Uri to fetch auction encryption key for fledge ad selection. |
| */ |
| default String getFledgeAuctionServerAuctionKeyFetchUri() { |
| return FLEDGE_AUCTION_SERVER_AUCTION_KEY_FETCH_URI; |
| } |
| |
| String FLEDGE_AUCTION_SERVER_JOIN_KEY_FETCH_URI = |
| "https://chromekanonymity-pa.googleapis.com/v1/proxy/keys"; |
| |
| /** |
| * @return Uri to fetch join encryption key for fledge ad selection. |
| */ |
| default String getFledgeAuctionServerJoinKeyFetchUri() { |
| return FLEDGE_AUCTION_SERVER_JOIN_KEY_FETCH_URI; |
| } |
| |
| int FLEDGE_AUCTION_SERVER_AUCTION_KEY_SHARDING = 5; |
| |
| /** |
| * @return Shard count for using auction key for fledge ad selection. |
| */ |
| default int getFledgeAuctionServerAuctionKeySharding() { |
| return FLEDGE_AUCTION_SERVER_AUCTION_KEY_SHARDING; |
| } |
| |
| long FLEDGE_AUCTION_SERVER_ENCRYPTION_KEY_MAX_AGE_SECONDS = TimeUnit.DAYS.toSeconds(14); |
| |
| default long getFledgeAuctionServerEncryptionKeyMaxAgeSeconds() { |
| return FLEDGE_AUCTION_SERVER_ENCRYPTION_KEY_MAX_AGE_SECONDS; |
| } |
| |
| int FLEDGE_AUCTION_SERVER_ENCRYPTION_ALGORITHM_KDF_ID = 0x0001; |
| |
| default int getFledgeAuctionServerEncryptionAlgorithmKdfId() { |
| return FLEDGE_AUCTION_SERVER_ENCRYPTION_ALGORITHM_KDF_ID; |
| } |
| |
| int FLEDGE_AUCTION_SERVER_ENCRYPTION_ALGORITHM_KEM_ID = 0x0020; |
| |
| default int getFledgeAuctionServerEncryptionAlgorithmKemId() { |
| return FLEDGE_AUCTION_SERVER_ENCRYPTION_ALGORITHM_KEM_ID; |
| } |
| |
| int FLEDGE_AUCTION_SERVER_ENCRYPTION_ALGORITHM_AEAD_ID = 0x0002; |
| |
| default int getFledgeAuctionServerEncryptionAlgorithmAeadId() { |
| return FLEDGE_AUCTION_SERVER_ENCRYPTION_ALGORITHM_AEAD_ID; |
| } |
| |
| int FLEDGE_AUCTION_SERVER_PAYLOAD_FORMAT_VERSION = 0; |
| |
| /** Returns the payload formatter version */ |
| default int getFledgeAuctionServerPayloadFormatVersion() { |
| return FLEDGE_AUCTION_SERVER_PAYLOAD_FORMAT_VERSION; |
| } |
| |
| long FLEDGE_AUCTION_SERVER_AUCTION_KEY_FETCH_TIMEOUT_MS = 3000; |
| |
| default long getFledgeAuctionServerAuctionKeyFetchTimeoutMs() { |
| return FLEDGE_AUCTION_SERVER_AUCTION_KEY_FETCH_TIMEOUT_MS; |
| } |
| |
| long FLEDGE_AUCTION_SERVER_OVERALL_TIMEOUT_MS = 5000; |
| |
| default long getFledgeAuctionServerOverallTimeoutMs() { |
| return FLEDGE_AUCTION_SERVER_OVERALL_TIMEOUT_MS; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_JOB_ENABLED = false; |
| |
| /** Returns whether to run periodic job to fetch encryption keys. */ |
| default boolean getFledgeAuctionServerBackgroundKeyFetchJobEnabled() { |
| return FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_JOB_ENABLED; |
| } |
| |
| int FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_NETWORK_CONNECT_TIMEOUT_MS = |
| 5 * 1000; // 5 seconds |
| |
| /** |
| * Returns the maximum time in milliseconds allowed for a network call to open its initial |
| * connection during the FLEDGE encryption key fetch. |
| */ |
| default int getFledgeAuctionServerBackgroundKeyFetchNetworkConnectTimeoutMs() { |
| return FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_NETWORK_CONNECT_TIMEOUT_MS; |
| } |
| |
| int FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_NETWORK_READ_TIMEOUT_MS = |
| 30 * 1000; // 30 seconds |
| |
| /** |
| * Returns the maximum time in milliseconds allowed for a network call to read a response from a |
| * target server during the FLEDGE encryption key fetch. |
| */ |
| default int getFledgeAuctionServerBackgroundKeyFetchNetworkReadTimeoutMs() { |
| return FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_NETWORK_READ_TIMEOUT_MS; |
| } |
| |
| int FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_MAX_RESPONSE_SIZE_B = 2 * 1024; // 2 KiB |
| |
| /** |
| * Returns the maximum size in bytes of a single key fetch response during the FLEDGE encryption |
| * key fetch. |
| */ |
| default int getFledgeAuctionServerBackgroundKeyFetchMaxResponseSizeB() { |
| return FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_MAX_RESPONSE_SIZE_B; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_BACKGROUND_AUCTION_KEY_FETCH_ENABLED = false; |
| |
| /** Returns whether to run periodic job to fetch AUCTION keys. */ |
| default boolean getFledgeAuctionServerBackgroundAuctionKeyFetchEnabled() { |
| return getFledgeAuctionServerBackgroundKeyFetchJobEnabled() |
| && FLEDGE_AUCTION_SERVER_BACKGROUND_AUCTION_KEY_FETCH_ENABLED; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_BACKGROUND_JOIN_KEY_FETCH_ENABLED = false; |
| |
| /** Returns whether to run periodic job to fetch JOIN keys. */ |
| default boolean getFledgeAuctionServerBackgroundJoinKeyFetchEnabled() { |
| return getFledgeAuctionServerBackgroundKeyFetchJobEnabled() |
| && FLEDGE_AUCTION_SERVER_BACKGROUND_JOIN_KEY_FETCH_ENABLED; |
| } |
| |
| long FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_MAX_RUNTIME_MS = TimeUnit.MINUTES.toMillis(5); |
| |
| /** |
| * Returns the maximum amount of time (in milliseconds) each Ad selection Background key Fetch |
| * job is allowed to run. |
| */ |
| default long getFledgeAuctionServerBackgroundKeyFetchJobMaxRuntimeMs() { |
| return FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_MAX_RUNTIME_MS; |
| } |
| |
| long FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_JOB_PERIOD_MS = TimeUnit.HOURS.toMillis(24); |
| |
| /** |
| * Returns the best effort max time (in milliseconds) between each Background Key Fetch job run. |
| */ |
| default long getFledgeAuctionServerBackgroundKeyFetchJobPeriodMs() { |
| return FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_JOB_PERIOD_MS; |
| } |
| |
| long FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_JOB_FLEX_MS = TimeUnit.HOURS.toMillis(2); |
| |
| /** |
| * Returns the amount of flex (in milliseconds) around the end of each period to run each |
| * Background Key Fetch job. |
| */ |
| default long getFledgeAuctionServerBackgroundKeyFetchJobFlexMs() { |
| return FLEDGE_AUCTION_SERVER_BACKGROUND_KEY_FETCH_JOB_FLEX_MS; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_ENABLE_DEBUG_REPORTING = true; |
| |
| default boolean getFledgeAuctionServerEnableDebugReporting() { |
| return FLEDGE_AUCTION_SERVER_ENABLE_DEBUG_REPORTING; |
| } |
| |
| boolean FLEDGE_AUCTION_SERVER_AD_RENDER_ID_ENABLED = false; |
| long FLEDGE_AUCTION_SERVER_AD_RENDER_ID_MAX_LENGTH = 12L; |
| |
| /** Returns whether ad render id is enabled. */ |
| default boolean getFledgeAuctionServerAdRenderIdEnabled() { |
| return FLEDGE_AUCTION_SERVER_AD_RENDER_ID_ENABLED; |
| } |
| |
| /** Returns the max length of Ad Render Id. */ |
| default long getFledgeAuctionServerAdRenderIdMaxLength() { |
| return FLEDGE_AUCTION_SERVER_AD_RENDER_ID_MAX_LENGTH; |
| } |
| |
| // Protected signals cleanup feature flag disabled by default |
| boolean PROTECTED_SIGNALS_CLEANUP_ENABLED = false; |
| |
| /** Returns {@code true} if protected signals cleanup is enabled. */ |
| default boolean getProtectedSignalsCleanupEnabled() { |
| return PROTECTED_SIGNALS_CLEANUP_ENABLED; |
| } |
| |
| boolean ADSERVICES_ENABLED = false; |
| |
| default boolean getAdServicesEnabled() { |
| return ADSERVICES_ENABLED; |
| } |
| |
| boolean ADSERVICES_ERROR_LOGGING_ENABLED = false; |
| |
| /** Return {@code true} if error logging is enabled */ |
| default boolean getAdServicesErrorLoggingEnabled() { |
| return ADSERVICES_ERROR_LOGGING_ENABLED; |
| } |
| |
| /** Dump some debug info for the flags */ |
| default void dump(@NonNull PrintWriter writer, @Nullable String[] args) {} |
| |
| /** |
| * The number of epoch to look back to do garbage collection for old epoch data. Assume current |
| * Epoch is T, then any epoch data of (T-NUMBER_OF_EPOCHS_TO_KEEP_IN_HISTORY-1) (inclusive) |
| * should be erased |
| */ |
| int NUMBER_OF_EPOCHS_TO_KEEP_IN_HISTORY = TOPICS_NUMBER_OF_LOOK_BACK_EPOCHS; |
| |
| /* |
| * Return the number of epochs to keep in the history |
| */ |
| default int getNumberOfEpochsToKeepInHistory() { |
| return NUMBER_OF_EPOCHS_TO_KEEP_IN_HISTORY; |
| } |
| |
| /** Downloader Connection Timeout in Milliseconds. */ |
| int DOWNLOADER_CONNECTION_TIMEOUT_MS = 10 * 1000; // 10 seconds. |
| |
| /* |
| * Return the Downloader Connection Timeout in Milliseconds. |
| */ |
| default int getDownloaderConnectionTimeoutMs() { |
| return DOWNLOADER_CONNECTION_TIMEOUT_MS; |
| } |
| |
| /** Downloader Read Timeout in Milliseconds. */ |
| int DOWNLOADER_READ_TIMEOUT_MS = 10 * 1000; // 10 seconds. |
| |
| /** Returns the Downloader Read Timeout in Milliseconds. */ |
| default int getDownloaderReadTimeoutMs() { |
| return DOWNLOADER_READ_TIMEOUT_MS; |
| } |
| |
| /** Downloader max download threads. */ |
| int DOWNLOADER_MAX_DOWNLOAD_THREADS = 2; |
| |
| /** Returns the Downloader Read Timeout in Milliseconds. */ |
| default int getDownloaderMaxDownloadThreads() { |
| return DOWNLOADER_MAX_DOWNLOAD_THREADS; |
| } |
| |
| /** MDD Topics API Classifier Manifest Url. Topics classifier v2-3. Build_id = 1467. */ |
| String MDD_TOPICS_CLASSIFIER_MANIFEST_FILE_URL = |
| "https://www.gstatic.com/mdi-serving/rubidium-adservices-topics-classifier/1467/80c34503413cea9ea44cbe94cd38dabc44ea8d70"; |
| |
| default String getMddTopicsClassifierManifestFileUrl() { |
| return MDD_TOPICS_CLASSIFIER_MANIFEST_FILE_URL; |
| } |
| |
| boolean CONSENT_MANAGER_LAZY_ENABLE_MODE = true; |
| |
| default boolean getConsentManagerLazyEnableMode() { |
| return CONSENT_MANAGER_LAZY_ENABLE_MODE; |
| } |
| |
| long CONSENT_NOTIFICATION_INTERVAL_BEGIN_MS = |
| /* hours */ 9 * /* minutes */ 60 * /* seconds */ 60 * /* milliseconds */ 1000; // 9 AM |
| |
| default long getConsentNotificationIntervalBeginMs() { |
| return CONSENT_NOTIFICATION_INTERVAL_BEGIN_MS; |
| } |
| |
| long CONSENT_NOTIFICATION_INTERVAL_END_MS = |
| /* hours */ 17 * /* minutes */ 60 * /* seconds */ 60 * /* milliseconds */ 1000; // 5 PM |
| |
| default long getConsentNotificationIntervalEndMs() { |
| return CONSENT_NOTIFICATION_INTERVAL_END_MS; |
| } |
| |
| long CONSENT_NOTIFICATION_MINIMAL_DELAY_BEFORE_INTERVAL_ENDS = |
| /* minutes */ 60 * /* seconds */ 60 * /* milliseconds */ 1000; // 1 hour |
| |
| default long getConsentNotificationMinimalDelayBeforeIntervalEnds() { |
| return CONSENT_NOTIFICATION_MINIMAL_DELAY_BEFORE_INTERVAL_ENDS; |
| } |
| |
| boolean CONSENT_NOTIFICATION_DEBUG_MODE = false; |
| |
| default boolean getConsentNotificationDebugMode() { |
| return CONSENT_NOTIFICATION_DEBUG_MODE; |
| } |
| |
| /** The consent notification activity debug mode is off by default. */ |
| boolean CONSENT_NOTIFICATION_ACTIVITY_DEBUG_MODE = false; |
| |
| /** Returns the consent notification activity debug mode. */ |
| default boolean getConsentNotificationActivityDebugMode() { |
| return CONSENT_NOTIFICATION_ACTIVITY_DEBUG_MODE; |
| } |
| |
| boolean CONSENT_NOTIFIED_DEBUG_MODE = false; |
| |
| /** Returns whether to suppress consent notified state. */ |
| default boolean getConsentNotifiedDebugMode() { |
| return CONSENT_NOTIFIED_DEBUG_MODE; |
| } |
| |
| boolean CONSENT_MANAGER_DEBUG_MODE = false; |
| |
| default boolean getConsentManagerDebugMode() { |
| return CONSENT_MANAGER_DEBUG_MODE; |
| } |
| |
| /** Available sources of truth to get consent for PPAPI. */ |
| @IntDef( |
| flag = true, |
| value = { |
| SYSTEM_SERVER_ONLY, |
| PPAPI_ONLY, |
| PPAPI_AND_SYSTEM_SERVER, |
| APPSEARCH_ONLY, |
| PPAPI_AND_ADEXT_SERVICE, |
| }) |
| @Retention(RetentionPolicy.SOURCE) |
| @interface ConsentSourceOfTruth {} |
| |
| /** Write and read consent from system server only. */ |
| int SYSTEM_SERVER_ONLY = FlagsConstants.SYSTEM_SERVER_ONLY; |
| |
| /** Write and read consent from PPAPI only */ |
| int PPAPI_ONLY = FlagsConstants.PPAPI_ONLY; |
| |
| /** Write consent to both PPAPI and system server. Read consent from system server only. */ |
| int PPAPI_AND_SYSTEM_SERVER = FlagsConstants.PPAPI_AND_SYSTEM_SERVER; |
| |
| /** |
| * Write consent data to AppSearch only. To store consent data in AppSearch the flag |
| * enable_appsearch_consent_data must also be true. This ensures that both writes and reads can |
| * happen to/from AppSearch. The writes are done by code on S-, while reads are done from code |
| * running on S- for all consent requests and on T+ once after OTA. |
| */ |
| int APPSEARCH_ONLY = FlagsConstants.APPSEARCH_ONLY; |
| |
| /** |
| * Read and write data that need to be rollback-safe from AdServicesExtDataStorageService; rest |
| * can be handled by PPAPI_API only. This is intended to be used on Android R as AppSearch and |
| * system server are unavailable. |
| */ |
| int PPAPI_AND_ADEXT_SERVICE = FlagsConstants.PPAPI_AND_ADEXT_SERVICE; |
| |
| /** |
| * Consent source of truth intended to be used by default. On S devices, there is no AdServices |
| * code running in the system server, so the default is APPSEARCH_ONLY. On R devices, there is |
| * no system server and appseach, so the default is PPAPI_AND_ADEXT_SERVICE_ONLY. |
| */ |
| @ConsentSourceOfTruth |
| int DEFAULT_CONSENT_SOURCE_OF_TRUTH = |
| SdkLevel.isAtLeastT() |
| ? PPAPI_AND_SYSTEM_SERVER |
| : (SdkLevel.isAtLeastS() ? APPSEARCH_ONLY : PPAPI_AND_ADEXT_SERVICE); |
| |
| /** Returns the consent source of truth currently used for PPAPI. */ |
| @ConsentSourceOfTruth |
| default int getConsentSourceOfTruth() { |
| return DEFAULT_CONSENT_SOURCE_OF_TRUTH; |
| } |
| |
| /** |
| * Blocked topics source of truth intended to be used by default. On S devices, there is no |
| * AdServices code running in the system server, so the default is APPSEARCH_ONLY. On R devices, |
| * there is no system server and appseach, so the default is PPAPI_ADEXT_SERVICE_ONLY. However, |
| * note that topics is not supported on R. |
| */ |
| @ConsentSourceOfTruth |
| int DEFAULT_BLOCKED_TOPICS_SOURCE_OF_TRUTH = |
| SdkLevel.isAtLeastT() |
| ? PPAPI_AND_SYSTEM_SERVER |
| : (SdkLevel.isAtLeastS() ? APPSEARCH_ONLY : PPAPI_AND_ADEXT_SERVICE); |
| |
| /** Returns the blocked topics source of truth currently used for PPAPI */ |
| @ConsentSourceOfTruth |
| default int getBlockedTopicsSourceOfTruth() { |
| return DEFAULT_BLOCKED_TOPICS_SOURCE_OF_TRUTH; |
| } |
| |
| /** |
| * The debug and release SHA certificates of the AdServices APK. This is required when writing |
| * consent data to AppSearch in order to allow reads from T+ APK. This is a comma separated |
| * list. |
| */ |
| String ADSERVICES_APK_SHA_CERTIFICATE = |
| "686d5c450e00ebe600f979300a29234644eade42f24ede07a073f2bc6b94a3a2," // debug |
| + "80f8fbb9a026807f58d98dbc28bf70724d8f66bbfcec997c6bdc0102c3230dee"; // release |
| |
| /** Only App signatures belonging to this Allow List can use PP APIs. */ |
| default String getAdservicesApkShaCertificate() { |
| return ADSERVICES_APK_SHA_CERTIFICATE; |
| } |
| |
| // Group of All Killswitches |
| |
| /** |
| * Global PP API Kill Switch. This overrides all other killswitches. The default value is false |
| * which means the PP API is enabled. This flag is used for emergency turning off the whole PP |
| * API. |
| */ |
| // Starting M-2023-05, global kill switch is enabled in the binary. Prior to this (namely in |
| // M-2022-11), the value of this flag in the binary was false. |
| boolean GLOBAL_KILL_SWITCH = true; |
| |
| default boolean getGlobalKillSwitch() { |
| return GLOBAL_KILL_SWITCH; |
| } |
| |
| // MEASUREMENT Killswitches |
| |
| /** |
| * Measurement Kill Switch. This overrides all specific measurement kill switch. The default |
| * value is false which means that Measurement is enabled. This flag is used for emergency |
| * turning off the whole Measurement API. |
| */ |
| boolean MEASUREMENT_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Global Measurement. Measurement will be disabled if either |
| * the Global Kill Switch or the Measurement Kill Switch value is true. |
| */ |
| default boolean getMeasurementKillSwitch() { |
| return MEASUREMENT_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement API Delete Registrations Kill Switch. The default value is false which means |
| * Delete Registrations API is enabled. This flag is used for emergency turning off the Delete |
| * Registrations API. |
| */ |
| boolean MEASUREMENT_API_DELETE_REGISTRATIONS_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement API Delete Registrations. The API will be |
| * disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement API |
| * Delete Registration Kill Switch value is true. |
| */ |
| default boolean getMeasurementApiDeleteRegistrationsKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_API_DELETE_REGISTRATIONS_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement API Status Kill Switch. The default value is false which means Status API is |
| * enabled. This flag is used for emergency turning off the Status API. |
| */ |
| boolean MEASUREMENT_API_STATUS_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement API Status. The API will be disabled if either |
| * the Global Kill Switch, Measurement Kill Switch, or the Measurement API Status Kill Switch |
| * value is true. |
| */ |
| default boolean getMeasurementApiStatusKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_API_STATUS_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement API Register Source Kill Switch. The default value is false which means Register |
| * Source API is enabled. This flag is used for emergency turning off the Register Source API. |
| */ |
| boolean MEASUREMENT_API_REGISTER_SOURCE_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement API Register Source. The API will be disabled |
| * if either the Global Kill Switch, Measurement Kill Switch, or the Measurement API Register |
| * Source Kill Switch value is true. |
| */ |
| default boolean getMeasurementApiRegisterSourceKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_API_REGISTER_SOURCE_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement API Register Trigger Kill Switch. The default value is false which means Register |
| * Trigger API is enabled. This flag is used for emergency turning off the Register Trigger API. |
| */ |
| boolean MEASUREMENT_API_REGISTER_TRIGGER_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement API Register Trigger. The API will be disabled |
| * if either the Global Kill Switch, Measurement Kill Switch, or the Measurement API Register |
| * Trigger Kill Switch value is true. |
| */ |
| default boolean getMeasurementApiRegisterTriggerKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_API_REGISTER_TRIGGER_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement API Register Web Source Kill Switch. The default value is false which means |
| * Register Web Source API is enabled. This flag is used for emergency turning off the Register |
| * Web Source API. |
| */ |
| boolean MEASUREMENT_API_REGISTER_WEB_SOURCE_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement API Register Web Source. The API will be |
| * disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement API |
| * Register Web Source Kill Switch value is true. |
| */ |
| default boolean getMeasurementApiRegisterWebSourceKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_API_REGISTER_WEB_SOURCE_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement API Register Sources Kill Switch. The default value is false which means Register |
| * Sources API is enabled. This flag is used for emergency turning off the Register Sources API. |
| */ |
| boolean MEASUREMENT_API_REGISTER_SOURCES_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement API Register Sources. The API will be disabled |
| * if either the Global Kill Switch, Measurement Kill Switch, or the Measurement API Register |
| * Sources Kill Switch value is true. |
| */ |
| default boolean getMeasurementApiRegisterSourcesKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_API_REGISTER_SOURCES_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement API Register Web Trigger Kill Switch. The default value is false which means |
| * Register Web Trigger API is enabled. This flag is used for emergency turning off the Register |
| * Web Trigger API. |
| */ |
| boolean MEASUREMENT_API_REGISTER_WEB_TRIGGER_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement API Register Web Trigger. The API will be |
| * disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement API |
| * Register Web Trigger Kill Switch value is true. |
| */ |
| default boolean getMeasurementApiRegisterWebTriggerKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_API_REGISTER_WEB_TRIGGER_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Job Aggregate Fallback Reporting Kill Switch. The default value is false which |
| * means Aggregate Fallback Reporting Job is enabled. This flag is used for emergency turning |
| * off the Aggregate Fallback Reporting Job. |
| */ |
| boolean MEASUREMENT_JOB_AGGREGATE_FALLBACK_REPORTING_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Aggregate Fallback Reporting. The API will |
| * be disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job |
| * Aggregate Fallback Reporting Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobAggregateFallbackReportingKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_AGGREGATE_FALLBACK_REPORTING_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Job Aggregate Reporting Kill Switch. The default value is false which means |
| * Aggregate Reporting Job is enabled. This flag is used for emergency turning off the Aggregate |
| * Reporting Job. |
| */ |
| boolean MEASUREMENT_JOB_AGGREGATE_REPORTING_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Aggregate Reporting. The API will be |
| * disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job |
| * Aggregate Reporting Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobAggregateReportingKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_AGGREGATE_REPORTING_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Job Attribution Kill Switch. The default value is false which means Attribution |
| * Job is enabled. This flag is used for emergency turning off the Attribution Job. |
| */ |
| boolean MEASUREMENT_JOB_ATTRIBUTION_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Attribution. The API will be disabled if |
| * either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job Attribution |
| * Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobAttributionKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_ATTRIBUTION_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Job Delete Expired Kill Switch. The default value is false which means Delete |
| * Expired Job is enabled. This flag is used for emergency turning off the Delete Expired Job. |
| */ |
| boolean MEASUREMENT_JOB_DELETE_EXPIRED_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Delete Expired. The API will be disabled if |
| * either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job Delete Expired |
| * Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobDeleteExpiredKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_DELETE_EXPIRED_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Job Delete Uninstalled Kill Switch. The default value is false which means Delete |
| * Uninstalled Job is enabled. This flag is used for emergency turning off the Delete |
| * Uninstalled Job. |
| */ |
| boolean MEASUREMENT_JOB_DELETE_UNINSTALLED_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Delete Uninstalled. The API will be |
| * disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job |
| * Delete Uninstalled Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobDeleteUninstalledKillSwitch() { |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_DELETE_UNINSTALLED_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Job Event Fallback Reporting Kill Switch. The default value is false which means |
| * Event Fallback Reporting Job is enabled. This flag is used for emergency turning off the |
| * Event Fallback Reporting Job. |
| */ |
| boolean MEASUREMENT_JOB_EVENT_FALLBACK_REPORTING_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Event Fallback Reporting. The API will be |
| * disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job |
| * Event Fallback Reporting Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobEventFallbackReportingKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_EVENT_FALLBACK_REPORTING_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Job Event Reporting Kill Switch. The default value is false which means Event |
| * Reporting Job is enabled. This flag is used for emergency turning off the Event Reporting |
| * Job. |
| */ |
| boolean MEASUREMENT_JOB_EVENT_REPORTING_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Event Reporting. The API will be disabled |
| * if either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job Event |
| * Reporting Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobEventReportingKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_EVENT_REPORTING_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Job Debug Reporting Kill Switch. The default value is false which means Debug |
| * Reporting Job is enabled. This flag is used for emergency turning off the Debug Reporting |
| * Job. |
| */ |
| boolean MEASUREMENT_JOB_DEBUG_REPORTING_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Debug Reporting. The Job will be disabled |
| * if either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job Debug |
| * Reporting Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobDebugReportingKillSwitch() { |
| // We check the Global Kill Switch first. As a result, it overrides all other kill Switches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_DEBUG_REPORTING_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Debug Reporting Fallback Job kill Switch. The default value is false which means |
| * the job is enabled. This flag is used for emergency turning off the Debug Reporting Fallback |
| * Job. |
| */ |
| boolean MEASUREMENT_DEBUG_REPORTING_FALLBACK_JOB_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for the Measurement Debug Reporting Fallback Job. The API will |
| * be disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement |
| * Debug Reporting Fallback Job kill switch value is true. |
| */ |
| default boolean getMeasurementDebugReportingFallbackJobKillSwitch() { |
| // We check the Global Kill Switch first. As a result, it overrides all other kill Switches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_DEBUG_REPORTING_FALLBACK_JOB_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Verbose Debug Reporting Fallback Job kill Switch. The default value is false |
| * which means the job is enabled. This flag is used for emergency turning off the Verbose Debug |
| * Reporting Fallback Job. |
| */ |
| boolean MEASUREMENT_VERBOSE_DEBUG_REPORTING_FALLBACK_JOB_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for the Measurement Debug Reporting Fallback Job. The API will |
| * be disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement |
| * Debug Reporting Fallback Job kill switch value is true. |
| */ |
| default boolean getMeasurementVerboseDebugReportingFallbackJobKillSwitch() { |
| // We check the Global Kill Switch first. As a result, it overrides all other kill Switches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_VERBOSE_DEBUG_REPORTING_FALLBACK_JOB_KILL_SWITCH; |
| } |
| |
| /** |
| * Returns the job period in millis for the Measurement Verbose Debug Reporting Fallback Job. |
| */ |
| long MEASUREMENT_VERBOSE_DEBUG_REPORTING_FALLBACK_JOB_PERIOD_MS = TimeUnit.HOURS.toMillis(1); |
| |
| /** |
| * Returns the job period in millis for the Measurement Verbose Debug Reporting Fallback Job. |
| */ |
| default long getMeasurementVerboseDebugReportingFallbackJobPeriodMs() { |
| return MEASUREMENT_VERBOSE_DEBUG_REPORTING_FALLBACK_JOB_PERIOD_MS; |
| } |
| |
| /** Returns the job period in millis for the Measurement Debug Reporting Fallback Job. */ |
| long MEASUREMENT_DEBUG_REPORTING_FALLBACK_JOB_PERIOD_MS = TimeUnit.HOURS.toMillis(1); |
| |
| /** Returns the job period in millis for the Measurement Debug Reporting Fallback Job. */ |
| default long getMeasurementDebugReportingFallbackJobPeriodMs() { |
| return MEASUREMENT_DEBUG_REPORTING_FALLBACK_JOB_PERIOD_MS; |
| } |
| |
| /* |
| * Measurement Job Verbose Debug Reporting Kill Switch. The default value is false which means |
| * the Verbose Debug Reporting Job is enabled. This flag is used for emergency turning off the |
| * Verbose Debug Reporting Job. |
| */ |
| boolean MEASUREMENT_JOB_VERBOSE_DEBUG_REPORTING_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Job Verbose Debug Reporting. The Job will be |
| * disabled if either the Global Kill Switch, Measurement Kill Switch, or the Measurement Job |
| * Verbose Debug Reporting Kill Switch value is true. |
| */ |
| default boolean getMeasurementJobVerboseDebugReportingKillSwitch() { |
| // We check the Global Kill Switch first. As a result, it overrides all other kill Switches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_JOB_VERBOSE_DEBUG_REPORTING_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Broadcast Receiver Install Attribution Kill Switch. The default value is false |
| * which means Install Attribution is enabled. This flag is used for emergency turning off |
| * Install Attribution Broadcast Receiver. |
| */ |
| boolean MEASUREMENT_RECEIVER_INSTALL_ATTRIBUTION_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Broadcast Receiver Install Attribution. The |
| * Broadcast Receiver will be disabled if either the Global Kill Switch, Measurement Kill Switch |
| * or the Measurement Kill Switch value is true. |
| */ |
| default boolean getMeasurementReceiverInstallAttributionKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_RECEIVER_INSTALL_ATTRIBUTION_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Broadcast Receiver Delete Packages Kill Switch. The default value is false which |
| * means Delete Packages is enabled. This flag is used for emergency turning off Delete Packages |
| * Broadcast Receiver. |
| */ |
| boolean MEASUREMENT_RECEIVER_DELETE_PACKAGES_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement Broadcast Receiver Delete Packages. The |
| * Broadcast Receiver will be disabled if either the Global Kill Switch, Measurement Kill Switch |
| * or the Measurement Kill Switch value is true. |
| */ |
| default boolean getMeasurementReceiverDeletePackagesKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_RECEIVER_DELETE_PACKAGES_KILL_SWITCH; |
| } |
| |
| /** |
| * Measurement Rollback Kill Switch. The default value is false which means the rollback |
| * handling on measurement service start is enabled. This flag is used for emergency turning off |
| * measurement rollback data deletion handling. |
| */ |
| boolean MEASUREMENT_ROLLBACK_DELETION_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Measurement rollback deletion handling. The rollback |
| * deletion handling will be disabled if the Global Kill Switch, Measurement Kill Switch or the |
| * Measurement rollback deletion Kill Switch value is true. |
| */ |
| default boolean getMeasurementRollbackDeletionKillSwitch() { |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_ROLLBACK_DELETION_KILL_SWITCH; |
| } |
| |
| /** |
| * Kill Switch for storing Measurement Rollback data in App Search for Android S. The default |
| * value is false which means storing the rollback handling data in App Search is enabled. This |
| * flag is used for emergency turning off measurement rollback data deletion handling on Android |
| * S. |
| */ |
| boolean MEASUREMENT_ROLLBACK_DELETION_APP_SEARCH_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for storing Measurement rollback deletion handling data in App |
| * Search. The rollback deletion handling on Android S will be disabled if this kill switch |
| * value is true. |
| */ |
| default boolean getMeasurementRollbackDeletionAppSearchKillSwitch() { |
| return MEASUREMENT_ROLLBACK_DELETION_APP_SEARCH_KILL_SWITCH; |
| } |
| |
| // ADID Killswitch. |
| /** |
| * AdId API Kill Switch. The default value is false which means the AdId API is enabled. This |
| * flag is used for emergency turning off the AdId API. |
| */ |
| boolean ADID_KILL_SWITCH = false; // By default, the AdId API is enabled. |
| |
| /** Gets the state of adId kill switch. */ |
| default boolean getAdIdKillSwitch() { |
| return ADID_KILL_SWITCH; |
| } |
| |
| // APPSETID Killswitch. |
| /** |
| * AppSetId API Kill Switch. The default value is false which means the AppSetId API is enabled. |
| * This flag is used for emergency turning off the AppSetId API. |
| */ |
| boolean APPSETID_KILL_SWITCH = false; // By default, the AppSetId API is enabled. |
| |
| /** Gets the state of the global and appSetId kill switch. */ |
| default boolean getAppSetIdKillSwitch() { |
| return APPSETID_KILL_SWITCH; |
| } |
| |
| // TOPICS Killswitches |
| |
| /** |
| * Topics API Kill Switch. The default value is false which means the Topics API is enabled. |
| * This flag is used for emergency turning off the Topics API. |
| */ |
| boolean TOPICS_KILL_SWITCH = false; // By default, the Topics API is enabled. |
| |
| /** @return value of Topics API kill switch */ |
| default boolean getTopicsKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() || TOPICS_KILL_SWITCH; |
| } |
| |
| /** |
| * Topics on-device classifier Kill Switch. The default value is false which means the on-device |
| * classifier in enabled. This flag is used for emergency turning off the on-device classifier. |
| */ |
| boolean TOPICS_ON_DEVICE_CLASSIFIER_KILL_SWITCH = false; |
| |
| /** @return value of Topics on-device classifier kill switch. */ |
| default boolean getTopicsOnDeviceClassifierKillSwitch() { |
| return TOPICS_ON_DEVICE_CLASSIFIER_KILL_SWITCH; |
| } |
| |
| // MDD Killswitches |
| |
| /** |
| * MDD Background Task Kill Switch. The default value is false which means the MDD background |
| * task is enabled. This flag is used for emergency turning off the MDD background tasks. |
| */ |
| boolean MDD_BACKGROUND_TASK_KILL_SWITCH = false; |
| |
| /** @return value of Mdd Background Task kill switch */ |
| default boolean getMddBackgroundTaskKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() || MDD_BACKGROUND_TASK_KILL_SWITCH; |
| } |
| |
| /** |
| * MDD Logger Kill Switch. The default value is false which means the MDD Logger is enabled. |
| * This flag is used for emergency turning off the MDD Logger. |
| */ |
| boolean MDD_LOGGER_KILL_SWITCH = false; |
| |
| /** @return value of MDD Logger Kill Switch */ |
| default boolean getMddLoggerKillSwitch() { |
| return getGlobalKillSwitch() || MDD_LOGGER_KILL_SWITCH; |
| } |
| |
| // FLEDGE Kill switches |
| |
| /** |
| * Fledge AdSelectionService kill switch. The default value is false which means that |
| * AdSelectionService is enabled by default. This flag should be should as emergency andon cord. |
| */ |
| boolean FLEDGE_SELECT_ADS_KILL_SWITCH = false; |
| |
| /** |
| * @return value of Fledge Ad Selection Service API kill switch . |
| */ |
| default boolean getFledgeSelectAdsKillSwitch() { |
| // Check for global kill switch first, as it should override all other kill switches |
| return getGlobalKillSwitch() || FLEDGE_SELECT_ADS_KILL_SWITCH; |
| } |
| |
| /** |
| * Fledge Auction Server API Kill switch. The default value is true which means that Auction |
| * server APIs is disabled by default. |
| */ |
| boolean FLEDGE_AUCTION_SERVER_KILL_SWITCH = true; |
| |
| /** |
| * @return value of Fledge Auction server API kill switch. |
| */ |
| default boolean getFledgeAuctionServerKillSwitch() { |
| return getGlobalKillSwitch() |
| || getFledgeSelectAdsKillSwitch() |
| || FLEDGE_AUCTION_SERVER_KILL_SWITCH; |
| } |
| |
| /** |
| * Fledge On Device Auction API Kill switch. The default value is false which means that On |
| * Device Auction APIs is enabled by default. |
| */ |
| boolean FLEDGE_ON_DEVICE_AUCTION_KILL_SWITCH = false; |
| |
| /** |
| * @return value of On Device Auction API kill switch. |
| */ |
| default boolean getFledgeOnDeviceAuctionKillSwitch() { |
| return getGlobalKillSwitch() |
| || getFledgeSelectAdsKillSwitch() |
| || FLEDGE_ON_DEVICE_AUCTION_KILL_SWITCH; |
| } |
| |
| /** |
| * Fledge Join Custom Audience API kill switch. The default value is false which means that Join |
| * Custom Audience API is enabled by default. This flag should be should as emergency andon |
| * cord. |
| */ |
| boolean FLEDGE_CUSTOM_AUDIENCE_SERVICE_KILL_SWITCH = false; |
| |
| /** @return value of Fledge Join Custom Audience API kill switch */ |
| default boolean getFledgeCustomAudienceServiceKillSwitch() { |
| // Check for global kill switch first, as it should override all other kill switches |
| return getGlobalKillSwitch() || FLEDGE_CUSTOM_AUDIENCE_SERVICE_KILL_SWITCH; |
| } |
| |
| /** |
| * Protected signals API kill switch. The default value is false which means that protected |
| * signals are enabled by default. This flag should be should as emergency andon cord. |
| */ |
| boolean PROTECTED_SIGNALS_SERVICE_KILL_SWITCH = false; |
| |
| /** |
| * @return value of the protected signals API kill switch. |
| */ |
| default boolean getProtectedSignalsServiceKillSwitch() { |
| // Check for global kill switch first, as it should override all other kill switches |
| return getGlobalKillSwitch() || PROTECTED_SIGNALS_SERVICE_KILL_SWITCH; |
| } |
| |
| // Encryption key Kill switches |
| |
| /** |
| * Encryption key new enrollment fetch kill switch. The default value is false which means |
| * fetching encryption keys for new enrollments is enabled by default. This flag is used for |
| * emergency turning off fetching encryption keys for new enrollments. |
| * |
| * <p>Set true to disable the function since no adtech actually provide encryption endpoint now. |
| */ |
| boolean ENCRYPTION_KEY_NEW_ENROLLMENT_FETCH_KILL_SWITCH = true; |
| |
| /** |
| * @return value of encryption key new enrollment fetch job kill switch |
| */ |
| default boolean getEncryptionKeyNewEnrollmentFetchKillSwitch() { |
| // We check the Global kill switch first. As a result, it overrides all other kill switches. |
| return getGlobalKillSwitch() || ENCRYPTION_KEY_NEW_ENROLLMENT_FETCH_KILL_SWITCH; |
| } |
| |
| /** |
| * Encryption key periodic fetch job kill switch. The default value is false which means |
| * periodically fetching encryption keys is enabled by default. This flag is used for emergency |
| * turning off periodically fetching encryption keys. |
| * |
| * <p>Set true to disable the function since no adtech actually provide encryption endpoint now. |
| */ |
| boolean ENCRYPTION_KEY_PERIODIC_FETCH_KILL_SWITCH = true; |
| |
| /** |
| * @return value of encryption key new enrollment fetch job kill switch |
| */ |
| default boolean getEncryptionKeyPeriodicFetchKillSwitch() { |
| // We check the Global kill switch first. As a result, it overrides all other kill switches. |
| return getGlobalKillSwitch() || ENCRYPTION_KEY_PERIODIC_FETCH_KILL_SWITCH; |
| } |
| |
| int ENCRYPTION_KEY_JOB_REQUIRED_NETWORK_TYPE = JobInfo.NETWORK_TYPE_UNMETERED; |
| |
| /** Returns the required network type (Wifi) for encryption key fetch job. */ |
| default int getEncryptionKeyJobRequiredNetworkType() { |
| return ENCRYPTION_KEY_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| /* The default time period (in millisecond) between each encryption key job to run. */ |
| long ENCRYPTION_KEY_JOB_PERIOD_MS = 24 * 60 * 60 * 1000L; // 24 hours. |
| |
| /** Returns min time period (in millis) between each event fallback reporting job run. */ |
| default long getEncryptionKeyJobPeriodMs() { |
| return ENCRYPTION_KEY_JOB_PERIOD_MS; |
| } |
| |
| /** |
| * Enable Back Compat feature flag. The default value is false which means that all back compat |
| * related features are disabled by default. This flag would be enabled for R/S during rollout. |
| */ |
| boolean ENABLE_BACK_COMPAT = false; |
| |
| /** @return value of enable Back Compat */ |
| default boolean getEnableBackCompat() { |
| return ENABLE_BACK_COMPAT; |
| } |
| |
| /** |
| * Enable AppSearch read for consent data feature flag. The default value is false which means |
| * AppSearch is not considered as source of truth after OTA. This flag should be enabled for OTA |
| * support of consent data on T+ devices. |
| */ |
| boolean ENABLE_APPSEARCH_CONSENT_DATA = SdkLevel.isAtLeastS() && !SdkLevel.isAtLeastT(); |
| |
| /** @return value of enable appsearch consent data flag */ |
| default boolean getEnableAppsearchConsentData() { |
| return ENABLE_APPSEARCH_CONSENT_DATA; |
| } |
| |
| /** |
| * Enable AdServicesExtDataStorageService read for consent data feature flag. The default value |
| * on R devices is true as the consent source of truth is PPAPI_AND_ADEXT_SERVICE_ONLY. The |
| * default value on S+ devices is false which means AdServicesExtDataStorageService is not |
| * considered as source of truth after OTA. This flag should be enabled for OTA support of |
| * consent data on S devices. |
| */ |
| boolean ENABLE_ADEXT_SERVICE_CONSENT_DATA = SDK_INT == Build.VERSION_CODES.R; |
| |
| /** |
| * @return value of enable AdExt service consent data flag. |
| */ |
| default boolean getEnableAdExtServiceConsentData() { |
| return ENABLE_ADEXT_SERVICE_CONSENT_DATA; |
| } |
| |
| /* |
| * The allow-list for PP APIs. This list has the list of app package names that we allow |
| * using PP APIs. |
| * App Package Name that does not belong to this allow-list will not be able to use PP APIs. |
| * If this list has special value "*", then all package names are allowed. |
| * There must be not any empty space between comma. |
| */ |
| String PPAPI_APP_ALLOW_LIST = |
| "android.platform.test.scenario," |
| + "android.adservices.crystalball," |
| + "android.adservices.cts," |
| + "android.adservices.debuggablects," |
| + "com.android.adservices.endtoendtest," |
| + "com.android.adservices.servicecoretest," |
| + "com.android.adservices.tests.permissions.appoptout," |
| + "com.android.adservices.tests.permissions.valid," |
| + "com.android.adservices.tests.adid," |
| + "com.android.adservices.tests.appsetid," |
| + "com.android.sdksandboxclient," |
| + "com.android.tests.sandbox.adid," |
| + "com.android.tests.sandbox.appsetid," |
| + "com.android.tests.sandbox.fledge," |
| + "com.android.tests.sandbox.measurement," |
| + "com.example.adservices.samples.adid.app," |
| + "com.example.adservices.samples.appsetid.app," |
| + "com.example.adservices.samples.fledge.sampleapp," |
| + "com.example.adservices.samples.fledge.sampleapp1," |
| + "com.example.adservices.samples.fledge.sampleapp2," |
| + "com.example.adservices.samples.fledge.sampleapp3," |
| + "com.example.adservices.samples.fledge.sampleapp4," |
| + "com.example.measurement.sampleapp," |
| + "com.example.measurement.sampleapp2," |
| + "com.android.adservices.tests.cts.endtoendtest.measurement"; |
| |
| /** |
| * Returns bypass List for PPAPI app signature check. Apps with package name on this list will |
| * bypass the signature check |
| */ |
| default String getPpapiAppAllowList() { |
| return PPAPI_APP_ALLOW_LIST; |
| } |
| |
| /* |
| * The allow-list for Measurement APIs. This list has the list of app package names that we |
| * allow using Measurement APIs. Overridden by Block List |
| */ |
| String MSMT_API_APP_ALLOW_LIST = |
| "android.platform.test.scenario," |
| + "android.adservices.crystalball," |
| + "android.adservices.cts," |
| + "android.adservices.debuggablects," |
| + "com.android.adservices.endtoendtest," |
| + "com.android.adservices.servicecoretest," |
| + "com.android.adservices.tests.permissions.appoptout," |
| + "com.android.adservices.tests.permissions.valid," |
| + "com.android.adservices.tests.adid," |
| + "com.android.adservices.tests.appsetid," |
| + "com.android.sdksandboxclient," |
| + "com.android.tests.sandbox.adid," |
| + "com.android.tests.sandbox.appsetid," |
| + "com.android.tests.sandbox.fledge," |
| + "com.android.tests.sandbox.measurement," |
| + "com.example.adservices.samples.adid.app," |
| + "com.example.adservices.samples.appsetid.app," |
| + "com.example.adservices.samples.fledge.sampleapp," |
| + "com.example.adservices.samples.fledge.sampleapp1," |
| + "com.example.adservices.samples.fledge.sampleapp2," |
| + "com.example.adservices.samples.fledge.sampleapp3," |
| + "com.example.adservices.samples.fledge.sampleapp4," |
| + "com.example.measurement.sampleapp," |
| + "com.example.measurement.sampleapp2," |
| + "com.android.adservices.tests.cts.endtoendtest.measurement"; |
| |
| /* |
| * App Package Name that does not belong to this allow-list will not be able to use Measurement |
| * APIs. |
| * If this list has special value "*", then all package names are allowed. |
| * Block List takes precedence over Allow List. |
| * There must be not any empty space between comma. |
| */ |
| default String getMsmtApiAppAllowList() { |
| return MSMT_API_APP_ALLOW_LIST; |
| } |
| |
| /* |
| * The blocklist for Measurement APIs. This list has the list of app package names that we |
| * do not allow to use Measurement APIs. |
| */ |
| String MSMT_API_APP_BLOCK_LIST = ""; |
| |
| /* |
| * App Package Name that belong to this blocklist will not be able to use Measurement |
| * APIs. |
| * If this list has special value "*", then all package names are blocked. |
| * Block List takes precedence over Allow List. |
| * There must be not any empty space between comma. |
| */ |
| default String getMsmtApiAppBlockList() { |
| return MSMT_API_APP_BLOCK_LIST; |
| } |
| |
| /* |
| * The allow-list for PP APIs. This list has the list of app signatures that we allow |
| * using PP APIs. App Package signatures that do not belong to this allow-list will not be |
| * able to use PP APIs, unless the package name of this app is in the bypass list. |
| * |
| * If this list has special value "*", then all package signatures are allowed. |
| * |
| * There must be not any empty space between comma. |
| */ |
| String PPAPI_APP_SIGNATURE_ALLOW_LIST = |
| // com.android.adservices.tests.cts.endtoendtest |
| "6cecc50e34ae31bfb5678986d6d6d3736c571ded2f2459527793e1f054eb0c9b," |
| // com.android.tests.sandbox.topics |
| + "a40da80a59d170caa950cf15c18c454d47a39b26989d8b640ecd745ba71bf5dc," |
| // Topics Sample Apps |
| // For example, com.example.adservices.samples.topics.sampleapp1 |
| + "301aa3cb081134501c45f1422abc66c24224fd5ded5fdc8f17e697176fd866aa," |
| // com.android.adservices.tests.cts.topics.testapp1 |
| // android.platform.test.scenario.adservices.GetTopicsApiCall |
| // Both have [certificate: "platform"] in .bp file |
| + "c8a2e9bccf597c2fb6dc66bee293fc13f2fc47ec77bc6b2b0d52c11f51192ab8"; |
| |
| /** Only App signatures belonging to this Allow List can use PP APIs. */ |
| default String getPpapiAppSignatureAllowList() { |
| return PPAPI_APP_SIGNATURE_ALLOW_LIST; |
| } |
| |
| /** |
| * The allow list for AppSearch writers. If non-empty, only results written by a package on the |
| * allow list will be read for consent migration. |
| */ |
| String APPSEARCH_WRITER_ALLOW_LIST_OVERRIDE = ""; |
| |
| /** Only data written by packages in the allow list will be read from AppSearch. */ |
| default String getAppsearchWriterAllowListOverride() { |
| return APPSEARCH_WRITER_ALLOW_LIST_OVERRIDE; |
| } |
| |
| /** |
| * The client app packages that are allowed to invoke web context APIs, i.e. {@link |
| * android.adservices.measurement.MeasurementManager#registerWebSource} and {@link |
| * android.adservices.measurement.MeasurementManager#deleteRegistrations}. App packages that do |
| * not belong to the list will be responded back with an error response. |
| */ |
| String WEB_CONTEXT_CLIENT_ALLOW_LIST = ""; |
| |
| // Rate Limit Flags. |
| |
| /** |
| * PP API Rate Limit for each SDK. This is the max allowed QPS for one SDK to one PP API. |
| * Negative Value means skipping the rate limiting checking. |
| */ |
| float SDK_REQUEST_PERMITS_PER_SECOND = 1; // allow max 1 request to any PP API per second. |
| |
| /** |
| * PP API Rate Limit for ad id. This is the max allowed QPS for one API client to one PP API. |
| * Negative Value means skipping the rate limiting checking. |
| */ |
| float ADID_REQUEST_PERMITS_PER_SECOND = FlagsConstants.ADID_REQUEST_PERMITS_PER_SECOND; |
| |
| /** |
| * PP API Rate Limit for app set id. This is the max allowed QPS for one API client to one PP |
| * API. Negative Value means skipping the rate limiting checking. |
| */ |
| float APPSETID_REQUEST_PERMITS_PER_SECOND = 5; |
| |
| /** |
| * PP API Rate Limit for measurement register source. This is the max allowed QPS for one API |
| * client to one PP API. Negative Value means skipping the rate limiting checking. |
| */ |
| float MEASUREMENT_REGISTER_SOURCE_REQUEST_PERMITS_PER_SECOND = 25; |
| |
| /** |
| * PP API Rate Limit for measurement register web source. This is the max allowed QPS for one |
| * API client to one PP API. Negative Value means skipping the rate limiting checking. |
| */ |
| float MEASUREMENT_REGISTER_WEB_SOURCE_REQUEST_PERMITS_PER_SECOND = 25; |
| |
| /** |
| * PP API Rate Limit for measurement register sources. This is the max allowed QPS for one API |
| * client to one PP API. Negative Value means skipping the rate limiting checking. |
| */ |
| float MEASUREMENT_REGISTER_SOURCES_REQUEST_PERMITS_PER_SECOND = 25; |
| |
| /** |
| * PP API Rate Limit for measurement register trigger. This is the max allowed QPS for one API |
| * client to one PP API. Negative Value means skipping the rate limiting checking. |
| */ |
| float MEASUREMENT_REGISTER_TRIGGER_REQUEST_PERMITS_PER_SECOND = 25; |
| |
| /** |
| * PP API Rate Limit for measurement register web trigger. This is the max allowed QPS for one |
| * API client to one PP API. Negative Value means skipping the rate limiting checking. |
| */ |
| float MEASUREMENT_REGISTER_WEB_TRIGGER_REQUEST_PERMITS_PER_SECOND = 25; |
| |
| /** |
| * PP API Rate Limit for Topics API based on App Package name. This is the max allowed QPS for |
| * one API client to one PP API. Negative Value means skipping the rate limiting checking. |
| */ |
| float TOPICS_API_APP_REQUEST_PERMITS_PER_SECOND = 1; |
| |
| /** |
| * PP API Rate Limit for Topics API based on Sdk Name. This is the max allowed QPS for one API |
| * client to one PP API. Negative Value means skipping the rate limiting checking. |
| */ |
| float TOPICS_API_SDK_REQUEST_PERMITS_PER_SECOND = 1; |
| |
| /** |
| * PP API Rate Limit for Fledge Report Interaction API. This is the max allowed QPS for one SDK |
| * to one the Report Interaction API. Negative Value means skipping the rate limiting checking. |
| */ |
| float FLEDGE_REPORT_INTERACTION_REQUEST_PERMITS_PER_SECOND = 1; |
| |
| /** Returns the Sdk Request Permits Per Second. */ |
| default float getSdkRequestPermitsPerSecond() { |
| return SDK_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Ad id Request Permits Per Second. */ |
| default float getAdIdRequestPermitsPerSecond() { |
| return ADID_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the App Set Ad Request Permits Per Second. */ |
| default float getAppSetIdRequestPermitsPerSecond() { |
| return APPSETID_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Topics API Based On App Package Name Request Permits Per Second. */ |
| default float getTopicsApiAppRequestPermitsPerSecond() { |
| return TOPICS_API_APP_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Topics API Based On Sdk Name Request Permits Per Second. */ |
| default float getTopicsApiSdkRequestPermitsPerSecond() { |
| return TOPICS_API_SDK_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Measurement Register Source Request Permits Per Second. */ |
| default float getMeasurementRegisterSourceRequestPermitsPerSecond() { |
| return MEASUREMENT_REGISTER_SOURCE_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Measurement Register Sources Request Permits Per Second. */ |
| default float getMeasurementRegisterSourcesRequestPermitsPerSecond() { |
| return MEASUREMENT_REGISTER_SOURCES_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Measurement Register Web Source Request Permits Per Second. */ |
| default float getMeasurementRegisterWebSourceRequestPermitsPerSecond() { |
| return MEASUREMENT_REGISTER_WEB_SOURCE_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Measurement Register Trigger Request Permits Per Second. */ |
| default float getMeasurementRegisterTriggerRequestPermitsPerSecond() { |
| return MEASUREMENT_REGISTER_TRIGGER_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Measurement Register Web Trigger Request Permits Per Second. */ |
| default float getMeasurementRegisterWebTriggerRequestPermitsPerSecond() { |
| return MEASUREMENT_REGISTER_WEB_TRIGGER_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| /** Returns the Fledge Report Interaction API Request Permits Per Second. */ |
| default float getFledgeReportInteractionRequestPermitsPerSecond() { |
| return FLEDGE_REPORT_INTERACTION_REQUEST_PERMITS_PER_SECOND; |
| } |
| |
| // Flags for ad tech enrollment enforcement |
| |
| boolean DISABLE_TOPICS_ENROLLMENT_CHECK = false; |
| boolean DISABLE_FLEDGE_ENROLLMENT_CHECK = false; |
| boolean DISABLE_MEASUREMENT_ENROLLMENT_CHECK = false; |
| boolean ENABLE_ENROLLMENT_TEST_SEED = false; |
| |
| /** @return {@code true} if the Topics API should disable the ad tech enrollment check */ |
| default boolean isDisableTopicsEnrollmentCheck() { |
| return DISABLE_TOPICS_ENROLLMENT_CHECK; |
| } |
| |
| /** @return {@code true} if the FLEDGE APIs should disable the ad tech enrollment check */ |
| default boolean getDisableFledgeEnrollmentCheck() { |
| return DISABLE_FLEDGE_ENROLLMENT_CHECK; |
| } |
| |
| /** @return {@code true} if the Measurement APIs should disable the ad tech enrollment check */ |
| default boolean isDisableMeasurementEnrollmentCheck() { |
| return DISABLE_MEASUREMENT_ENROLLMENT_CHECK; |
| } |
| |
| /** |
| * @return {@code true} if the Enrollment seed is disabled. (Enrollment seed is only needed for |
| * testing) |
| */ |
| default boolean isEnableEnrollmentTestSeed() { |
| return ENABLE_ENROLLMENT_TEST_SEED; |
| } |
| |
| boolean ENFORCE_FOREGROUND_STATUS_ADID = true; |
| boolean ENFORCE_FOREGROUND_STATUS_APPSETID = true; |
| boolean ENFORCE_FOREGROUND_STATUS_FLEDGE_RUN_AD_SELECTION = true; |
| boolean ENFORCE_FOREGROUND_STATUS_FLEDGE_REPORT_IMPRESSION = true; |
| boolean ENFORCE_FOREGROUND_STATUS_FLEDGE_REPORT_INTERACTION = true; |
| boolean ENFORCE_FOREGROUND_STATUS_FLEDGE_OVERRIDES = true; |
| boolean ENFORCE_FOREGROUND_STATUS_FLEDGE_CUSTOM_AUDIENCE = true; |
| boolean ENFORCE_FOREGROUND_STATUS_TOPICS = true; |
| boolean ENFORCE_FOREGROUND_STATUS_SIGNALS = true; |
| |
| /** |
| * @return true if FLEDGE runAdSelection API should require that the calling API is running in |
| * foreground. |
| */ |
| default boolean getEnforceForegroundStatusForFledgeRunAdSelection() { |
| return ENFORCE_FOREGROUND_STATUS_FLEDGE_RUN_AD_SELECTION; |
| } |
| |
| /** |
| * @return true if FLEDGE reportImpression API should require that the calling API is running in |
| * foreground. |
| */ |
| default boolean getEnforceForegroundStatusForFledgeReportImpression() { |
| return ENFORCE_FOREGROUND_STATUS_FLEDGE_REPORT_IMPRESSION; |
| } |
| |
| /** |
| * @return true if FLEDGE reportInteraction API should require that the calling API is running |
| * in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForFledgeReportInteraction() { |
| return ENFORCE_FOREGROUND_STATUS_FLEDGE_REPORT_INTERACTION; |
| } |
| |
| /** |
| * @return true if FLEDGE override API methods (for Custom Audience and Ad Selection) should |
| * require that the calling API is running in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForFledgeOverrides() { |
| return ENFORCE_FOREGROUND_STATUS_FLEDGE_OVERRIDES; |
| } |
| |
| /** |
| * @return true if FLEDGE Custom Audience API methods should require that the calling API is |
| * running in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForFledgeCustomAudience() { |
| return ENFORCE_FOREGROUND_STATUS_FLEDGE_CUSTOM_AUDIENCE; |
| } |
| |
| boolean MEASUREMENT_ENFORCE_FOREGROUND_STATUS_DELETE_REGISTRATIONS = true; |
| boolean MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_SOURCE = true; |
| boolean MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_TRIGGER = true; |
| boolean MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_WEB_SOURCE = true; |
| boolean MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_WEB_TRIGGER = true; |
| boolean MEASUREMENT_ENFORCE_FOREGROUND_STATUS_GET_STATUS = true; |
| boolean MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_SOURCES = true; |
| boolean MEASUREMENT_ENFORCE_ENROLLMENT_ORIGIN_MATCH = false; |
| |
| /** |
| * @return true if Measurement Delete Registrations API should require that the calling API is |
| * running in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForMeasurementDeleteRegistrations() { |
| return MEASUREMENT_ENFORCE_FOREGROUND_STATUS_DELETE_REGISTRATIONS; |
| } |
| |
| /** |
| * @return true if Measurement Register Source API should require that the calling API is |
| * running in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForMeasurementRegisterSource() { |
| return MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_SOURCE; |
| } |
| |
| /** |
| * @return true if Measurement Register Trigger API should require that the calling API is |
| * running in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForMeasurementRegisterTrigger() { |
| return MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_TRIGGER; |
| } |
| |
| /** |
| * @return true if Measurement Register Web Source API should require that the calling API is |
| * running in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForMeasurementRegisterWebSource() { |
| return MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_WEB_SOURCE; |
| } |
| |
| /** |
| * @return true if Measurement Register Web Trigger API should require that the calling API is |
| * running in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForMeasurementRegisterWebTrigger() { |
| return MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_WEB_TRIGGER; |
| } |
| |
| /** |
| * @return true if Measurement Get Status API should require that the calling API is running in |
| * foreground. |
| */ |
| default boolean getEnforceForegroundStatusForMeasurementStatus() { |
| return MEASUREMENT_ENFORCE_FOREGROUND_STATUS_GET_STATUS; |
| } |
| |
| /** |
| * @return true if Measurement Get Status API should require that the calling API is running in |
| * foreground. |
| */ |
| default boolean getEnforceForegroundStatusForMeasurementRegisterSources() { |
| return MEASUREMENT_ENFORCE_FOREGROUND_STATUS_REGISTER_SOURCES; |
| } |
| |
| /** @return true if the Enrollment match is based on url origin matching */ |
| default boolean getEnforceEnrollmentOriginMatch() { |
| return MEASUREMENT_ENFORCE_ENROLLMENT_ORIGIN_MATCH; |
| } |
| |
| /** @return true if Topics API should require that the calling API is running in foreground. */ |
| default boolean getEnforceForegroundStatusForTopics() { |
| return ENFORCE_FOREGROUND_STATUS_TOPICS; |
| } |
| |
| /** |
| * @return true if Protected Signals API should require that the calling API is running in |
| * foreground. |
| */ |
| default boolean getEnforceForegroundStatusForSignals() { |
| return ENFORCE_FOREGROUND_STATUS_SIGNALS; |
| } |
| |
| /** @return true if AdId API should require that the calling API is running in foreground. */ |
| default boolean getEnforceForegroundStatusForAdId() { |
| return ENFORCE_FOREGROUND_STATUS_ADID; |
| } |
| |
| int FOREGROUND_STATUS_LEVEL = IMPORTANCE_FOREGROUND_SERVICE; |
| |
| /** |
| * @return true if AppSetId API should require that the calling API is running in foreground. |
| */ |
| default boolean getEnforceForegroundStatusForAppSetId() { |
| return ENFORCE_FOREGROUND_STATUS_APPSETID; |
| } |
| |
| /** @return the importance level to use to check if an application is in foreground. */ |
| default int getForegroundStatuslLevelForValidation() { |
| return FOREGROUND_STATUS_LEVEL; |
| } |
| |
| default String getWebContextClientAppAllowList() { |
| return WEB_CONTEXT_CLIENT_ALLOW_LIST; |
| } |
| |
| boolean ENFORCE_ISOLATE_MAX_HEAP_SIZE = true; |
| long ISOLATE_MAX_HEAP_SIZE_BYTES = 10 * 1024 * 1024L; // 10 MB |
| long MAX_RESPONSE_BASED_REGISTRATION_SIZE_BYTES = 16 * 1024; // 16 kB |
| |
| /** |
| * @return true if we enforce to check that JavaScriptIsolate supports limiting the max heap |
| * size |
| */ |
| default boolean getEnforceIsolateMaxHeapSize() { |
| return ENFORCE_ISOLATE_MAX_HEAP_SIZE; |
| } |
| |
| /** @return size in bytes we bound the heap memory for JavaScript isolate */ |
| default long getIsolateMaxHeapSizeBytes() { |
| return ISOLATE_MAX_HEAP_SIZE_BYTES; |
| } |
| |
| /** |
| * @return max allowed size in bytes for response based registrations payload of an individual |
| * source/trigger registration. |
| */ |
| default long getMaxResponseBasedRegistrationPayloadSizeBytes() { |
| return MAX_RESPONSE_BASED_REGISTRATION_SIZE_BYTES; |
| } |
| |
| /** Ui OTA strings group name, used for MDD download. */ |
| String UI_OTA_STRINGS_GROUP_NAME = "ui-ota-strings"; |
| |
| /** UI OTA strings group name. */ |
| default String getUiOtaStringsGroupName() { |
| return UI_OTA_STRINGS_GROUP_NAME; |
| } |
| |
| /** Ui OTA strings manifest file url, used for MDD download. */ |
| String UI_OTA_STRINGS_MANIFEST_FILE_URL = |
| "https://www.gstatic.com/mdi-serving/rubidium-adservices-ui-ota-strings/1341/95580b00edbd8cbf62bfa0df9ebd79fba1e5b7ca"; |
| |
| /** UI OTA strings manifest file url. */ |
| default String getUiOtaStringsManifestFileUrl() { |
| return UI_OTA_STRINGS_MANIFEST_FILE_URL; |
| } |
| |
| /** Ui OTA strings feature flag. */ |
| boolean UI_OTA_STRINGS_FEATURE_ENABLED = false; |
| |
| /** Returns if UI OTA strings feature is enabled. */ |
| default boolean getUiOtaStringsFeatureEnabled() { |
| return UI_OTA_STRINGS_FEATURE_ENABLED; |
| } |
| |
| /** Deadline for downloading UI OTA strings. */ |
| long UI_OTA_STRINGS_DOWNLOAD_DEADLINE = 86700000; /* 1 day */ |
| |
| /** Returns the deadline for downloading UI OTA strings. */ |
| default long getUiOtaStringsDownloadDeadline() { |
| return UI_OTA_STRINGS_DOWNLOAD_DEADLINE; |
| } |
| |
| /** UI Dialogs feature enabled. */ |
| boolean UI_DIALOGS_FEATURE_ENABLED = false; |
| |
| /** Returns if the UI Dialogs feature is enabled. */ |
| default boolean getUIDialogsFeatureEnabled() { |
| return UI_DIALOGS_FEATURE_ENABLED; |
| } |
| |
| /** UI Dialog Fragment feature enabled. */ |
| boolean UI_DIALOG_FRAGMENT = false; |
| |
| /** Returns if the UI Dialog Fragment is enabled. */ |
| default boolean getUiDialogFragmentEnabled() { |
| return UI_DIALOG_FRAGMENT; |
| } |
| |
| /** The EEA device region feature is off by default. */ |
| boolean IS_EEA_DEVICE_FEATURE_ENABLED = false; |
| |
| /** Returns if the EEA device region feature has been enabled. */ |
| default boolean isEeaDeviceFeatureEnabled() { |
| return IS_EEA_DEVICE_FEATURE_ENABLED; |
| } |
| |
| /** Default is that the device is in the EEA region. */ |
| boolean IS_EEA_DEVICE = true; |
| |
| /** Returns if device is in the EEA region. */ |
| default boolean isEeaDevice() { |
| return IS_EEA_DEVICE; |
| } |
| |
| /** Default is that the ui feature type logging is enabled. */ |
| boolean UI_FEATURE_TYPE_LOGGING_ENABLED = true; |
| |
| /** Returns if device is in the EEA region. */ |
| default boolean isUiFeatureTypeLoggingEnabled() { |
| return UI_FEATURE_TYPE_LOGGING_ENABLED; |
| } |
| |
| /** Default is that the manual interaction feature is enabled. */ |
| boolean RECORD_MANUAL_INTERACTION_ENABLED = true; |
| |
| /** Returns if the manual interaction feature is enabled. */ |
| default boolean getRecordManualInteractionEnabled() { |
| return RECORD_MANUAL_INTERACTION_ENABLED; |
| } |
| |
| /** Default is that the notification should be dismissed on click. */ |
| boolean DEFAULT_NOTIFICATION_DISMISSED_ON_CLICK = true; |
| |
| /** Determines whether the notification should be dismissed on click. */ |
| default boolean getNotificationDismissedOnClick() { |
| return DEFAULT_NOTIFICATION_DISMISSED_ON_CLICK; |
| } |
| |
| /** |
| * The check activity feature is off by default. When enabled, we check whether all Rubidium |
| * activities are enabled when we determine whether AdServices is enabled |
| */ |
| boolean IS_BACK_COMPACT_ACTIVITY_FEATURE_ENABLED = false; |
| |
| /** Returns if the check activity feature has been enabled. */ |
| default boolean isBackCompatActivityFeatureEnabled() { |
| return IS_BACK_COMPACT_ACTIVITY_FEATURE_ENABLED; |
| } |
| |
| String UI_EEA_COUNTRIES = |
| "AT," // Austria |
| + "BE," // Belgium |
| + "BG," // Bulgaria |
| + "HR," // Croatia |
| + "CY," // Republic of Cyprus |
| + "CZ," // Czech Republic |
| + "DK," // Denmark |
| + "EE," // Estonia |
| + "FI," // Finland |
| + "FR," // France |
| + "DE," // Germany |
| + "GR," // Greece |
| + "HU," // Hungary |
| + "IE," // Ireland |
| + "IT," // Italy |
| + "LV," // Latvia |
| + "LT," // Lithuania |
| + "LU," // Luxembourg |
| + "MT," // Malta |
| + "NL," // Netherlands |
| + "PL," // Poland |
| + "PT," // Portugal |
| + "RO," // Romania |
| + "SK," // Slovakia |
| + "SI," // Slovenia |
| + "ES," // Spain |
| + "SE," // Sweden |
| + "IS," // Iceland |
| + "LI," // Liechtenstein |
| + "NO," // Norway |
| + "CH," // Switzerland |
| + "GB," // Great Britain |
| + "GI," // Gibraltar |
| + "GP," // Guadeloupe |
| + "GG," // Guernsey |
| + "JE," // Jersey |
| + "VA," // Vatican City |
| + "AX," // Ã…land Islands |
| + "IC," // Canary Islands |
| + "EA," // Ceuta & Melilla |
| + "GF," // French Guiana |
| + "PF," // French Polynesia |
| + "TF," // French Southern Territories |
| + "MQ," // Martinique |
| + "YT," // Mayotte |
| + "NC," // New Caledonia |
| + "RE," // Réunion |
| + "BL," // St. Barthélemy |
| + "MF," // St. Martin |
| + "PM," // St. Pierre & Miquelon |
| + "SJ," // Svalbard & Jan Mayen |
| + "WF"; // Wallis & Futuna |
| |
| /** Returns the list of EEA countries in a String separated by comma */ |
| default String getUiEeaCountries() { |
| return UI_EEA_COUNTRIES; |
| } |
| |
| /** |
| * GA UX enabled. It contains features that have to be enabled at the same time: |
| * |
| * <ul> |
| * <li>Updated consent landing page |
| * <li>Consent per API (instead of aggregated one) |
| * <li>Separate page to control Measurement API |
| * </ul> |
| * |
| * This flag is set default to true as beta deprecated. |
| */ |
| boolean GA_UX_FEATURE_ENABLED = true; |
| |
| /** Returns if the GA UX feature is enabled. */ |
| default boolean getGaUxFeatureEnabled() { |
| return GA_UX_FEATURE_ENABLED; |
| } |
| |
| /** Set the debug UX, which should crrespond to the {@link PrivacySandboxUxCollection} enum. */ |
| String DEBUG_UX = "UNSUPPORTED_UX"; |
| |
| /** Returns the debug UX. */ |
| default String getDebugUx() { |
| return DEBUG_UX; |
| } |
| |
| /** add speed bump dialogs when turning on or off the toggle of Topics, apps, measurement */ |
| boolean TOGGLE_SPEED_BUMP_ENABLED = false; |
| |
| /** Returns if the toggle speed bump dialog feature is enabled. */ |
| default boolean getToggleSpeedBumpEnabled() { |
| return TOGGLE_SPEED_BUMP_ENABLED; |
| } |
| |
| long ASYNC_REGISTRATION_JOB_QUEUE_INTERVAL_MS = (int) TimeUnit.HOURS.toMillis(1); |
| |
| /** Returns the interval in which to run Registration Job Queue Service. */ |
| default long getAsyncRegistrationJobQueueIntervalMs() { |
| return ASYNC_REGISTRATION_JOB_QUEUE_INTERVAL_MS; |
| } |
| |
| /** |
| * Registration Job Queue Kill Switch. The default value is false which means Registration Job |
| * Queue is enabled. This flag is used for emergency shutdown of the Registration Job Queue. |
| */ |
| boolean MEASUREMENT_REGISTRATION_JOB_QUEUE_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Registration Job Queue. The job will be disabled if either |
| * the Global Kill Switch, Measurement Kill Switch, or the Registration Job Queue Kill Switch |
| * value is true. |
| */ |
| default boolean getAsyncRegistrationJobQueueKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_REGISTRATION_JOB_QUEUE_KILL_SWITCH; |
| } |
| |
| boolean MEASUREMENT_REGISTRATION_FALLBACK_JOB_KILL_SWITCH = false; |
| |
| /** |
| * Returns the kill switch value for Registration Fallback Job. The Job will be disabled if |
| * either the Global Kill Switch, Measurement Kill Switch, or the Registration Fallback Job Kill |
| * Switch value is true. |
| */ |
| default boolean getAsyncRegistrationFallbackJobKillSwitch() { |
| // We check the Global Killswitch first. As a result, it overrides all other killswitches. |
| return getGlobalKillSwitch() |
| || getMeasurementKillSwitch() |
| || MEASUREMENT_REGISTRATION_FALLBACK_JOB_KILL_SWITCH; |
| } |
| |
| /** Returns true if the given enrollmentId is blocked from using PP-API. */ |
| default boolean isEnrollmentBlocklisted(String enrollmentId) { |
| return false; |
| } |
| |
| /** Returns a list of enrollmentId blocked from using PP-API. */ |
| default ImmutableList<String> getEnrollmentBlocklist() { |
| return ImmutableList.of(); |
| } |
| |
| long DEFAULT_MEASUREMENT_DEBUG_JOIN_KEY_HASH_LIMIT = 100L; |
| |
| /** Returns debug keys hash limit. */ |
| default long getMeasurementDebugJoinKeyHashLimit() { |
| return DEFAULT_MEASUREMENT_DEBUG_JOIN_KEY_HASH_LIMIT; |
| } |
| |
| /** Returns the limit to the number of unique AdIDs attempted to match for debug keys. */ |
| long DEFAULT_MEASUREMENT_PLATFORM_DEBUG_AD_ID_MATCHING_LIMIT = 5L; |
| |
| default long getMeasurementPlatformDebugAdIdMatchingLimit() { |
| return DEFAULT_MEASUREMENT_PLATFORM_DEBUG_AD_ID_MATCHING_LIMIT; |
| } |
| |
| /** Kill switch to guard backward-compatible logging. See go/rbc-ww-logging */ |
| boolean COMPAT_LOGGING_KILL_SWITCH = false; |
| |
| /** Returns true if backward-compatible logging should be disabled; false otherwise. */ |
| default boolean getCompatLoggingKillSwitch() { |
| return COMPAT_LOGGING_KILL_SWITCH; |
| } |
| |
| /** Kill switch to guard background jobs logging. */ |
| boolean BACKGROUND_JOBS_LOGGING_KILL_SWITCH = true; |
| |
| /** Returns true if background jobs logging should be disabled; false otherwise */ |
| default boolean getBackgroundJobsLoggingKillSwitch() { |
| return BACKGROUND_JOBS_LOGGING_KILL_SWITCH; |
| } |
| |
| // New Feature Flags |
| boolean FLEDGE_REGISTER_AD_BEACON_ENABLED = false; |
| boolean FLEDGE_CPC_BILLING_ENABLED = false; |
| boolean FLEDGE_DATA_VERSION_HEADER_ENABLED = false; |
| |
| /** Returns whether the {@code registerAdBeacon} feature is enabled. */ |
| default boolean getFledgeRegisterAdBeaconEnabled() { |
| return FLEDGE_REGISTER_AD_BEACON_ENABLED; |
| } |
| |
| /** Returns whether the CPC billing feature is enabled. */ |
| default boolean getFledgeCpcBillingEnabled() { |
| return FLEDGE_CPC_BILLING_ENABLED; |
| } |
| |
| /** Returns whether the data version header feature is enabled. */ |
| default boolean getFledgeDataVersionHeaderEnabled() { |
| return FLEDGE_DATA_VERSION_HEADER_ENABLED; |
| } |
| |
| /** |
| * Default allowlist of the enrollments for whom debug key insertion based on join key matching |
| * is allowed. |
| */ |
| String DEFAULT_MEASUREMENT_DEBUG_JOIN_KEY_ENROLLMENT_ALLOWLIST = ""; |
| |
| /** |
| * Allowlist of the enrollments for whom debug key insertion based on join key matching is |
| * allowed. |
| */ |
| default String getMeasurementDebugJoinKeyEnrollmentAllowlist() { |
| return DEFAULT_MEASUREMENT_DEBUG_JOIN_KEY_ENROLLMENT_ALLOWLIST; |
| } |
| |
| /** |
| * Default blocklist of the enrollments for whom debug key insertion based on AdID matching is |
| * blocked. |
| */ |
| String DEFAULT_MEASUREMENT_PLATFORM_DEBUG_AD_ID_MATCHING_BLOCKLIST = "*"; |
| |
| /** |
| * Blocklist of the enrollments for whom debug key insertion based on AdID matching is blocked. |
| */ |
| default String getMeasurementPlatformDebugAdIdMatchingEnrollmentBlocklist() { |
| return DEFAULT_MEASUREMENT_PLATFORM_DEBUG_AD_ID_MATCHING_BLOCKLIST; |
| } |
| |
| /** Default computation of adservices version */ |
| boolean DEFAULT_COMPUTE_VERSION_FROM_MAPPINGS_ENABLED = true; |
| |
| /** Get Compute adservices Version from mappings */ |
| default boolean getEnableComputeVersionFromMappings() { |
| return DEFAULT_COMPUTE_VERSION_FROM_MAPPINGS_ENABLED; |
| } |
| |
| /** Get mainline train version */ |
| String DEFAULT_MAINLINE_TRAIN_VERSION = "000000"; |
| |
| /** Get mainline train version */ |
| default String getMainlineTrainVersion() { |
| return DEFAULT_MAINLINE_TRAIN_VERSION; |
| } |
| |
| /** |
| * Default adservices version mappings Format - |
| * start_range1,end_range1,header_version1|start_range2,end_range2,header_version2 |
| */ |
| String DEFAULT_ADSERVICES_VERSION_MAPPINGS = |
| "341300000,341400000,202401|341400000,341500000,202402" |
| + "|341500000,341600000,202403|341600000,341700000,202404" |
| + "|341700000,341800000,202405|341800000,341900000,202406" |
| + "|341900000,342000000,202407|342000000,342100000,202408" |
| + "|342100000,342200000,202409|342200000,342300000,202410" |
| + "|342300000,342400000,202411|342400000,342500000,202412"; |
| |
| /** Get adservices version mappings */ |
| default String getAdservicesVersionMappings() { |
| return DEFAULT_ADSERVICES_VERSION_MAPPINGS; |
| } |
| |
| /** Default Determines whether EU notification flow change is enabled. */ |
| boolean DEFAULT_EU_NOTIF_FLOW_CHANGE_ENABLED = true; |
| |
| /** Determines whether EU notification flow change is enabled. */ |
| default boolean getEuNotifFlowChangeEnabled() { |
| return DEFAULT_EU_NOTIF_FLOW_CHANGE_ENABLED; |
| } |
| |
| /** Default value for flexible event reporting API */ |
| boolean MEASUREMENT_FLEXIBLE_EVENT_REPORTING_API_ENABLED = false; |
| |
| /** Returns whether to enable flexible event reporting API */ |
| default boolean getMeasurementFlexibleEventReportingApiEnabled() { |
| return MEASUREMENT_FLEXIBLE_EVENT_REPORTING_API_ENABLED; |
| } |
| |
| /** Default maximum sources per publisher */ |
| int MEASUREMENT_MAX_SOURCES_PER_PUBLISHER = 1024; |
| |
| /** Returns maximum sources per publisher */ |
| default int getMeasurementMaxSourcesPerPublisher() { |
| return MEASUREMENT_MAX_SOURCES_PER_PUBLISHER; |
| } |
| |
| /** Default maximum triggers per destination */ |
| int MEASUREMENT_MAX_TRIGGERS_PER_DESTINATION = 1024; |
| |
| /** Returns maximum triggers per destination */ |
| default int getMeasurementMaxTriggersPerDestination() { |
| return MEASUREMENT_MAX_TRIGGERS_PER_DESTINATION; |
| } |
| |
| /** Default maximum Aggregate Reports per destination */ |
| int MEASUREMENT_MAX_AGGREGATE_REPORTS_PER_DESTINATION = 1024; |
| |
| /** Returns maximum Aggregate Reports per publisher */ |
| default int getMeasurementMaxAggregateReportsPerDestination() { |
| return MEASUREMENT_MAX_AGGREGATE_REPORTS_PER_DESTINATION; |
| } |
| |
| /** Default maximum Event Reports per destination */ |
| int MEASUREMENT_MAX_EVENT_REPORTS_PER_DESTINATION = 1024; |
| |
| /** Returns maximum Event Reports per destination */ |
| default int getMeasurementMaxEventReportsPerDestination() { |
| return MEASUREMENT_MAX_EVENT_REPORTS_PER_DESTINATION; |
| } |
| |
| /** Disable maximum number of aggregatable reports per source by default. */ |
| boolean MEASUREMENT_ENABLE_MAX_AGGREGATE_REPORTS_PER_SOURCE = false; |
| |
| /** |
| * Returns true if maximum number of aggregatable reports per source is enabled, false |
| * otherwise. |
| */ |
| default boolean getMeasurementEnableMaxAggregateReportsPerSource() { |
| return MEASUREMENT_ENABLE_MAX_AGGREGATE_REPORTS_PER_SOURCE; |
| } |
| |
| /** Maximum Aggregate Reports per source. */ |
| int MEASUREMENT_MAX_AGGREGATE_REPORTS_PER_SOURCE = 20; |
| |
| /** Returns maximum Aggregate Reports per source. */ |
| default int getMeasurementMaxAggregateReportsPerSource() { |
| return MEASUREMENT_MAX_AGGREGATE_REPORTS_PER_SOURCE; |
| } |
| |
| /** Maximum number of aggregation keys allowed during source registration. */ |
| int MEASUREMENT_MAX_AGGREGATE_KEYS_PER_SOURCE_REGISTRATION = 50; |
| |
| /** Returns maximum number of aggregation keys allowed during source registration. */ |
| default int getMeasurementMaxAggregateKeysPerSourceRegistration() { |
| return MEASUREMENT_MAX_AGGREGATE_KEYS_PER_SOURCE_REGISTRATION; |
| } |
| |
| /** Maximum number of aggregation keys allowed during trigger registration. */ |
| int MEASUREMENT_MAX_AGGREGATE_KEYS_PER_TRIGGER_REGISTRATION = 50; |
| |
| /** Returns maximum number of aggregation keys allowed during trigger registration. */ |
| default int getMeasurementMaxAggregateKeysPerTriggerRegistration() { |
| return MEASUREMENT_MAX_AGGREGATE_KEYS_PER_TRIGGER_REGISTRATION; |
| } |
| |
| /** Default minimum event report delay in milliseconds */ |
| long MEASUREMENT_MIN_EVENT_REPORT_DELAY_MILLIS = 3_600_000L; |
| |
| /** Returns minimum event report delay in milliseconds */ |
| default long getMeasurementMinEventReportDelayMillis() { |
| return MEASUREMENT_MIN_EVENT_REPORT_DELAY_MILLIS; |
| } |
| |
| /** Disable early reporting windows configurability by default. */ |
| boolean MEASUREMENT_ENABLE_CONFIGURABLE_EVENT_REPORTING_WINDOWS = false; |
| |
| /** Returns true if event reporting windows configurability is enabled, false otherwise. */ |
| default boolean getMeasurementEnableConfigurableEventReportingWindows() { |
| return MEASUREMENT_ENABLE_CONFIGURABLE_EVENT_REPORTING_WINDOWS; |
| } |
| |
| /** |
| * Default early reporting windows for VTC type source. Derived from {@link |
| * com.android.adservices.service.measurement.PrivacyParams#EVENT_EARLY_REPORTING_WINDOW_MILLISECONDS}. |
| */ |
| String MEASUREMENT_EVENT_REPORTS_VTC_EARLY_REPORTING_WINDOWS = ""; |
| |
| /** |
| * Returns configured comma separated early VTC based source's event reporting windows in |
| * seconds. |
| */ |
| default String getMeasurementEventReportsVtcEarlyReportingWindows() { |
| return MEASUREMENT_EVENT_REPORTS_VTC_EARLY_REPORTING_WINDOWS; |
| } |
| |
| /** |
| * Default early reporting windows for CTC type source. Derived from {@link |
| * com.android.adservices.service.measurement.PrivacyParams#NAVIGATION_EARLY_REPORTING_WINDOW_MILLISECONDS}. |
| */ |
| String MEASUREMENT_EVENT_REPORTS_CTC_EARLY_REPORTING_WINDOWS = |
| String.join( |
| ",", |
| Long.toString(TimeUnit.DAYS.toSeconds(2)), |
| Long.toString(TimeUnit.DAYS.toSeconds(7))); |
| |
| /** |
| * Returns configured comma separated early CTC based source's event reporting windows in |
| * seconds. |
| */ |
| default String getMeasurementEventReportsCtcEarlyReportingWindows() { |
| return MEASUREMENT_EVENT_REPORTS_CTC_EARLY_REPORTING_WINDOWS; |
| } |
| |
| /** Disable aggregate report delay by default. */ |
| boolean MEASUREMENT_ENABLE_CONFIGURABLE_AGGREGATE_REPORT_DELAY = false; |
| |
| /** Returns true if aggregate report delay configurability is enabled, false otherwise. */ |
| default boolean getMeasurementEnableConfigurableAggregateReportDelay() { |
| return MEASUREMENT_ENABLE_CONFIGURABLE_AGGREGATE_REPORT_DELAY; |
| } |
| |
| /** |
| * Default aggregate report delay. Derived from {@link |
| * com.android.adservices.service.measurement.PrivacyParams#AGGREGATE_REPORT_MIN_DELAY} and |
| * {@link com.android.adservices.service.measurement.PrivacyParams#AGGREGATE_REPORT_DELAY_SPAN}. |
| */ |
| String MEASUREMENT_AGGREGATE_REPORT_DELAY_CONFIG = |
| String.join( |
| ",", |
| Long.toString(TimeUnit.MINUTES.toMillis(0L)), |
| Long.toString(TimeUnit.MINUTES.toMillis(10L))); |
| |
| /** |
| * Returns configured comma separated aggregate report min delay and aggregate report delay |
| * span. |
| */ |
| default String getMeasurementAggregateReportDelayConfig() { |
| return MEASUREMENT_AGGREGATE_REPORT_DELAY_CONFIG; |
| } |
| |
| /** Disable conversions configurability by default. */ |
| boolean DEFAULT_MEASUREMENT_ENABLE_VTC_CONFIGURABLE_MAX_EVENT_REPORTS = false; |
| |
| /** |
| * Returns true, if event reports max conversions configurability is enabled, false otherwise. |
| */ |
| default boolean getMeasurementEnableVtcConfigurableMaxEventReports() { |
| return DEFAULT_MEASUREMENT_ENABLE_VTC_CONFIGURABLE_MAX_EVENT_REPORTS; |
| } |
| |
| /** Disable conversions configurability by default. */ |
| int DEFAULT_MEASUREMENT_VTC_CONFIGURABLE_MAX_EVENT_REPORTS_COUNT = 2; |
| |
| /** Returns the default max allowed number of event reports. */ |
| default int getMeasurementVtcConfigurableMaxEventReportsCount() { |
| return DEFAULT_MEASUREMENT_VTC_CONFIGURABLE_MAX_EVENT_REPORTS_COUNT; |
| } |
| |
| /** Default Measurement ARA parsing alignment v1 feature flag. */ |
| boolean MEASUREMENT_ENABLE_ARA_PARSING_ALIGNMENT_V1 = true; |
| |
| /** Returns whether Measurement ARA parsing alignment v1 feature is enabled. */ |
| default boolean getMeasurementEnableAraParsingAlignmentV1() { |
| return MEASUREMENT_ENABLE_ARA_PARSING_ALIGNMENT_V1; |
| } |
| |
| /** Default Measurement ARA parsing alignment v1 feature flag. */ |
| boolean MEASUREMENT_ENABLE_ARA_DEDUPLICATION_ALIGNMENT_V1 = true; |
| |
| /** Returns whether Measurement ARA deduplication alignment v1 feature is enabled. */ |
| default boolean getMeasurementEnableAraDeduplicationAlignmentV1() { |
| return MEASUREMENT_ENABLE_ARA_DEDUPLICATION_ALIGNMENT_V1; |
| } |
| |
| /** Default Measurement source deactivation after filtering feature flag. */ |
| boolean MEASUREMENT_ENABLE_SOURCE_DEACTIVATION_AFTER_FILTERING = false; |
| |
| /** Returns whether Measurement source deactivation after filtering feature is enabled. */ |
| default boolean getMeasurementEnableSourceDeactivationAfterFiltering() { |
| return MEASUREMENT_ENABLE_SOURCE_DEACTIVATION_AFTER_FILTERING; |
| } |
| |
| /** Default Measurement app package name logging flag. */ |
| boolean MEASUREMENT_ENABLE_APP_PACKAGE_NAME_LOGGING = true; |
| |
| /** Returns whether Measurement app package name logging is enabled. */ |
| default boolean getMeasurementEnableAppPackageNameLogging() { |
| return MEASUREMENT_ENABLE_APP_PACKAGE_NAME_LOGGING; |
| } |
| |
| /** Default allowlist to enable app package name logging. */ |
| String MEASUREMENT_APP_PACKAGE_NAME_LOGGING_ALLOWLIST = ""; |
| |
| /** Returns a list of app package names that allows logging. */ |
| default String getMeasurementAppPackageNameLoggingAllowlist() { |
| return MEASUREMENT_APP_PACKAGE_NAME_LOGGING_ALLOWLIST; |
| } |
| |
| /** Disable measurement reporting jobs to throw unaccounted exceptions by default. */ |
| boolean MEASUREMENT_ENABLE_REPORTING_JOBS_THROW_UNACCOUNTED_EXCEPTION = false; |
| |
| /** |
| * If enabled, measurement reporting jobs will throw unaccounted e.g. unexpected unchecked |
| * exceptions. |
| */ |
| default boolean getMeasurementEnableReportingJobsThrowUnaccountedException() { |
| return MEASUREMENT_ENABLE_REPORTING_JOBS_THROW_UNACCOUNTED_EXCEPTION; |
| } |
| |
| /** |
| * Disable measurement reporting jobs to throw {@link org.json.JSONException} exception by |
| * default. |
| */ |
| boolean MEASUREMENT_ENABLE_REPORTING_JOBS_THROW_JSON_EXCEPTION = false; |
| |
| /** If enabled, measurement reporting jobs will throw {@link org.json.JSONException}. */ |
| default boolean getMeasurementEnableReportingJobsThrowJsonException() { |
| return MEASUREMENT_ENABLE_REPORTING_JOBS_THROW_JSON_EXCEPTION; |
| } |
| |
| /** Disable measurement report to be deleted if any unrecoverable exception occurs. */ |
| boolean MEASUREMENT_ENABLE_DELETE_REPORTS_ON_UNRECOVERABLE_EXCEPTION = false; |
| |
| /** If enabled, measurement reports will get deleted if any unrecoverable exception occurs. */ |
| default boolean getMeasurementEnableReportDeletionOnUnrecoverableException() { |
| return MEASUREMENT_ENABLE_DELETE_REPORTS_ON_UNRECOVERABLE_EXCEPTION; |
| } |
| |
| /** Disable measurement aggregate reporting jobs to throw {@code CryptoException} by default. */ |
| boolean MEASUREMENT_ENABLE_REPORTING_JOBS_THROW_CRYPTO_EXCEPTION = false; |
| |
| /** If enabled, measurement aggregate reporting job will throw {@code CryptoException}. */ |
| default boolean getMeasurementEnableReportingJobsThrowCryptoException() { |
| return MEASUREMENT_ENABLE_REPORTING_JOBS_THROW_CRYPTO_EXCEPTION; |
| } |
| |
| /** |
| * Disable measurement datastore to throw {@link |
| * com.android.adservices.data.measurement.DatastoreException} when it occurs by default. |
| */ |
| boolean MEASUREMENT_ENABLE_DATASTORE_MANAGER_THROW_DATASTORE_EXCEPTION = false; |
| |
| /** |
| * If enabled, measurement DatastoreManager can throw DatastoreException wrapped in an unchecked |
| * exception. |
| */ |
| default boolean getMeasurementEnableDatastoreManagerThrowDatastoreException() { |
| return MEASUREMENT_ENABLE_DATASTORE_MANAGER_THROW_DATASTORE_EXCEPTION; |
| } |
| |
| /** Set the sampling rate to 100% for unknown exceptions to be re-thrown. */ |
| float MEASUREMENT_THROW_UNKNOWN_EXCEPTION_SAMPLING_RATE = 1.0f; |
| |
| /** Sampling rate to decide whether to throw unknown exceptions for measurement. */ |
| default float getMeasurementThrowUnknownExceptionSamplingRate() { |
| return MEASUREMENT_THROW_UNKNOWN_EXCEPTION_SAMPLING_RATE; |
| } |
| |
| boolean MEASUREMENT_DELETE_UNINSTALLED_JOB_PERSISTED = true; |
| |
| /** Returns whether to persist this job across device reboots for delete uninstalled job. */ |
| default boolean getMeasurementDeleteUninstalledJobPersisted() { |
| return MEASUREMENT_DELETE_UNINSTALLED_JOB_PERSISTED; |
| } |
| |
| long MEASUREMENT_DELETE_UNINSTALLED_JOB_PERIOD_MS = TimeUnit.HOURS.toMillis(24); |
| |
| /** |
| * Returns the min time period (in millis) between each uninstalled-record deletion maintenance |
| * job run. |
| */ |
| default long getMeasurementDeleteUninstalledJobPeriodMs() { |
| return MEASUREMENT_DELETE_UNINSTALLED_JOB_PERIOD_MS; |
| } |
| |
| boolean MEASUREMENT_DELETE_EXPIRED_JOB_PERSISTED = true; |
| |
| /** Returns whether to persist this job across device reboots for delete expired job. */ |
| default boolean getMeasurementDeleteExpiredJobPersisted() { |
| return MEASUREMENT_DELETE_EXPIRED_JOB_PERSISTED; |
| } |
| |
| boolean MEASUREMENT_DELETE_EXPIRED_JOB_REQUIRES_DEVICE_IDLE = true; |
| |
| /** Returns whether to require device to be idle for delete expired job. */ |
| default boolean getMeasurementDeleteExpiredJobRequiresDeviceIdle() { |
| return MEASUREMENT_DELETE_EXPIRED_JOB_REQUIRES_DEVICE_IDLE; |
| } |
| |
| long MEASUREMENT_DELETE_EXPIRED_JOB_PERIOD_MS = TimeUnit.HOURS.toMillis(24); |
| |
| /** |
| * Returns the min time period (in millis) between each expired-record deletion maintenance job |
| * run. |
| */ |
| default long getMeasurementDeleteExpiredJobPeriodMs() { |
| return MEASUREMENT_DELETE_EXPIRED_JOB_PERIOD_MS; |
| } |
| |
| boolean MEASUREMENT_EVENT_REPORTING_JOB_REQUIRED_BATTERY_NOT_LOW = true; |
| |
| /** Returns whether to require battery not low for event reporting job . */ |
| default boolean getMeasurementEventReportingJobRequiredBatteryNotLow() { |
| return MEASUREMENT_EVENT_REPORTING_JOB_REQUIRED_BATTERY_NOT_LOW; |
| } |
| |
| int MEASUREMENT_EVENT_REPORTING_JOB_REQUIRED_NETWORK_TYPE = JobInfo.NETWORK_TYPE_UNMETERED; |
| |
| /** Returns the required network type for event reporting job . */ |
| default int getMeasurementEventReportingJobRequiredNetworkType() { |
| return MEASUREMENT_EVENT_REPORTING_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| boolean MEASUREMENT_EVENT_REPORTING_JOB_PERSISTED = true; |
| |
| /** Returns whether to persist this job across device reboots for event reporting job. */ |
| default boolean getMeasurementEventReportingJobPersisted() { |
| return MEASUREMENT_EVENT_REPORTING_JOB_PERSISTED; |
| } |
| |
| boolean MEASUREMENT_EVENT_FALLBACK_REPORTING_JOB_REQUIRED_BATTERY_NOT_LOW = true; |
| |
| /** Returns whether to require battery not low for event fallback reporting job . */ |
| default boolean getMeasurementEventFallbackReportingJobRequiredBatteryNotLow() { |
| return MEASUREMENT_EVENT_FALLBACK_REPORTING_JOB_REQUIRED_BATTERY_NOT_LOW; |
| } |
| |
| int MEASUREMENT_EVENT_FALLBACK_REPORTING_JOB_REQUIRED_NETWORK_TYPE = JobInfo.NETWORK_TYPE_ANY; |
| |
| /** Returns the required network type for event fallback reporting job . */ |
| default int getMeasurementEventFallbackReportingJobRequiredNetworkType() { |
| return MEASUREMENT_EVENT_FALLBACK_REPORTING_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| boolean MEASUREMENT_EVENT_FALLBACK_REPORTING_JOB_PERSISTED = true; |
| |
| /** |
| * Returns whether to persist this job across device reboots for event fallback reporting job. |
| */ |
| default boolean getMeasurementEventFallbackReportingJobPersisted() { |
| return MEASUREMENT_EVENT_FALLBACK_REPORTING_JOB_PERSISTED; |
| } |
| |
| int MEASUREMENT_DEBUG_REPORTING_JOB_REQUIRED_NETWORK_TYPE = JobInfo.NETWORK_TYPE_ANY; |
| |
| /** Returns the required network type for debug reporting job . */ |
| default int getMeasurementDebugReportingJobRequiredNetworkType() { |
| return MEASUREMENT_DEBUG_REPORTING_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| int MEASUREMENT_DEBUG_REPORTING_FALLBACK_JOB_REQUIRED_NETWORK_TYPE = JobInfo.NETWORK_TYPE_ANY; |
| |
| /** Returns the required network type for debug reporting fallback job . */ |
| default int getMeasurementDebugReportingFallbackJobRequiredNetworkType() { |
| return MEASUREMENT_DEBUG_REPORTING_FALLBACK_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| boolean MEASUREMENT_DEBUG_REPORTING_FALLBACK_JOB_PERSISTED = true; |
| |
| /** |
| * Returns whether to persist this job across device reboots for debug fallback reporting job. |
| */ |
| default boolean getMeasurementDebugReportingFallbackJobPersisted() { |
| return MEASUREMENT_DEBUG_REPORTING_FALLBACK_JOB_PERSISTED; |
| } |
| |
| int MEASUREMENT_VERBOSE_DEBUG_REPORTING_JOB_REQUIRED_NETWORK_TYPE = JobInfo.NETWORK_TYPE_ANY; |
| |
| /** Returns the required network type for verbose debug reporting job . */ |
| default int getMeasurementVerboseDebugReportingJobRequiredNetworkType() { |
| return MEASUREMENT_VERBOSE_DEBUG_REPORTING_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| boolean MEASUREMENT_VERBOSE_DEBUG_REPORTING_FALLBACK_JOB_PERSISTED = true; |
| |
| /** |
| * Returns whether to persist this job across device reboots for verbose debug fallback |
| * reporting job. |
| */ |
| default boolean getMeasurementVerboseDebugReportingFallbackJobPersisted() { |
| return MEASUREMENT_VERBOSE_DEBUG_REPORTING_FALLBACK_JOB_PERSISTED; |
| } |
| |
| boolean MEASUREMENT_ATTRIBUTION_JOB_PERSISTED = false; |
| |
| /** Returns whether to persist this job across device reboots for attribution job. */ |
| default boolean getMeasurementAttributionJobPersisted() { |
| return MEASUREMENT_ATTRIBUTION_JOB_PERSISTED; |
| } |
| |
| long MEASUREMENT_ATTRIBUTION_JOB_TRIGGERING_DELAY_MS = TimeUnit.MINUTES.toMillis(2); |
| |
| /** Delay for attribution job triggering. */ |
| default long getMeasurementAttributionJobTriggeringDelayMs() { |
| return MEASUREMENT_ATTRIBUTION_JOB_TRIGGERING_DELAY_MS; |
| } |
| |
| boolean MEASUREMENT_ATTRIBUTION_FALLBACK_JOB_PERSISTED = true; |
| |
| /** Returns whether to persist this job across device reboots for attribution fallback job. */ |
| default boolean getMeasurementAttributionFallbackJobPersisted() { |
| return MEASUREMENT_ATTRIBUTION_FALLBACK_JOB_PERSISTED; |
| } |
| |
| int MEASUREMENT_ASYNC_REGISTRATION_QUEUE_JOB_REQUIRED_NETWORK_TYPE = JobInfo.NETWORK_TYPE_ANY; |
| |
| /** Returns the required network type for async registration queue job. */ |
| default int getMeasurementAsyncRegistrationQueueJobRequiredNetworkType() { |
| return MEASUREMENT_ASYNC_REGISTRATION_QUEUE_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| boolean MEASUREMENT_ASYNC_REGISTRATION_QUEUE_JOB_PERSISTED = false; |
| |
| /** |
| * Returns whether to persist this job across device reboots for async registration queue job. |
| */ |
| default boolean getMeasurementAsyncRegistrationQueueJobPersisted() { |
| return MEASUREMENT_ASYNC_REGISTRATION_QUEUE_JOB_PERSISTED; |
| } |
| |
| boolean MEASUREMENT_ASYNC_REGISTRATION_FALLBACK_JOB_REQUIRED_BATTERY_NOT_LOW = true; |
| |
| /** Returns whether to require battery not low for async registration queue fallback job. */ |
| default boolean getMeasurementAsyncRegistrationFallbackJobRequiredBatteryNotLow() { |
| return MEASUREMENT_ASYNC_REGISTRATION_FALLBACK_JOB_REQUIRED_BATTERY_NOT_LOW; |
| } |
| |
| int MEASUREMENT_ASYNC_REGISTRATION_FALLBACK_JOB_REQUIRED_NETWORK_TYPE = |
| JobInfo.NETWORK_TYPE_ANY; |
| |
| /** Returns the required network type for async registration queue fallback job. */ |
| default int getMeasurementAsyncRegistrationFallbackJobRequiredNetworkType() { |
| return MEASUREMENT_ASYNC_REGISTRATION_FALLBACK_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| boolean MEASUREMENT_ASYNC_REGISTRATION_FALLBACK_JOB_PERSISTED = true; |
| |
| /** |
| * Returns whether to persist this job across device reboots for async registration queue |
| * fallback job. |
| */ |
| default boolean getMeasurementAsyncRegistrationFallbackJobPersisted() { |
| return MEASUREMENT_ASYNC_REGISTRATION_FALLBACK_JOB_PERSISTED; |
| } |
| |
| boolean MEASUREMENT_AGGREGATE_REPORTING_JOB_REQUIRED_BATTERY_NOT_LOW = true; |
| |
| /** Returns whether to require battery not low for aggregate reporting job. */ |
| default boolean getMeasurementAggregateReportingJobRequiredBatteryNotLow() { |
| return MEASUREMENT_AGGREGATE_REPORTING_JOB_REQUIRED_BATTERY_NOT_LOW; |
| } |
| |
| int MEASUREMENT_AGGREGATE_REPORTING_JOB_REQUIRED_NETWORK_TYPE = JobInfo.NETWORK_TYPE_UNMETERED; |
| |
| /** Returns the required network type for aggregate reporting job. */ |
| default int getMeasurementAggregateReportingJobRequiredNetworkType() { |
| return MEASUREMENT_AGGREGATE_REPORTING_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| boolean MEASUREMENT_AGGREGATE_REPORTING_JOB_PERSISTED = true; |
| |
| /** Returns whether to persist this job across device reboots for aggregate reporting job. */ |
| default boolean getMeasurementAggregateReportingJobPersisted() { |
| return MEASUREMENT_AGGREGATE_REPORTING_JOB_PERSISTED; |
| } |
| |
| boolean MEASUREMENT_AGGREGATE_FALLBACK_REPORTING_JOB_REQUIRED_BATTERY_NOT_LOW = true; |
| |
| /** Returns whether to require battery not low for aggregate fallback reporting job. */ |
| default boolean getMeasurementAggregateFallbackReportingJobRequiredBatteryNotLow() { |
| return MEASUREMENT_AGGREGATE_FALLBACK_REPORTING_JOB_REQUIRED_BATTERY_NOT_LOW; |
| } |
| |
| int MEASUREMENT_AGGREGATE_FALLBACK_REPORTING_JOB_REQUIRED_NETWORK_TYPE = |
| JobInfo.NETWORK_TYPE_ANY; |
| |
| /** Returns the required network type for aggregate fallback reporting job . */ |
| default int getMeasurementAggregateFallbackReportingJobRequiredNetworkType() { |
| return MEASUREMENT_AGGREGATE_FALLBACK_REPORTING_JOB_REQUIRED_NETWORK_TYPE; |
| } |
| |
| boolean MEASUREMENT_AGGREGATE_FALLBACK_REPORTING_JOB_PERSISTED = true; |
| |
| /** |
| * Returns whether to persist this job across device reboots for aggregate fallback reporting |
| * job. |
| */ |
| default boolean getMeasurementAggregateFallbackReportingJobPersisted() { |
| return MEASUREMENT_AGGREGATE_FALLBACK_REPORTING_JOB_PERSISTED; |
| } |
| |
| /** Default U18 UX feature flag.. */ |
| boolean DEFAULT_U18_UX_ENABLED = false; |
| |
| /** U18 UX feature flag.. */ |
| default boolean getU18UxEnabled() { |
| return DEFAULT_U18_UX_ENABLED; |
| } |
| |
| /** Default RVC UX feature flag.. */ |
| boolean DEFAULT_RVC_UX_ENABLED = false; |
| |
| /** RVC UX feature flag.. */ |
| default boolean getEnableRvcUx() { |
| return DEFAULT_RVC_UX_ENABLED; |
| } |
| |
| /** Default RVC NOTIFICATION feature flag.. */ |
| boolean DEFAULT_RVC_NOTIFICATION_ENABLED = false; |
| |
| /** RVC Notification feature flag.. */ |
| default boolean getEnableRvcNotification() { |
| return DEFAULT_RVC_NOTIFICATION_ENABLED; |
| } |
| |
| /** Default enableAdServices system API feature flag.. */ |
| boolean DEFAULT_ENABLE_AD_SERVICES_SYSTEM_API = false; |
| |
| /** enableAdServices system API feature flag.. */ |
| default boolean getEnableAdServicesSystemApi() { |
| return DEFAULT_ENABLE_AD_SERVICES_SYSTEM_API; |
| } |
| |
| /** Disables client error logging for the list of error codes. Default value is empty list. */ |
| ImmutableList<Integer> ERROR_CODE_LOGGING_DENY_LIST = ImmutableList.of(); |
| |
| /** Returns a list of error codes for which we don't want to do error logging. */ |
| default ImmutableList<Integer> getErrorCodeLoggingDenyList() { |
| return ERROR_CODE_LOGGING_DENY_LIST; |
| } |
| |
| /** Returns the map of UX flags. */ |
| default Map<String, Boolean> getUxFlags() { |
| return new HashMap<>(); |
| } |
| |
| /** Enable feature to unify destinations for event reports by default. */ |
| boolean DEFAULT_MEASUREMENT_ENABLE_COARSE_EVENT_REPORT_DESTINATIONS = true; |
| |
| /** |
| * Returns true if event reporting destinations are enabled to be reported in a coarse manner, |
| * i.e. both app and web destinations are merged into a single array in the event report. |
| */ |
| default boolean getMeasurementEnableCoarseEventReportDestinations() { |
| return DEFAULT_MEASUREMENT_ENABLE_COARSE_EVENT_REPORT_DESTINATIONS; |
| } |
| |
| /** Privacy Params */ |
| int MEASUREMENT_MAX_DISTINCT_WEB_DESTINATIONS_IN_SOURCE_REGISTRATION = 3; |
| |
| /** Max distinct web destinations in a source registration. */ |
| default int getMeasurementMaxDistinctWebDestinationsInSourceRegistration() { |
| return MEASUREMENT_MAX_DISTINCT_WEB_DESTINATIONS_IN_SOURCE_REGISTRATION; |
| } |
| |
| long MEASUREMENT_MAX_REPORTING_REGISTER_SOURCE_EXPIRATION_IN_SECONDS = |
| TimeUnit.DAYS.toSeconds(30); |
| |
| /** |
| * Max expiration value in seconds for attribution reporting register source. This value is also |
| * the default if no expiration was specified. |
| */ |
| default long getMeasurementMaxReportingRegisterSourceExpirationInSeconds() { |
| return MEASUREMENT_MAX_REPORTING_REGISTER_SOURCE_EXPIRATION_IN_SECONDS; |
| } |
| |
| long MEASUREMENT_MIN_REPORTING_REGISTER_SOURCE_EXPIRATION_IN_SECONDS = |
| TimeUnit.DAYS.toSeconds(1); |
| |
| /** Min expiration value in seconds for attribution reporting register source. */ |
| default long getMeasurementMinReportingRegisterSourceExpirationInSeconds() { |
| return MEASUREMENT_MIN_REPORTING_REGISTER_SOURCE_EXPIRATION_IN_SECONDS; |
| } |
| |
| long MEASUREMENT_MAX_INSTALL_ATTRIBUTION_WINDOW = TimeUnit.DAYS.toSeconds(30); |
| |
| /** Maximum limit of duration to determine attribution for a verified installation. */ |
| default long getMeasurementMaxInstallAttributionWindow() { |
| return MEASUREMENT_MAX_INSTALL_ATTRIBUTION_WINDOW; |
| } |
| |
| long MEASUREMENT_MIN_INSTALL_ATTRIBUTION_WINDOW = TimeUnit.DAYS.toSeconds(1); |
| |
| /** Minimum limit of duration to determine attribution for a verified installation. */ |
| default long getMeasurementMinInstallAttributionWindow() { |
| return MEASUREMENT_MIN_INSTALL_ATTRIBUTION_WINDOW; |
| } |
| |
| long MEASUREMENT_MAX_POST_INSTALL_EXCLUSIVITY_WINDOW = TimeUnit.DAYS.toSeconds(30); |
| |
| /** Maximum acceptable install cooldown period. */ |
| default long getMeasurementMaxPostInstallExclusivityWindow() { |
| return MEASUREMENT_MAX_POST_INSTALL_EXCLUSIVITY_WINDOW; |
| } |
| |
| long MEASUREMENT_MIN_POST_INSTALL_EXCLUSIVITY_WINDOW = 0L; |
| |
| /** Default and minimum value for cooldown period of source which led to installation. */ |
| default long getMeasurementMinPostInstallExclusivityWindow() { |
| return MEASUREMENT_MIN_POST_INSTALL_EXCLUSIVITY_WINDOW; |
| } |
| |
| int MEASUREMENT_MAX_SUM_OF_AGGREGATE_VALUES_PER_SOURCE = 65536; |
| |
| /** |
| * L1, the maximum sum of the contributions (values) across all buckets for a given source |
| * event. |
| */ |
| default int getMeasurementMaxSumOfAggregateValuesPerSource() { |
| return MEASUREMENT_MAX_SUM_OF_AGGREGATE_VALUES_PER_SOURCE; |
| } |
| |
| long MEASUREMENT_RATE_LIMIT_WINDOW_MILLISECONDS = TimeUnit.DAYS.toMillis(30); |
| |
| /** |
| * Rate limit window for (Source Site, Destination Site, Reporting Site, Window) privacy unit. |
| * 30 days. |
| */ |
| default long getMeasurementRateLimitWindowMilliseconds() { |
| return MEASUREMENT_RATE_LIMIT_WINDOW_MILLISECONDS; |
| } |
| |
| long MEASUREMENT_MIN_REPORTING_ORIGIN_UPDATE_WINDOW = TimeUnit.DAYS.toMillis(1); |
| |
| /** Minimum time window after which reporting origin can be migrated */ |
| default long getMeasurementMinReportingOriginUpdateWindow() { |
| return MEASUREMENT_MIN_REPORTING_ORIGIN_UPDATE_WINDOW; |
| } |
| |
| float MEASUREMENT_INSTALL_ATTR_DUAL_DESTINATION_EVENT_NOISE_PROBABILITY = 0.0000208f; |
| |
| /** |
| * {@link Source} Noise probability for 'Event' when both destinations (app and web) are |
| * available on the source and supports install attribution. |
| */ |
| default float getMeasurementInstallAttrDualDestinationEventNoiseProbability() { |
| return MEASUREMENT_INSTALL_ATTR_DUAL_DESTINATION_EVENT_NOISE_PROBABILITY; |
| } |
| |
| float MEASUREMENT_DUAL_DESTINATION_NAVIGATION_NOISE_PROBABILITY = 0.0170218f; |
| |
| /** |
| * {@link Source} Noise probability for 'Navigation' when both destinations (app and web) are |
| * available on the source. |
| */ |
| default float getMeasurementDualDestinationNavigationNoiseProbability() { |
| return MEASUREMENT_DUAL_DESTINATION_NAVIGATION_NOISE_PROBABILITY; |
| } |
| |
| float MEASUREMENT_INSTALL_ATTR_DUAL_DESTINATION_NAVIGATION_NOISE_PROBABILITY = |
| MEASUREMENT_DUAL_DESTINATION_NAVIGATION_NOISE_PROBABILITY; |
| |
| /** |
| * {@link Source} Noise probability for 'Navigation' when both destinations (app and web) are |
| * available on the source and supports install attribution. |
| */ |
| default float getMeasurementInstallAttrDualDestinationNavigationNoiseProbability() { |
| return MEASUREMENT_INSTALL_ATTR_DUAL_DESTINATION_NAVIGATION_NOISE_PROBABILITY; |
| } |
| |
| float MEASUREMENT_DUAL_DESTINATION_EVENT_NOISE_PROBABILITY = 0.0000042f; |
| |
| /** |
| * {@link Source} Noise probability for 'Event' when both destinations (app and web) are |
| * available on the source. |
| */ |
| default float getMeasurementDualDestinationEventNoiseProbability() { |
| return MEASUREMENT_DUAL_DESTINATION_EVENT_NOISE_PROBABILITY; |
| } |
| |
| float MEASUREMENT_INSTALL_ATTR_EVENT_NOISE_PROBABILITY = 0.0000125f; |
| |
| /** {@link Source} Noise probability for 'Event' which supports install attribution. */ |
| default float getMeasurementInstallAttrEventNoiseProbability() { |
| return MEASUREMENT_INSTALL_ATTR_EVENT_NOISE_PROBABILITY; |
| } |
| |
| float MEASUREMENT_EVENT_NOISE_PROBABILITY = 0.0000025f; |
| |
| /** {@link Source} Noise probability for 'Event'. */ |
| default float getMeasurementEventNoiseProbability() { |
| return MEASUREMENT_EVENT_NOISE_PROBABILITY; |
| } |
| |
| float MEASUREMENT_NAVIGATION_NOISE_PROBABILITY = 0.0024263f; |
| |
| /** {@link Source} Noise probability for 'Navigation'. */ |
| default float getMeasurementNavigationNoiseProbability() { |
| return MEASUREMENT_NAVIGATION_NOISE_PROBABILITY; |
| } |
| |
| float MEASUREMENT_INSTALL_ATTR_NAVIGATION_NOISE_PROBABILITY = |
| MEASUREMENT_NAVIGATION_NOISE_PROBABILITY; |
| |
| /** {@link Source} Noise probability for 'Navigation' which supports install attribution. */ |
| default float getMeasurementInstallAttrNavigationNoiseProbability() { |
| return MEASUREMENT_INSTALL_ATTR_NAVIGATION_NOISE_PROBABILITY; |
| } |
| |
| boolean MEASUREMENT_ENABLE_PREINSTALL_CHECK = false; |
| |
| /** Returns true when pre-install check is enabled. */ |
| default boolean getMeasurementEnablePreinstallCheck() { |
| return MEASUREMENT_ENABLE_PREINSTALL_CHECK; |
| } |
| |
| /** Default value of flag for logging consent migration metrics when OTA from S to T+. */ |
| boolean DEFAULT_ADSERVICES_CONSENT_MIGRATION_LOGGING_ENABLED = true; |
| |
| /*** |
| * Returns true when logging consent migration metrics is enabled when OTA from S to T+. |
| */ |
| default boolean getAdservicesConsentMigrationLoggingEnabled() { |
| return DEFAULT_ADSERVICES_CONSENT_MIGRATION_LOGGING_ENABLED; |
| } |
| |
| /** The default token for resetting consent notificatio.. */ |
| String CONSENT_NOTIFICATION_RESET_TOKEN = ""; |
| |
| /** Returns the consent notification reset token. */ |
| default String getConsentNotificationResetToken() { |
| return CONSENT_NOTIFICATION_RESET_TOKEN; |
| } |
| |
| /** Default whether Enrollment Mdd Record Deletion feature is enabled. */ |
| boolean ENROLLMENT_MDD_RECORD_DELETION_ENABLED = false; |
| |
| /** Returns whether the {@code enrollmentMddRecordDeletion} feature is enabled. */ |
| default boolean getEnrollmentMddRecordDeletionEnabled() { |
| return ENROLLMENT_MDD_RECORD_DELETION_ENABLED; |
| } |
| |
| /** Default value of whether topics cobalt logging feature is enabled. */ |
| boolean TOPICS_COBALT_LOGGING_ENABLED = false; |
| |
| /** |
| * Returns whether the topics cobalt logging feature is enabled. |
| * |
| * <p>The topics cobalt logging will be disabled either the getCobaltLoggingEnabled or {@code |
| * TOPICS_COBALT_LOGGING_ENABLED} is {@code false}. |
| */ |
| default boolean getTopicsCobaltLoggingEnabled() { |
| return getCobaltLoggingEnabled() && TOPICS_COBALT_LOGGING_ENABLED; |
| } |
| |
| /** Default value of Cobalt Adservices Api key. */ |
| String COBALT_ADSERVICES_API_KEY_HEX = CobaltConstants.DEFAULT_API_KEY; |
| |
| default String getCobaltAdservicesApiKeyHex() { |
| return COBALT_ADSERVICES_API_KEY_HEX; |
| } |
| |
| /** |
| * Default value of Adservices release stage for Cobalt. The value should correspond to {@link |
| * com.google.cobalt.ReleaseStage} enum. |
| */ |
| String ADSERVICES_RELEASE_STAGE_FOR_COBALT = CobaltConstants.DEFAULT_RELEASE_STAGE; |
| |
| /** Returns the value of Adservices release stage for Cobalt. */ |
| default String getAdservicesReleaseStageForCobalt() { |
| return ADSERVICES_RELEASE_STAGE_FOR_COBALT; |
| } |
| |
| /** |
| * A feature flag to enable DB schema change to version 8 in Topics API. Version 8 is to add |
| * logged_topic column to ReturnedTopic table. |
| * |
| * <p>Default value is false, which means the feature is disabled by default and needs to be |
| * ramped up. |
| */ |
| boolean ENABLE_LOGGED_TOPIC = false; |
| |
| /** @return if to enable logged_topic column in ReturnedTopic table. */ |
| default boolean getEnableLoggedTopic() { |
| return ENABLE_LOGGED_TOPIC; |
| } |
| |
| /** Whether to enable database schema version 8 */ |
| boolean ENABLE_DATABASE_SCHEMA_VERSION_8 = false; |
| |
| /** @return if to enable database schema version 8. */ |
| default boolean getEnableDatabaseSchemaVersion8() { |
| return ENABLE_DATABASE_SCHEMA_VERSION_8; |
| } |
| |
| /** Whether to enable database schema version 9. */ |
| boolean ENABLE_DATABASE_SCHEMA_VERSION_9 = false; |
| |
| /** |
| * @return if to enable database schema version 9. |
| */ |
| default boolean getEnableDatabaseSchemaVersion9() { |
| return ENABLE_DATABASE_SCHEMA_VERSION_9; |
| } |
| |
| /** Flag to control which allow list in getMeasurementApiStatus. */ |
| boolean MEASUREMENT_ENABLE_API_STATUS_ALLOW_LIST_CHECK = false; |
| |
| /** Returns the flag to control which allow list to use in getMeasurementApiStatus. */ |
| default boolean getMsmtEnableApiStatusAllowListCheck() { |
| return MEASUREMENT_ENABLE_API_STATUS_ALLOW_LIST_CHECK; |
| } |
| |
| /** |
| * Default whether to limit logging for enrollment metrics to avoid performance issues. This |
| * includes not logging data that requires database queries and downloading MDD files. |
| */ |
| boolean ENROLLMENT_ENABLE_LIMITED_LOGGING = false; |
| |
| /** Returns whether enrollment logging should be limited. */ |
| default boolean getEnrollmentEnableLimitedLogging() { |
| return ENROLLMENT_ENABLE_LIMITED_LOGGING; |
| } |
| |
| /** |
| * Default value for if events will be registered as a source of attribution in addition to |
| * being reported. |
| */ |
| boolean FLEDGE_MEASUREMENT_REPORT_AND_REGISTER_EVENT_API_ENABLED = false; |
| |
| /** |
| * Returns if events will be registered as a source of attribution in addition to being |
| * reported. |
| * |
| * <p>This, unlocked by the short-term integration between Protected Audience (PA) and |
| * Measurement's ARA, enables the {@link |
| * android.adservices.adselection.AdSelectionManager#reportEvent} API to report an event and |
| * register it as source of attribution, using a single API call, unified under the hood. |
| * |
| * <ul> |
| * <li>When enabled, by default: ARA will report and register the event. |
| * <li>When enabled, with fallback: PA will report the event and ARA will register the event. |
| * <li>When disabled, when {@link |
| * android.adservices.adselection.AdSelectionManager#reportEvent} is called, only PA will |
| * report the event. |
| * </ul> |
| */ |
| default boolean getFledgeMeasurementReportAndRegisterEventApiEnabled() { |
| return FLEDGE_MEASUREMENT_REPORT_AND_REGISTER_EVENT_API_ENABLED; |
| } |
| |
| /** Default value for if the fallback for event reporting and source registration is enabled. */ |
| boolean FLEDGE_MEASUREMENT_REPORT_AND_REGISTER_EVENT_API_FALLBACK_ENABLED = false; |
| |
| /** |
| * Returns if the fallback for event reporting and source registration is enabled. |
| * |
| * <ul> |
| * <li>Only relevant if {@link #getFledgeMeasurementReportAndRegisterEventApiEnabled} is |
| * {@code true}. |
| * <li>When enabled, PA will report the event and ARA will register the event. |
| * <li>When disabled, ARA will report and register the event. |
| * </ul> |
| * |
| * <p>If enabled |
| */ |
| default boolean getFledgeMeasurementReportAndRegisterEventApiFallbackEnabled() { |
| return getFledgeMeasurementReportAndRegisterEventApiEnabled() |
| && FLEDGE_MEASUREMENT_REPORT_AND_REGISTER_EVENT_API_FALLBACK_ENABLED; |
| } |
| |
| /** Cobalt logging job period in milliseconds. */ |
| long COBALT_LOGGING_JOB_PERIOD_MS = 6 * 60 * 60 * 1000; // 6 hours. |
| |
| /** Returns the max time period (in milliseconds) between each cobalt logging job run. */ |
| default long getCobaltLoggingJobPeriodMs() { |
| return COBALT_LOGGING_JOB_PERIOD_MS; |
| } |
| |
| long COBALT_UPLOAD_SERVICE_UNBIND_DELAY_MS = 10 * 1000; // 10 seconds |
| |
| /** |
| * Returns the amount of time Cobalt should wait (in milliseconds) before unbinding from its |
| * upload service. |
| */ |
| default long getCobaltUploadServiceUnbindDelayMs() { |
| return COBALT_UPLOAD_SERVICE_UNBIND_DELAY_MS; |
| } |
| |
| /** Cobalt logging feature flag. */ |
| boolean COBALT_LOGGING_ENABLED = false; |
| |
| /** |
| * Returns the feature flag value for cobalt logging job. The cobalt logging feature will be |
| * disabled if either the Global Kill Switch or the Cobalt Logging enabled flag is true. |
| */ |
| default boolean getCobaltLoggingEnabled() { |
| return !getGlobalKillSwitch() && COBALT_LOGGING_ENABLED; |
| } |
| |
| /** U18 UX detention channel is enabled by default. */ |
| boolean IS_U18_UX_DETENTION_CHANNEL_ENABLED_DEFAULT = true; |
| |
| /** Returns whether the U18 UX detentional channel is enabled. */ |
| default boolean isU18UxDetentionChannelEnabled() { |
| return IS_U18_UX_DETENTION_CHANNEL_ENABLED_DEFAULT; |
| } |
| |
| /** U18 supervised account flow is enabled by default. */ |
| boolean IS_U18_SUPERVISED_ACCOUNT_ENABLED_DEFAULT = true; |
| |
| /** Returns whether the U18 supervised account is enabled. */ |
| default boolean isU18SupervisedAccountEnabled() { |
| return IS_U18_SUPERVISED_ACCOUNT_ENABLED_DEFAULT; |
| } |
| |
| /** |
| * Default value to determine whether {@link |
| * com.android.adservices.service.adid.AdIdCacheManager} is enabled to read AdId from and for |
| * AdIdProvider to update AdId to. |
| */ |
| boolean DEFAULT_ADID_CACHE_ENABLED = false; |
| |
| /** |
| * Returns if {@link com.android.adservices.service.adid.AdIdCacheManager} is enabled to read |
| * AdId from and for AdIdProvider to update AdId to. |
| * |
| * <ul> |
| * <li>When enabled, AdIdCacheManager will read AdId from the cache and AdIdProvider will |
| * update the cache if AdId changes. |
| * <li>When disabled, AdIdCacheManager will call AdIdProvider to get the AdId. |
| * </ul> |
| * |
| * @return if {@link com.android.adservices.service.adid.AdIdCacheManager} is enabled. |
| */ |
| default boolean getAdIdCacheEnabled() { |
| return DEFAULT_ADID_CACHE_ENABLED; |
| } |
| |
| long DEFAULT_AD_ID_FETCHER_TIMEOUT_MS = 50; |
| |
| /** |
| * Returns configured timeout value for {@link |
| * com.android.adservices.service.adselection.AdIdFetcher} logic. |
| * |
| * <p>The intended goal is to override this value for tests. |
| * |
| * @return Timeout in mills. |
| */ |
| default long getAdIdFetcherTimeoutMs() { |
| return DEFAULT_AD_ID_FETCHER_TIMEOUT_MS; |
| } |
| |
| boolean APP_CONFIG_RETURNS_ENABLED_BY_DEFAULT = false; |
| |
| /** |
| * Returns whether the API access checked by the AdServices XML config returns {@code true} by |
| * default (i.e., when the app doesn't define the config XML file or if the given API access is |
| * missing from that file). |
| */ |
| default boolean getAppConfigReturnsEnabledByDefault() { |
| return APP_CONFIG_RETURNS_ENABLED_BY_DEFAULT; |
| } |
| |
| /** |
| * Default value to determine whether {@link |
| * android.adservices.common.AdServicesCommonManager#enableAdServices} is enabled. |
| */ |
| boolean DEFAULT_ENABLE_ADSERVICES_API_ENABLED = true; |
| |
| /** |
| * Returns whether {@link android.adservices.common.AdServicesCommonManager#enableAdServices} is |
| * enabled. |
| */ |
| default boolean getEnableAdservicesApiEnabled() { |
| return DEFAULT_ENABLE_ADSERVICES_API_ENABLED; |
| } |
| |
| /** |
| * Default value to determine whether AdServicesExtDataStorageService related APIs are enabled. |
| */ |
| boolean DEFAULT_ENABLE_ADEXT_DATA_SERVICE_APIS = true; |
| |
| /** Returns whether AdServicesExtDataStorageService related APIs are enabled. */ |
| default boolean getEnableAdExtDataServiceApis() { |
| return DEFAULT_ENABLE_ADEXT_DATA_SERVICE_APIS; |
| } |
| |
| /** |
| * Default value to determine whether {@link |
| * android.adservices.common.AdServicesCommonManager#isAdServicesEnabled} is enabled. |
| */ |
| boolean DEFAULT_ADSERVICES_ENABLEMENT_CHECK_ENABLED = true; |
| |
| /** |
| * Returns whether {@link android.adservices.common.AdServicesCommonManager#isAdServicesEnabled} |
| * is enabled. |
| */ |
| default boolean getAdservicesEnablementCheckEnabled() { |
| return DEFAULT_ADSERVICES_ENABLEMENT_CHECK_ENABLED; |
| } |
| } |