/* * Copyright 2022 Google LLC * * 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.google.android.libraries.mobiledatadownload; /** * Responsible for configuring MDD. * *

All default implementations match default_value from GCL ignoring conditional_values, etc, * unless noted otherwise. */ public interface Flags { // LINT.IfChange // FeatureFlags default boolean clearStateOnMddDisabled() { return false; } default boolean mddDeleteGroupsRemovedAccounts() { return false; } default boolean broadcastNewlyDownloadedGroups() { return true; } default boolean logFileGroupsWithFilesMissing() { return true; } default boolean deleteFileGroupsWithFilesMissing() { return true; } default boolean dumpMddInfo() { return false; } default boolean enableDebugUi() { return false; } default boolean enableClientErrorLogging() { return false; } default int fileKeyVersion() { return 2; } default boolean testOnlyFileKeyVersion() { return false; } default boolean enableCompressedFile() { return true; } default boolean enableZipFolder() { return true; } default boolean enableDeltaDownload() { return true; } default boolean enableMddGcmService() { return true; } default boolean enableSilentFeedback() { return true; } default boolean migrateToNewFileKey() { return true; } default boolean migrateFileExpirationPolicy() { return true; } default boolean downloadFirstOnWifiThenOnAnyNetwork() { return true; } default boolean logStorageStats() { return true; } default boolean logNetworkStats() { return true; } default boolean removeGroupkeysWithDownloadedFieldNotSet() { return true; } default boolean cacheLastLocation() { return true; } default int locationCustomParamS2Level() { return 10; } default int locationTaskTimeoutSec() { return 5; } default boolean addConfigsFromPhenotype() { return true; } default boolean enableMobileDataDownload() { return true; } default int mddResetTrigger() { return 0; } default boolean mddEnableDownloadPendingGroups() { return true; } default boolean mddEnableVerifyPendingGroups() { return true; } /** Controls whether daily maintenance includes {@link MobileDataDownload#collectGarbage}. */ default boolean mddEnableGarbageCollection() { return true; } default boolean mddDeleteUninstalledApps() { return true; } default boolean enableMobstoreFileService() { return true; } default boolean enableDelayedDownload() { return true; } default boolean gcmRescheduleOnlyOncePerProcessStart() { return true; } default boolean gmsMddSwitchToCronet() { return false; } default boolean enableDaysSinceLastMaintenanceTracking() { return true; } default boolean enableSideloading() { return false; } default boolean enableDownloadStageExperimentIdPropagation() { return false; // TODO(b/201463803): flip to true once rolled out. } // Controls verification of isolated symlink structures. // By default, verification is ON. if this flag is set to false, verification will be turned OFF. default boolean enableIsolatedStructureVerification() { return true; } default boolean enableRngBasedDeviceStableSampling() { return true; } /** * Controls the key used for file download deduping. * *

By default, this flag is FALSE, so file download deduping is performed using the destination * file uri. If this flag is enabled (TRUE), file download deduping will use NewFileKey. */ default boolean enableFileDownloadDedupByFileKey() { return false; } // PeriodicTaskFlags default long maintenanceGcmTaskPeriod() { return 86400; } default long chargingGcmTaskPeriod() { return 21600; } default long cellularChargingGcmTaskPeriod() { return 21600; } default long wifiChargingGcmTaskPeriod() { return 21600; } // MddSampleIntervals default int mddDefaultSampleInterval() { return 100; } default int mddDownloadEventsSampleInterval() { return 1; } default int groupStatsLoggingSampleInterval() { return 100; } default int apiLoggingSampleInterval() { return 100; } default int cleanupLogLoggingSampleInterval() { return 1000; } default int silentFeedbackSampleInterval() { return 100; } default int storageStatsLoggingSampleInterval() { return 100; } default int networkStatsLoggingSampleInterval() { return 100; } default int mobstoreFileServiceStatsSampleInterval() { return 100; } default int mddAndroidSharingSampleInterval() { return 100; } // DownloaderFlags default boolean downloaderEnforceHttps() { return true; } default boolean enforceLowStorageBehavior() { return true; } default int absFreeSpaceAfterDownload() { return 500 * 1024 * 1024; // 500mb } default int absFreeSpaceAfterDownloadLowStorageAllowed() { return 100 * 1024 * 1024; // 100mb } default int absFreeSpaceAfterDownloadExtremelyLowStorageAllowed() { return 2 * 1024 * 1024; // 2mb } default float fractionFreeSpaceAfterDownload() { return 0.1F; } default int timeToWaitForDownloader() { return 120000; // 2 minutes } default int downloaderMaxThreads() { return 2; } default int downloaderMaxRetryOnChecksumMismatchCount() { return 5; } // LINT.ThenChange() }