/*
 * Copyright (C) 2017 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.
 */

syntax = "proto2";
package android.providers.settings;

option java_multiple_files = true;

import "frameworks/base/core/proto/android/providers/settings/common.proto";
import "frameworks/base/libs/incident/proto/android/privacy.proto";

// Note: it's a conscious decision to add each setting as a separate field. This
// allows annotating each setting with its own privacy tag.
message GlobalSettingsProto {
    option (android.msg_privacy).dest = DEST_EXPLICIT;

    repeated SettingsOperationProto historical_operations = 1;

    // These are key=value lists, separated by commas.
    optional SettingProto activity_manager_constants = 2;
    optional SettingProto adb_enabled = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto add_users_when_locked = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message AirplaneMode {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // "airplane_mode_on" in code.
        optional SettingProto on = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // A comma-separated list of radios that need to be disabled when airplane
        // mode is on. This overrides wifi_on and bluetooth_on if wifi and bluetooth
        // are included in the comma-separated list.
        optional SettingProto radios = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto toggleable_radios = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional AirplaneMode airplane_mode = 5;

    optional SettingProto alarm_manager_constants = 6;
    optional SettingProto allow_user_switching_when_system_user_locked = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
    // This is a key=value list, separated by commas.
    optional SettingProto always_on_display_constants = 8;
    optional SettingProto always_finish_activities = 9 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto animator_duration_scale = 10 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Anomaly {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // "anomaly_detection_constants" in code.
        optional SettingProto detection_constants = 1;
        // Version of the anomaly config.
        optional SettingProto config_version = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // A base64-encoded string represents anomaly stats config.
        optional SettingProto config = 3;
    }
    optional Anomaly anomaly = 11;

    message ApnDb {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto update_content_url = 1;
        optional SettingProto update_metadata_url = 2;
    }
    optional ApnDb apn_db = 12;

    message App {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // These are key=value lists, separated by commas.
        optional SettingProto idle_constants = 1;
        optional SettingProto standby_enabled = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto auto_restriction_enabled = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto forced_app_standby_enabled = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto forced_app_standby_for_small_battery_enabled = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional App app = 13;

    optional SettingProto assisted_gps_enabled = 14 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto audio_safe_volume_state = 15 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Auto {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto time = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto time_zone = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Auto auto = 16;

    reserved 17; // Used to be autofill_compat_mode_allowed_packages

    message Autofill {
      option (android.msg_privacy).dest = DEST_EXPLICIT;

      optional SettingProto compat_mode_allowed_packages = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
      optional SettingProto logging_level = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
      optional SettingProto max_partitions_size = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
      optional SettingProto max_visible_datasets = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Autofill autofill = 140;

    reserved 18; // Used to be backup_agent_timeout_parameters

    message Backup {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto backup_agent_timeout_parameters = 1;
        optional SettingProto backup_multi_user_enabled = 2;
    }
    optional Backup backup = 146;

    message Battery {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto discharge_duration_threshold = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto discharge_threshold = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto saver_constants = 3;
        optional SettingProto saver_device_specific_constants = 4;
        optional SettingProto stats_constants = 5;
        optional SettingProto tip_constants = 6;
    }
    optional Battery battery = 19;

    message BleScan {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto always_available = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto low_power_window_ms = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto balanced_window_ms = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto low_latency_window_ms = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto low_power_interval_ms = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto balanced_interval_ms = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto low_latency_interval_ms = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto background_mode = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional BleScan ble_scan = 20;

    message Bluetooth {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto class_of_device = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto disabled_profiles = 2;
        optional SettingProto interoperability_list = 3;
        optional SettingProto on = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        repeated SettingProto headset_priorities = 5;
        repeated SettingProto a2dp_sink_priorities = 6;
        repeated SettingProto a2dp_src_priorities = 7;
        repeated SettingProto a2dp_supports_optional_codecs = 8;
        repeated SettingProto a2dp_optional_codecs_enabled = 9;
        repeated SettingProto input_device_priorities = 10;
        repeated SettingProto map_priorities = 11;
        repeated SettingProto map_client_priorities = 12;
        repeated SettingProto pbap_client_priorities = 13;
        repeated SettingProto sap_priorities = 14;
        repeated SettingProto pan_priorities = 15;
        repeated SettingProto hearing_aid_priorities = 16;
    }
    optional Bluetooth bluetooth = 21;

    optional SettingProto boot_count = 22 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto bugreport_in_power_menu = 23 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto call_auto_retry = 24 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message CaptivePortal {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto mode = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto detection_enabled = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto server = 3;
        optional SettingProto https_url = 4;
        optional SettingProto http_url = 5;
        optional SettingProto fallback_url = 6;
        optional SettingProto other_fallback_urls = 7;
        optional SettingProto use_https = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto user_agent = 9;
    }
    optional CaptivePortal captive_portal = 25;

    message Carrier {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // List of carrier app certificate mapped to carrier app package id which are whitelisted to
        // prompt the user for install when a SIM card with matching UICC carrier privilege rules is
        // inserted.
        optional SettingProto app_whitelist = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto app_names = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto install_carrier_app_notification_persistent = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto install_carrier_app_notification_sleep_millis = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Carrier carrier = 26;

    message Cdma {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto cell_broadcast_sms = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto roaming_mode = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto subscription_mode = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Cdma cdma = 27;

    optional SettingProto cell_on = 28 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message CertPin {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto update_content_url = 1;
        optional SettingProto update_metadata_url = 2;
    }
    optional CertPin cert_pin = 29;

    optional SettingProto chained_battery_attribution_enabled = 30 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto compatibility_mode = 31 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Connectivity {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto metrics_buffer_size = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto change_delay = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto sampling_interval_in_seconds = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Connectivity connectivity = 32;

    optional SettingProto contact_metadata_sync_enabled = 33 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto contacts_database_wal_enabled = 34 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Data {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto activity_timeout_mobile = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto activity_timeout_wifi = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto roaming = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto stall_alarm_non_aggressive_delay_in_ms = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto stall_alarm_aggressive_delay_in_ms = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Data data = 35;

    message Database {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto downgrade_reason = 1;
        optional SettingProto creation_buildid = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Database database = 36;

    message Debug {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Name of an application package to be debugged.
        optional SettingProto app = 1;
        // Whether views are allowed to save their attribute data.
        optional SettingProto view_attributes = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Which application package is allowed to save view attribute data.
        optional SettingProto view_attributes_application_package = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Debug debug = 37;

    message Default {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto install_location = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto dns_server = 2;
    }
    optional Default default = 38;

    message Development {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto settings_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto force_resizable_activities = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto enable_freeform_windows_support = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto force_rtl = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto emulate_display_cutout = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto force_desktop_mode_on_external_displays = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Development development = 39;

    message Device {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto name = 1;
        optional SettingProto provisioned = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto provisioning_mobile_data_enabled = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto idle_constants = 4;
        optional SettingProto policy_constants = 5;
        optional SettingProto demo_mode = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Device device = 40;

    optional SettingProto disk_free_change_reporting_threshold = 41 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Display {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto size_forced = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto scaling_force = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Flag to enable or disable display panel low power mode (lpm)
        // false -> Display panel power saving mode is disabled.
        // true  -> Display panel power saving mode is enabled.
        optional SettingProto panel_lpm = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Display display = 42;

    message DnsResolver {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto sample_validity_seconds = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto success_threshold_percent = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto min_samples = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto max_samples = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional DnsResolver dns_resolver = 43;

    optional SettingProto dock_audio_media_enabled = 44 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Download {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto max_bytes_over_mobile = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto recommended_max_bytes_over_mobile = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Download download = 45;

    message Dropbox {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto age_seconds = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto max_files = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto quota_kb = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto quota_percent = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto reserve_percent = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        repeated SettingProto settings = 6;
    }
    optional Dropbox dropbox = 46;

    message DynamicPowerSavings {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // When to auto disable interventions that were triggered due to
        // {@link #DYNAMIC_POWER_SAVINGS_ENABLED}. Value is a percentage indicating
        // a battery level.
        optional SettingProto disable_threshold = 1 [ (android.privacy).dest = DEST_AUTOMATIC];
        // Whether dynamic power savings based behaviors should be running or not.
        optional SettingProto enabled = 2 [ (android.privacy).dest = DEST_AUTOMATIC];
    }
    optional DynamicPowerSavings dynamic_power_savings = 143;

    message Emergency {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto tone = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto affordance_needed = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Emergency emergency = 47;

    message Enable {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto accessibility_global_gesture_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto gpu_debug_layers = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto ephemeral_feature = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto cellular_on_boot = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto diskstats_logging = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto cache_quota_calculation = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto deletion_helper_no_threshold_toggle = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto gnss_raw_meas_full_tracking = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Enable enable = 48;

    optional SettingProto encoded_surround_output = 49 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto enhanced_4g_mode_enabled = 50 [ (android.privacy).dest = DEST_AUTOMATIC ];
    repeated SettingProto error_logcat_lines = 51;

    message Euicc {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto provisioned = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto factory_reset_timeout_millis = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Euicc euicc = 52;

    optional SettingProto fancy_ime_animations = 53 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto force_allow_on_external = 54 [ (android.privacy).dest = DEST_AUTOMATIC ];
    // An integer to reduce the FPS by this factor. Only for experiments.
    optional SettingProto fps_divisor = 55 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto fstrim_mandatory_interval = 56 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message GlobalHttpProxy {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Including Global.HTTP_PROXY is redundant since the data is also
        // encompassed in the host and port fields.

        optional SettingProto host = 1;
        optional SettingProto port = 2;
        optional SettingProto exclusion_list = 3;
        optional SettingProto pac = 4;
        // Enables the UI setting to allow the user to specify the global HTTP proxy
        // and associated exclusion list. Simply "set_global_http_proxy".
        optional SettingProto setting_ui_enabled = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional GlobalHttpProxy global_http_proxy = 57;

    optional SettingProto gprs_register_check_period_ms = 58 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Gpu {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // App allowed to load GPU debug layers.
        optional SettingProto debug_app = 1;
        // Ordered GPU debug layer list for Vulkan
        // i.e. <layer1>:<layer2>:...:<layerN>
        optional SettingProto debug_layers = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // ANGLE - Force all PKGs to use ANGLE, regardless of any other settings
        optional SettingProto angle_gl_driver_all_angle = 3;
        // ANGLE - List of PKGs that specify an OpenGL driver
        optional SettingProto angle_gl_driver_selection_pkgs = 4;
        // ANGLE - Corresponding OpenGL driver selection for the PKG
        optional SettingProto angle_gl_driver_selection_values = 5;
        // App that can provide layer libraries.
        optional SettingProto debug_layer_app = 6;
        // Ordered GPU debug layer list for GLES
        // i.e. <layer1>:<layer2>:...:<layerN>
        optional SettingProto debug_layers_gles = 7;
        // Game Driver - global preference for all Apps
        // 0 = Default
        // 1 = All Apps use Game Driver
        // 2 = All Apps use system graphics driver
        optional SettingProto game_driver_all_apps = 8;
        // Game Driver - List of Apps selected to use Game Driver
        // i.e. <pkg1>,<pkg2>,...,<pkgN>
        optional SettingProto game_driver_opt_in_apps = 9;
        // Game Driver - List of Apps selected not to use Game Driver
        // i.e. <pkg1>,<pkg2>,...,<pkgN>
        optional SettingProto game_driver_opt_out_apps = 10;
        // Game Driver - List of Apps that are forbidden to use Game Driver
        optional SettingProto game_driver_blacklist = 11;
        // Game Driver - List of Apps that are allowed to use Game Driver
        optional SettingProto game_driver_whitelist = 12;
        // ANGLE - List of Apps that can check ANGLE rules
        optional SettingProto angle_whitelist = 13;
        // Game Driver - List of blacklists, each blacklist is a blacklist for
        // a specific Game Driver version
        optional SettingProto game_driver_blacklists = 14;
        // ANGLE - Show a dialog box when ANGLE is selected for the currently running PKG
        optional SettingProto show_angle_in_use_dialog = 15;
    }
    optional Gpu gpu = 59;

    message Hdmi {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto control_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto system_audio_control_enabled = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto control_auto_wakeup_enabled = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto control_auto_device_off_enabled = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Hdmi hdmi = 60;

    optional SettingProto heads_up_notifications_enabled = 61 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto hidden_api_blacklist_exemptions = 62 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message InetCondition {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto debounce_up_delay = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto debounce_down_delay = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional InetCondition inet_condition = 63;

    message InstantApp {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto dexopt_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto ephemeral_cookie_max_size_bytes = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto installed_min_cache_period = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto installed_max_cache_period = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uninstalled_min_cache_period = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uninstalled_max_cache_period = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional InstantApp instant_app = 64;

    message IntentFirewall {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto update_content_url = 1;
        optional SettingProto update_metadata_url = 2;
    }
    optional IntentFirewall intent_firewall = 65;

    optional SettingProto job_scheduler_constants = 66;
    optional SettingProto keep_profile_in_background = 67 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message LangId {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto update_content_url = 1;
        optional SettingProto update_metadata_url = 2;
    }
    optional LangId lang_id = 68;

    message Location {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto background_throttle_interval_ms = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto background_throttle_proximity_alert_interval_ms = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Packages that are whitelisted for background throttling (throttling will
        // not be applied).
        optional SettingProto background_throttle_package_whitelist = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto settings_link_to_permissions_enabled = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // If set to 1, {@link Secure#LOCATION_MODE} will be set to {@link
        // Secure#LOCATION_MODE_OFF} temporarily for all users.
        optional SettingProto global_kill_switch = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto gnss_satellite_blacklist = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto gnss_hal_location_request_duration_millis = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Packages that are whitelisted for ignoring location settings (during emergencies)
        optional SettingProto ignore_settings_package_whitelist = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Location location = 69;

    message LowPowerMode {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Simply "low_power_mode" in code.
        optional SettingProto enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Battery level [1-100] at which low power mode automatically turns on. If
        // 0, it will not automatically turn on.
        optional SettingProto trigger_level = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // The max value for {@link #LOW_POWER_MODE_TRIGGER_LEVEL}. If this setting
        // is not set or the value is 0, the default max will be used.
        optional SettingProto trigger_level_max = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Whether automatic battery saver mode is controlled via percentage,
        // {@link #DYNAMIC_POWER_SAVINGS_ENABLED} or disabled.
        optional SettingProto automatic_power_saver_mode = 4 [ (android.privacy).dest = DEST_AUTOMATIC];
        // If 1, battery saver (low_power_mode) will be re-activated after the device is
        // unplugged from a charger or rebooted.
        optional SettingProto sticky_enabled = 5;
        // Whether sticky battery saver should be deactivated once the battery level has reached the
        // threshold specified by sticky_disable_level.
        optional SettingProto sticky_auto_disable_enabled = 6;
        // When a device is unplugged from a changer (or is rebooted), do not re-activate battery
        // saver even if {@link #LOW_POWER_MODE_STICKY} is 1, if the battery level is equal to or
        // above this threshold.
        optional SettingProto sticky_auto_disable_level = 7;
    }
    optional LowPowerMode low_power_mode = 70;

    optional SettingProto lte_service_forced = 71 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto mdc_initial_max_retry = 72 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Mhl {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto input_switching_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto power_charge_enabled = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Mhl mhl = 73;

    message MobileData {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Whether mobile data connections are allowed by the user. Simply
        // "mobile_data" in code.
        optional SettingProto allowed = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Whether the mobile data connection should remain active even when higher
        // priority networks like WiFi are active, to help make network switching
        // faster.
        optional SettingProto always_on = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional MobileData mobile_data = 74;

    // Ringer mode. A change in this value will not reflect as a change in the
    // ringer mode.
    optional SettingProto mode_ringer = 75 [ (android.privacy).dest = DEST_AUTOMATIC ];

    optional SettingProto apply_ramping_ringer = 147 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message MultiSim {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Subscription to be used for voice call on a multi sim device. The
        // supported values are 0 = SUB1, 1 = SUB2 and etc.
        optional SettingProto voice_call_subscription = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto voice_prompt = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto data_call_subscription = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto sms_subscription = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto sms_prompt = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional MultiSim multi_sim = 76;

    // Whether we've enabled native flags health check on this device. Takes effect on
    // reboot. The value "1" enables native flags health check; otherwise it's disabled.
    optional SettingProto native_flags_health_check_enabled = 144 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Netstats {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto poll_interval = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto time_cache_max_age = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto global_alert_bytes = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto sample_enabled = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto augment_enabled = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto dev_bucket_duration = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto dev_persist_bytes = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto dev_rotate_age = 9 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto dev_delete_age = 10 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uid_bucket_duration = 11 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uid_persist_bytes = 12 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uid_rotate_age = 13 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uid_delete_age = 14 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uid_tag_bucket_duration = 15 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uid_tag_persist_bytes = 16 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uid_tag_rotate_age = 17 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto uid_tag_delete_age = 18 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Netstats netstats = 77;

    message Network {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // User preference for which network(s) should be used.
        optional SettingProto preference = 1;
        optional SettingProto preferred_network_mode = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto scorer_app = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto switch_notification_daily_limit = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto switch_notification_rate_limit_millis = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto avoid_bad_wifi = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto metered_multipath_preference = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto watchlist_last_report_time = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto scoring_ui_enabled = 9 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto recommendations_enabled = 10 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto recommendations_package = 11 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto recommendation_request_timeout_ms = 12 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto watchlist_enabled = 13 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto scoring_provisioned = 14 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto access_timeout_ms = 15 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto recommended_network_evaluator_cache_expiry_ms = 16 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Network network = 78;

    // Whether to enable new contacts aggregator or not.
    // 1 = enable, 0 = disable.
    optional SettingProto new_contact_aggregator = 79 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto night_display_forced_auto_mode_available = 80 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message NitzUpdate {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // If the NITZ_UPDATE_DIFF time is exceeded then an automatic adjustment to
        // SystemClock will be allowed even if NITZ_UPDATE_SPACING has not been
        // exceeded.
        optional SettingProto diff = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // The length of time in milli-seconds that automatic small adjustments to
        // SystemClock are ignored if NITZ_UPDATE_DIFF is not exceeded.
        optional SettingProto spacing = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional NitzUpdate nitz_update = 81;

    message Notification {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto max_notification_enqueue_rate = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto show_notification_channel_warnings = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // The list of snooze options for notifications. This is encoded as a key=value list,
        // separated by commas.
        optional SettingProto snooze_options = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto smart_replies_in_notifications_flags = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Configuration options for smart replies and smart actions in notifications. This is
        // encoded as a key=value list separated by commas.
        optional SettingProto smart_suggestions_in_notifications_flags = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Notification notification = 82;

    optional SettingProto nsd_on = 83 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Ntp {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Preferred NTP server.
        optional SettingProto server = 1;
        // Timeout in milliseconds to wait for NTP server.
        optional SettingProto timeout_ms = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Ntp ntp = 84;

    // Details about the User Absent For Small Battery feature.
    message UserAbsentSmallBattery {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Whether or not to enable the User Absent, Radios Off feature
        optional SettingProto radios_off_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];

        // Whether or not to enable the User Absent, Touch Off feature
        optional SettingProto touch_off_enabled = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional UserAbsentSmallBattery user_absent_small_battery = 85;

    // Whether to disable the automatic scheduling of system updates.
    optional SettingProto ota_disable_automatic_update = 86 [ (android.privacy).dest = DEST_AUTOMATIC ];
    // Overlay display devices setting.
    // The value is a specially formatted string that describes the size and
    // density of simulated secondary devices.
    // Format: {width}x{height}/dpi;...
    optional SettingProto overlay_display_devices = 87 [ (android.privacy).dest = DEST_AUTOMATIC ];
    // If set to 1, SettingsProvider's restoreAnyVersion="true" attribute will
    // be ignored and restoring to lower version of platform API will be
    // skipped.
    optional SettingProto override_settings_provider_restore_any_version = 88 [ (android.privacy).dest = DEST_AUTOMATIC ];
    // The series of successively longer delays used in retrying to download PAC file.
    optional SettingProto pac_change_delay = 89 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message PackageVerifier {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Whether the package manager should send package verification broadcasts
        // for verifiers to review apps prior to installation.
        optional SettingProto enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto timeout = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto default_response = 3;
        optional SettingProto setting_visible = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto include_adb = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional PackageVerifier package_verifier = 90;

    message PdpWatchdog {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto poll_interval_ms = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto long_poll_interval_ms = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto error_poll_interval_ms = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto trigger_packet_count = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto error_poll_count = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto max_pdp_reset_fail_count = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional PdpWatchdog pdp_watchdog = 91;

    // Defines global runtime overrides to window policy.
    optional SettingProto policy_control = 92;
    optional SettingProto power_manager_constants = 93;
    reserved 94; // Used to be priv_app_oob_enabled

    message PrepaidSetup {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // URL to open browser on to allow user to manage a prepay account.
        optional SettingProto data_service_url = 1;
        // URL to attempt a GET on to see if this is a prepay device.
        optional SettingProto detection_target_url = 2;
        // Host to check for a redirect to after an attempt to GET
        // SETUP_PREPAID_DETECTION_TARGET_URL. (If we redirected there, this is a
        // prepaid device with zero balance.)
        optional SettingProto detection_redir_host = 3;
    }
    optional PrepaidSetup prepaid_setup = 95;

    message Private {
        option (android.msg_privacy).dest = DEST_LOCAL;

        // The requested Private DNS mode and an accompanying specifier.
        // msg_privacy settings don't apply to sub messages, only to primitive
        // fields, so these must also be explicitly set to LOCAL.
        optional SettingProto dns_mode = 1 [ (android.privacy).dest = DEST_LOCAL ];
        optional SettingProto dns_specifier = 2 [ (android.privacy).dest = DEST_LOCAL ];
    }
    optional Private private = 96;

    // The number of milliseconds to allow the provisioning apn to remain active.
    optional SettingProto provisioning_apn_alarm_delay_in_ms = 97 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto read_external_storage_enforced_default = 98 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto require_password_to_decrypt = 99 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto safe_boot_disallowed = 100 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Selinux {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto update_content_url = 1;
        optional SettingProto update_metadata_url = 2;
        optional SettingProto status = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Selinux selinux = 101;

    // Flag for allowing ActivityManagerService to send ACTION_APP_ERROR intents
    // on application crashes and ANRs. If this is disabled, the crash/ANR
    // dialog will never display the "Report" button.
    optional SettingProto send_action_app_error = 102 [ (android.privacy).dest = DEST_AUTOMATIC ];
    // Let user pick default install location.
    optional SettingProto set_install_location = 103 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto shortcut_manager_constants = 104;
    optional SettingProto show_first_crash_dialog = 105 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto show_hidden_launcher_icon_apps_enabled = 141 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto show_restart_in_crash_dialog = 106 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto show_mute_in_crash_dialog = 107 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto show_new_app_installed_notification_enabled = 142 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message SmartSelection {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto update_content_url = 1;
        optional SettingProto update_metadata_url = 2;
    }
    optional SmartSelection smart_selection = 108;

    message Sms {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto outgoing_check_interval_ms = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto outgoing_check_max_count = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Used to disable SMS short code confirmation. Defaults to true.
        optional SettingProto short_code_confirmation = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto short_code_rule = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto short_codes_update_content_url = 5;
        optional SettingProto short_codes_update_metadata_url = 6;
        optional SettingProto access_restriction_enabled = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Sms sms = 109;

    message Sounds {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto car_dock = 1;
        optional SettingProto car_undock = 2;
        reserved 3; // Moved to secure settings Sound.charging_sounds_enabled
        optional SettingProto charging_started = 4;
        optional SettingProto desk_dock = 5;
        optional SettingProto desk_undock = 6;
        optional SettingProto dock_sounds_enabled = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto dock_sounds_enabled_when_accessibility = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto lock = 9;
        optional SettingProto low_battery = 10;
        optional SettingProto low_battery_sound_timeout = 11 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Called "power_sounds_enabled" in code.
        optional SettingProto low_battery_sounds_enabled = 12 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto trusted = 13;
        optional SettingProto unlock = 14;
    }
    optional Sounds sounds = 110;

    message SoundTrigger {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // Maximum number of SoundTriggerDetectionService operations per day.
        optional SettingProto max_sound_trigger_detection_service_ops_per_day = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Timeout for a single SoundTriggerDetectionService operation (in ms).
        optional SettingProto detection_service_op_timeout_ms = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional SoundTrigger sound_trigger = 111;

    // Value to specify how long in milliseconds to retain seen score cache
    // curves to be used when generating SSID only bases score curves.
    optional SettingProto speed_label_cache_eviction_age_ms = 112 [ (android.privacy).dest = DEST_AUTOMATIC ];
    // Configuration flags for SQLite Compatibility WAL. Encoded as a key-value
    // list, separated by commas.
    // E.g.: compatibility_wal_supported=true, wal_syncmode=OFF
    optional SettingProto sqlite_compatibility_wal_flags = 113 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto stay_on_while_plugged_in = 114 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Storage {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto benchmark_interval = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto settings_clobber_threshold = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Storage storage = 115;

    message Sync {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // The maximum reconnect delay for short network outages or when the network is suspended due to phone use.
        optional SettingProto max_retry_delay_in_seconds = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Simply "sync_manager_constants" in code.
        optional SettingProto manager_constants = 2;
    }
    optional Sync sync = 116;

    message Sys {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        // The interval in minutes after which the amount of free storage left on
        // the device is logged to the event log.
        optional SettingProto free_storage_log_interval_mins = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto storage_threshold_percentage = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto storage_threshold_max_bytes = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto storage_full_threshold_bytes = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto storage_cache_percentage = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto storage_cache_max_bytes = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // System VDSO global setting. This links to the "sys.vdso" system property.
        // The following values are supported:
        // false  -> both 32 and 64 bit vdso disabled
        // 32     -> 32 bit vdso enabled
        // 64     -> 64 bit vdso enabled
        // Any other value defaults to both 32 bit and 64 bit true.
        optional SettingProto vdso = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // UidCpuPower global setting. This links the sys.uidcpupower system property.
        // The following values are supported:
        // 0 -> /proc/uid_cpupower/* are disabled
        // 1 -> /proc/uid_cpupower/* are enabled
        // Any other value defaults to enabled.
        optional SettingProto uidcpupower = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Sys sys = 117;

    optional SettingProto tcp_default_init_rwnd = 118 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message TemperatureWarning {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto show_temperature_warning = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Temperature at which the high temperature warning notification should
        // be shown.
        optional SettingProto warning_temperature_level = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // USB temperature at which the high temperature alarm notification should be shown.
        optional SettingProto usb_alarm_temperature_level = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional TemperatureWarning temperature_warning = 119;

    message Tether {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto supported = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto dun_required = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto dun_apn = 3;
        optional SettingProto offload_disabled = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Simply "soft_ap_timeout_enabled" in code.
        optional SettingProto timeout_enabled = 112 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Tether tether = 120;

    optional SettingProto text_classifier_constants = 121;
    optional SettingProto theater_mode_on = 122 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto time_only_mode_constants = 123 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto transition_animation_scale = 124 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Tzinfo {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto update_content_url = 1;
        optional SettingProto update_metadata_url = 2;
    }
    optional Tzinfo tzinfo = 125;

    // The min period for caching unused static shared libs in milliseconds.
    optional SettingProto unused_static_shared_lib_min_cache_period_ms = 126 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto usb_mass_storage_enabled = 127 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto use_google_mail = 128 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto use_open_wifi_package = 129 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto vt_ims_enabled = 130 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto wait_for_debugger = 131 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Webview {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto data_reduction_proxy_key = 1;
        optional SettingProto fallback_logic_enabled = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Name of the package used as WebView provider.
        optional SettingProto provider = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto multiprocess = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Webview webview = 132;

    message Wfc {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto ims_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto ims_mode = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto ims_roaming_mode = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto ims_roaming_enabled = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Wfc wfc = 133;

    message Wifi {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto sleep_policy = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto badging_thresholds = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto display_on = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto display_certification_on = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto display_wps_config = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto networks_available_notification_on = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto carrier_networks_available_notification_on = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto networks_available_repeat_delay = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto country_code = 9;
        optional SettingProto framework_scan_interval_ms = 10 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto idle_ms = 11 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto num_open_networks_kept = 12 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto on = 13 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto scan_always_available = 14 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto wakeup_enabled = 15 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto saved_state = 16 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto supplicant_scan_interval_ms = 17 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto enhanced_auto_join = 18 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto network_show_rssi = 19 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto scan_interval_when_p2p_connected_ms = 20 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto watchdog_on = 21 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto watchdog_poor_network_test_enabled = 22 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto suspend_optimizations_enabled = 23 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto verbose_logging_enabled = 24 [ (android.privacy).dest = DEST_AUTOMATIC ];
        reserved 25; // connected_mac_randomization_enabled
        optional SettingProto max_dhcp_retry_count = 26 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto mobile_data_transition_wakelock_timeout_ms = 27 [ (android.privacy).dest = DEST_AUTOMATIC ];
        // Controls whether WiFi configurations created by a Device Owner app should
        // be locked down (that is, be editable or removable only by the Device
        // Owner App, not even by Settings app). This setting takes integer values.
        // Non-zero values mean that the Device Owner-created configurations are
        // locked down. Value of zero means they are not. Default value in the
        // absence of actual value to this setting is 0.
        optional SettingProto device_owner_configs_lockdown = 28 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto frequency_band = 29 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto p2p_device_name = 30;
        optional SettingProto reenable_delay_ms = 31 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto ephemeral_out_of_range_timeout_ms = 32 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto on_when_proxy_disconnected = 33 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto bounce_delay_override_ms = 34 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    optional Wifi wifi = 134;

    optional SettingProto wimax_networks_available_notification_on = 135 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto window_animation_scale = 136 [ (android.privacy).dest = DEST_AUTOMATIC ];
    optional SettingProto wtf_is_fatal = 137 [ (android.privacy).dest = DEST_AUTOMATIC ];

    message Zen {
        option (android.msg_privacy).dest = DEST_EXPLICIT;

        optional SettingProto mode = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto mode_ringer_level = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto mode_config_etag = 3;
        reserved 4; // Moved to secure settings Zen.duration
        reserved 5; // Moved to secure settings Zen.show_zen_upgrade_notification
    }
    optional Zen zen = 138;

    optional SettingProto zram_enabled = 139 [ (android.privacy).dest = DEST_AUTOMATIC ];

    optional SettingProto app_ops_constants = 148 [ (android.privacy).dest = DEST_AUTOMATIC ];

    // Please insert fields in alphabetical order and group them into messages
    // if possible (to avoid reaching the method limit).
    // Next tag = 145 then 149; // (145 was removed)
}
