Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ae34b57 authored by Josh Yang's avatar Josh Yang Committed by Haiping Yang
Browse files

Initialize and migrate 26 keys that are backed by

PrepreferencesProperties.

The detailed migration of each key can be found in
https://docs.google.com/spreadsheets/d/1kDmMrrFjin0nEtvBPpWEq8-c0rgk_SK0HHyqDb0LQD8/edit#gid=0.
Keys backed by other types of SettingsProperties will be migrated later
in separate CLs.

Bug: 164398026, 177355163
Test: manual test
Change-Id: Ib9786cca9230af41d504862ac4eb5ceed28e52eb
parent 4b48d4e2
Loading
Loading
Loading
Loading
+246 −0
Original line number Diff line number Diff line
@@ -16191,6 +16191,252 @@ public final class Settings {
         * @hide
         */
        public static final String RESTRICTED_NETWORKING_MODE = "restricted_networking_mode";
        /**
         * Settings migrated from Wear OS settings provider.
         * @hide
         */
        public static class Wearable {
            /**
             * Whether the user has any pay tokens on their watch.
             * @hide
             */
            public static final String HAS_PAY_TOKENS = "has_pay_tokens";
            /**
             * Gcm checkin timeout in minutes.
             * @hide
             */
            public static final String GMS_CHECKIN_TIMEOUT_MIN = "gms_checkin_timeout_min";
            /**
             * If hotword detection should be enabled.
             * @hide
             */
            public static final String HOTWORD_DETECTION_ENABLED = "hotword_detection_enabled";
            /**
             * Whether Smart Replies are enabled within Wear.
             * @hide
             */
            public static final String SMART_REPLIES_ENABLED = "smart_replies_enabled";
            /**
             * The default vibration pattern.
             * @hide
             */
            public static final String DEFAULT_VIBRATION = "default_vibration";
            /**
             * If FLP should obtain location data from the paired device.
             * @hide
             */
            public static final String OBTAIN_PAIRED_DEVICE_LOCATION =
                    "obtain_paired_device_location";
            /**
             * Whether the device is in retail mode.
             * @hide
             */
            public static final String RETAIL_MODE = "retail_mode";
            // Possible retail mode states
            /** @hide */
            public static final int RETAIL_MODE_CONSUMER = 0;
            /** @hide */
            public static final int RETAIL_MODE_RETAIL = 1;
            /**
             * The play store availability.
             * @hide
             */
            public static final String PLAY_STORE_AVAILABILITY = "play_store_availability";
            // Possible play store availability states
            /** @hide */
            public static final int PLAY_STORE_AVAILABILITY_UNKNOWN = 0;
            /** @hide */
            public static final int PLAY_STORE_AVAILABLE = 1;
            /** @hide */
            public static final int PLAY_STORE_UNAVAILABLE = 2;
            /**
             * Whether the bug report is enabled.
             * @hide
             */
            public static final String BUG_REPORT = "bug_report";
            // Possible bug report states
            /** @hide */
            public static final int BUG_REPORT_DISABLED = 0;
            /** @hide */
            public static final int BUG_REPORT_ENABLED = 1;
            /**
             * The enabled/disabled state of the SmartIlluminate.
             * @hide
             */
            public static final String SMART_ILLUMINATE_ENABLED = "smart_illuminate_enabled";
            /**
             * Whether automatic time is enabled on the watch.
             * @hide
             */
            public static final String CLOCKWORK_AUTO_TIME = "clockwork_auto_time";
            // Possible clockwork auto time states
            /** @hide */
            public static final int SYNC_TIME_FROM_PHONE = 0;
            /** @hide */
            public static final int SYNC_TIME_FROM_NETWORK = 1;
            /** @hide */
            public static final int AUTO_TIME_OFF = 2;
            /** @hide */
            public static final int INVALID_AUTO_TIME_STATE = 3;
            /**
             * Whether automatic time zone is enabled on the watch.
             * @hide
             */
            public static final String CLOCKWORK_AUTO_TIME_ZONE = "clockwork_auto_time_zone";
            // Possible clockwork auto time zone states
            /** @hide */
            public static final int SYNC_TIME_ZONE_FROM_PHONE = 0;
            /** @hide */
            public static final int SYNC_TIME_ZONE_FROM_NETWORK = 1;
            /** @hide */
            public static final int AUTO_TIME_ZONE_OFF = 2;
            /** @hide */
            public static final int INVALID_AUTO_TIME_ZONE_STATE = 3;
            /**
             * Whether 24 hour time format is enabled on the watch.
             * @hide
             */
            public static final String CLOCKWORK_24HR_TIME = "clockwork_24hr_time";
            /**
             * Whether the auto wifi toggle setting is enabled.
             * @hide
             */
            public static final String AUTO_WIFI = "auto_wifi";
            /**
             * The number of minutes after the WiFi enters power save mode.
             * @hide
             */
            public static final String WIFI_POWER_SAVE = "wifi_power_save";
            /**
             * The time at which we should no longer skip the wifi requirement check (we skip the
             * wifi requirement until this time). The time is in millis since epoch.
             * @hide
             */
            public static final String ALT_BYPASS_WIFI_REQUIREMENT_TIME_MILLIS =
                    "alt_bypass_wifi_requirement_time_millis";
            /**
             * Wireless debug settings for wear.
             * @hide
             */
            public static final String WIRELESS_DEBUG_MODE = "wireless_debug_mode";
            // Possible wireless debug settings.
            /** @hide */
            public static final int WIRELESS_DEBUG_OFF = 0;
            /** @hide */
            public static final int WIRELESS_DEBUG_BLUETOOTH = 1 << 0;
            /** @hide */
            public static final int WIRELESS_DEBUG_WIFI = 1 << 1;
            /**
             * Wifi debug port for wear.
             * @hide
             */
            public static final String WIFI_DEBUG_PORT = "wireless_debug_wifi_port";
            /**
             * Whether or not Up/Down Gestures are enabled.
             * @hide
             */
            public static final String UPDOWN_GESTURES_ENABLED = "updown_gestures_enabled";
            /**
             * Whether the setup was skipped.
             * @hide
             */
            public static final String SETUP_SKIPPED = "setup_skipped";
            // Possible setup_skipped states
            /** @hide */
            public static final int SETUP_SKIPPED_UNKNOWN = 0;
            /** @hide */
            public static final int SETUP_SKIPPED_YES = 1;
            /** @hide */
            public static final int SETUP_SKIPPED_NO = 2;
            /**
             * The last requested call forwarding action.
             * @hide
             */
            public static final String LAST_CALL_FORWARD_ACTION = "last_call_forward_action";
            // Possible call forwarding actions
            /** @hide */
            public static final int CALL_FORWARD_ACTION_ON = 1;
            /** @hide */
            public static final int CALL_FORWARD_ACTION_OFF = 2;
            /** @hide */
            public static final int CALL_FORWARD_NO_LAST_ACTION = -1;
            // Stem button settings.
            /** @hide */
            public static final String STEM_1_TYPE = "STEM_1_TYPE";
            /** @hide */
            public static final String STEM_1_DATA = "STEM_1_DATA";
            /** @hide */
            public static final String STEM_1_DEFAULT_DATA = "STEM_1_DEFAULT_DATA";
            /** @hide */
            public static final String STEM_2_TYPE = "STEM_2_TYPE";
            /** @hide */
            public static final String STEM_2_DATA = "STEM_2_DATA";
            /** @hide */
            public static final String STEM_2_DEFAULT_DATA = "STEM_2_DEFAULT_DATA";
            /** @hide */
            public static final String STEM_3_TYPE = "STEM_3_TYPE";
            /** @hide */
            public static final String STEM_3_DATA = "STEM_3_DATA";
            /** @hide */
            public static final String STEM_3_DEFAULT_DATA = "STEM_3_DEFAULT_DATA";
            // Stem types
            /** @hide */
            public static final int STEM_TYPE_UNKNOWN = -1;
            /** @hide */
            public static final int STEM_TYPE_APP_LAUNCH = 0;
            /** @hide */
            public static final int STEM_TYPE_CONTACT_LAUNCH = 1;
            /**
             * If the device should be muted when off body.
             * @hide
             */
            public static final String MUTE_WHEN_OFF_BODY_ENABLED = "obtain_mute_when_off_body";
            /**
             * Wear OS version string.
             * @hide
             */
            public static final String WEAR_OS_VERSION_STRING = "wear_os_version_string";
            /**
             * If an alternate launcher is enabled.
             * @hide
             */
            public static final String ALTERNATE_LAUNCHER_ENABLED = "alternate_launcher_enabled";
        }
    }
    /**
+5 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Whether to enable mute when off body by default. -->
    <bool name="def_wearable_muteWhenOffBodyEnabled">false</bool>
</resources>
+17 −0
Original line number Diff line number Diff line
@@ -263,4 +263,21 @@
    <!-- Default for Settings.Secure.ONE_HANDED_MODE_ACTIVATED -->
    <bool name="def_one_handed_mode_activated">false</bool>

    <!-- ========================================== -->
    <!-- Default values for wear specific settings. -->

    <bool name="def_wearable_hotwordDetectionEnabled">false</bool>

    <bool name="def_wearable_smartIlluminateEnabled">true</bool>

    <integer name="def_wearable_offChargerWifiUsageLimitMinutes">120</integer>

    <!-- Default enabled state of accelerometer-based up/down gestures. -->
    <bool name="def_wearable_upDownGesturesEnabled">false</bool>

    <!-- Whether to enable mute when off body by default. -->
    <bool name="def_wearable_muteWhenOffBodyEnabled">true</bool>

    <!-- Whether to use an alternate launcher if available. -->
    <bool name="def_wearable_alternateLauncherEnabled">true</bool>
</resources>
+105 −0
Original line number Diff line number Diff line
@@ -143,6 +143,111 @@ public class GlobalSettingsValidators {
                        /* last= */Global.ONE_HANDED_KEYGUARD_SIDE_RIGHT));
        VALIDATORS.put(Global.DISABLE_WINDOW_BLURS, BOOLEAN_VALIDATOR);
        VALIDATORS.put(Global.DEVICE_CONFIG_SYNC_DISABLED, BOOLEAN_VALIDATOR);

        VALIDATORS.put(Global.Wearable.HAS_PAY_TOKENS, BOOLEAN_VALIDATOR);
        VALIDATORS.put(Global.Wearable.GMS_CHECKIN_TIMEOUT_MIN, ANY_INTEGER_VALIDATOR);
        VALIDATORS.put(Global.Wearable.HOTWORD_DETECTION_ENABLED, BOOLEAN_VALIDATOR);
        VALIDATORS.put(Global.Wearable.SMART_REPLIES_ENABLED, BOOLEAN_VALIDATOR);
        VALIDATORS.put(Global.Wearable.OBTAIN_PAIRED_DEVICE_LOCATION, BOOLEAN_VALIDATOR);
        VALIDATORS.put(
                Global.Wearable.RETAIL_MODE,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.RETAIL_MODE_CONSUMER),
                            String.valueOf(Global.Wearable.RETAIL_MODE_RETAIL)
                        }));
        VALIDATORS.put(
                Global.Wearable.PLAY_STORE_AVAILABILITY,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.PLAY_STORE_AVAILABLE),
                            String.valueOf(Global.Wearable.PLAY_STORE_UNAVAILABLE),
                            String.valueOf(Global.Wearable.PLAY_STORE_AVAILABILITY_UNKNOWN)
                        }));
        VALIDATORS.put(
                Global.Wearable.BUG_REPORT,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.BUG_REPORT_ENABLED),
                            String.valueOf(Global.Wearable.BUG_REPORT_DISABLED)
                        }));
        VALIDATORS.put(Global.Wearable.SMART_ILLUMINATE_ENABLED, BOOLEAN_VALIDATOR);
        VALIDATORS.put(
                Global.Wearable.CLOCKWORK_AUTO_TIME,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.SYNC_TIME_FROM_PHONE),
                            String.valueOf(Global.Wearable.SYNC_TIME_FROM_NETWORK),
                            String.valueOf(Global.Wearable.AUTO_TIME_OFF),
                            String.valueOf(Global.Wearable.INVALID_AUTO_TIME_STATE)
                        }));
        VALIDATORS.put(
                Global.Wearable.CLOCKWORK_AUTO_TIME_ZONE,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.SYNC_TIME_ZONE_FROM_PHONE),
                            String.valueOf(Global.Wearable.SYNC_TIME_ZONE_FROM_NETWORK),
                            String.valueOf(Global.Wearable.AUTO_TIME_ZONE_OFF),
                            String.valueOf(Global.Wearable.INVALID_AUTO_TIME_ZONE_STATE)
                        }));
        VALIDATORS.put(Global.Wearable.CLOCKWORK_24HR_TIME, BOOLEAN_VALIDATOR);
        VALIDATORS.put(Global.Wearable.AUTO_WIFI, BOOLEAN_VALIDATOR);
        VALIDATORS.put(Global.Wearable.WIFI_POWER_SAVE, ANY_INTEGER_VALIDATOR);
        VALIDATORS.put(
                Global.Wearable.ALT_BYPASS_WIFI_REQUIREMENT_TIME_MILLIS,
                ANY_INTEGER_VALIDATOR);
        VALIDATORS.put(
                Global.Wearable.WIRELESS_DEBUG_MODE,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.WIRELESS_DEBUG_OFF),
                            String.valueOf(Global.Wearable.WIRELESS_DEBUG_WIFI),
                            String.valueOf(Global.Wearable.WIRELESS_DEBUG_BLUETOOTH)
                        }));
        VALIDATORS.put(Global.Wearable.WIFI_DEBUG_PORT, ANY_INTEGER_VALIDATOR);
        VALIDATORS.put(Global.Wearable.UPDOWN_GESTURES_ENABLED, BOOLEAN_VALIDATOR);
        VALIDATORS.put(
                Global.Wearable.SETUP_SKIPPED,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.SETUP_SKIPPED_YES),
                            String.valueOf(Global.Wearable.SETUP_SKIPPED_NO),
                            String.valueOf(Global.Wearable.SETUP_SKIPPED_UNKNOWN)
                        }));
        VALIDATORS.put(
                Global.Wearable.LAST_CALL_FORWARD_ACTION,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.CALL_FORWARD_ACTION_ON),
                            String.valueOf(Global.Wearable.CALL_FORWARD_ACTION_OFF),
                            String.valueOf(Global.Wearable.CALL_FORWARD_NO_LAST_ACTION)
                        }));
        VALIDATORS.put(
                Global.Wearable.STEM_1_TYPE,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.STEM_TYPE_UNKNOWN),
                            String.valueOf(Global.Wearable.STEM_TYPE_APP_LAUNCH),
                            String.valueOf(Global.Wearable.STEM_TYPE_CONTACT_LAUNCH)
                        }));
        VALIDATORS.put(
                Global.Wearable.STEM_2_TYPE,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.STEM_TYPE_UNKNOWN),
                            String.valueOf(Global.Wearable.STEM_TYPE_APP_LAUNCH),
                            String.valueOf(Global.Wearable.STEM_TYPE_CONTACT_LAUNCH)
                        }));
        VALIDATORS.put(
                Global.Wearable.STEM_3_TYPE,
                new DiscreteValueValidator(
                        new String[] {
                            String.valueOf(Global.Wearable.STEM_TYPE_UNKNOWN),
                            String.valueOf(Global.Wearable.STEM_TYPE_APP_LAUNCH),
                            String.valueOf(Global.Wearable.STEM_TYPE_CONTACT_LAUNCH)
                        }));
        VALIDATORS.put(Global.Wearable.MUTE_WHEN_OFF_BODY_ENABLED, BOOLEAN_VALIDATOR);
        VALIDATORS.put(Global.Wearable.ALTERNATE_LAUNCHER_ENABLED, BOOLEAN_VALIDATOR);
    }
}
+112 −1
Original line number Diff line number Diff line
@@ -3576,7 +3576,7 @@ public class SettingsProvider extends ContentProvider {
        }

        private final class UpgradeController {
            private static final int SETTINGS_VERSION = 203;
            private static final int SETTINGS_VERSION = 204;

            private final int mUserId;

@@ -5180,6 +5180,92 @@ public class SettingsProvider extends ContentProvider {
                    currentVersion = 203;
                }

                if (currentVersion == 203) {
                        // Version 203: initialize entries migrated from wear settings provide.
                        initGlobalSettingsDefaultValForWearLocked(Global.Wearable.HAS_PAY_TOKENS,
                                false);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.GMS_CHECKIN_TIMEOUT_MIN, 6);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.HOTWORD_DETECTION_ENABLED,
                                getContext()
                                        .getResources()
                                        .getBoolean(R.bool.def_wearable_hotwordDetectionEnabled));
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.SMART_REPLIES_ENABLED, false);
                        Setting locationMode = getSecureSettingsLocked(userId)
                                                        .getSettingLocked(Secure.LOCATION_MODE);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.OBTAIN_PAIRED_DEVICE_LOCATION,
                                !locationMode.isNull()
                                        && !Integer.toString(Secure.LOCATION_MODE_OFF)
                                                .equals(locationMode.getValue()));
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.RETAIL_MODE, Global.Wearable.RETAIL_MODE_CONSUMER);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.PLAY_STORE_AVAILABILITY,
                                Global.Wearable.PLAY_STORE_AVAILABILITY_UNKNOWN);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.BUG_REPORT,
                                "user".equals(Build.TYPE) // is user build?
                                        ? Global.Wearable.BUG_REPORT_DISABLED
                                        : Global.Wearable.BUG_REPORT_ENABLED);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.SMART_ILLUMINATE_ENABLED,
                                getContext()
                                        .getResources()
                                        .getBoolean(R.bool.def_wearable_smartIlluminateEnabled));
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.CLOCKWORK_AUTO_TIME,
                                Global.Wearable.SYNC_TIME_FROM_PHONE);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.CLOCKWORK_AUTO_TIME_ZONE,
                                Global.Wearable.SYNC_TIME_ZONE_FROM_PHONE);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.CLOCKWORK_24HR_TIME, false);
                        initGlobalSettingsDefaultValForWearLocked(Global.Wearable.AUTO_WIFI, true);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.WIFI_POWER_SAVE,
                                getContext()
                                        .getResources()
                                        .getInteger(
                                                R.integer
                                                    .def_wearable_offChargerWifiUsageLimitMinutes));
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.ALT_BYPASS_WIFI_REQUIREMENT_TIME_MILLIS, 0L);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.WIRELESS_DEBUG_MODE,
                                Global.Wearable.WIRELESS_DEBUG_OFF);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.WIFI_DEBUG_PORT, 5555);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.UPDOWN_GESTURES_ENABLED,
                                getContext()
                                        .getResources()
                                        .getBoolean(R.bool.def_wearable_upDownGesturesEnabled));
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.SETUP_SKIPPED,
                                Global.Wearable.SETUP_SKIPPED_UNKNOWN);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.LAST_CALL_FORWARD_ACTION,
                                Global.Wearable.CALL_FORWARD_NO_LAST_ACTION);
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.MUTE_WHEN_OFF_BODY_ENABLED,
                                getContext()
                                        .getResources()
                                        .getBoolean(R.bool.def_wearable_muteWhenOffBodyEnabled));
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.WEAR_OS_VERSION_STRING, "");
                        initGlobalSettingsDefaultValForWearLocked(
                                Global.Wearable.ALTERNATE_LAUNCHER_ENABLED,
                                getContext()
                                        .getResources()
                                        .getBoolean(R.bool.def_wearable_alternateLauncherEnabled));

                        // TODO(b/164398026): add necessary initialization logic for all entries.
                        currentVersion = 204;
                }

                // vXXX: Add new settings above this point.

                if (currentVersion != newVersion) {
@@ -5196,6 +5282,31 @@ public class SettingsProvider extends ContentProvider {
                // Return the current version.
                return currentVersion;
            }

            private void initGlobalSettingsDefaultValForWearLocked(String key, boolean val) {
                initGlobalSettingsDefaultValForWearLocked(key, val ? "1" : "0");
            }

            private void initGlobalSettingsDefaultValForWearLocked(String key, int val) {
                initGlobalSettingsDefaultValForWearLocked(key, String.valueOf(val));
            }

            private void initGlobalSettingsDefaultValForWearLocked(String key, long val) {
                initGlobalSettingsDefaultValForWearLocked(key, String.valueOf(val));
            }

            private void initGlobalSettingsDefaultValForWearLocked(String key, String val) {
                final SettingsState globalSettings = getGlobalSettingsLocked();
                Setting currentSetting = globalSettings.getSettingLocked(key);
                if (currentSetting.isNull()) {
                    globalSettings.insertSettingOverrideableByRestoreLocked(
                            key,
                            val,
                            null /* tag */,
                            true /* makeDefault */,
                            SettingsState.SYSTEM_PACKAGE_NAME);
                }
            }
        }

        /**
Loading