Merge "Add a Developer option of "Disable automatic update"." into nyc-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dedc00b..0c2d51a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7005,6 +7005,9 @@
     <!-- Toast message letting the user know the color temperature setting is not immediate -->
     <string name="color_temperature_toast">To apply color change, turn off screen</string>
 
+    <!-- Name of the setting to disable the automatic update -->
+    <string name="ota_disable_automatic_update">Automatic system updates</string>
+
     <!-- Label for category for data usage [CHAR LIMIT=30] -->
     <string name="usage">Usage</string>
 
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 0fbb90f..02454c0 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -89,6 +89,10 @@
         android:title="@string/color_temperature"
         android:summary="@string/color_temperature_desc" />
 
+    <SwitchPreference
+        android:key="ota_disable_automatic_update"
+        android:title="@string/ota_disable_automatic_update" />
+
     <PreferenceCategory android:key="debug_debugging_category"
             android:title="@string/debug_debugging_category">
 
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 186e751..3de2af2 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -204,6 +204,8 @@
     private static final String KEY_NIGHT_MODE = "night_mode";
     private static final String KEY_CONVERT_FBE = "convert_to_file_encryption";
 
+    private static final String OTA_DISABLE_AUTOMATIC_UPDATE_KEY = "ota_disable_automatic_update";
+
     private static final int RESULT_DEBUG_APP = 1000;
     private static final int RESULT_MOCK_LOCATION_APP = 1001;
 
@@ -250,6 +252,7 @@
     private SwitchPreference mWifiAggressiveHandover;
     private SwitchPreference mMobileDataAlwaysOn;
     private SwitchPreference mBluetoothDisableAbsVolume;
+    private SwitchPreference mOtaDisableAutomaticUpdate;
 
     private SwitchPreference mWifiAllowScansWithTraffic;
     private SwitchPreference mStrictMode;
@@ -462,6 +465,8 @@
             removePreference(KEY_CONVERT_FBE);
         }
 
+        mOtaDisableAutomaticUpdate = findAndInitSwitchPref(OTA_DISABLE_AUTOMATIC_UPDATE_KEY);
+
         mNightModePreference = (DropDownPreference) findPreference(KEY_NIGHT_MODE);
         final UiModeManager uiManager = (UiModeManager) getSystemService(
                 Context.UI_MODE_SERVICE);
@@ -695,6 +700,7 @@
         updateAppProcessLimitOptions();
         updateShowAllANRsOptions();
         updateVerifyAppsOverUsbOptions();
+        updateOtaDisableAutomaticUpdateOptions();
         updateBugreportOptions();
         updateForceRtlOptions();
         updateLogdSizeValues();
@@ -945,6 +951,24 @@
                 mVerifyAppsOverUsb.isChecked() ? 1 : 0);
     }
 
+    private void updateOtaDisableAutomaticUpdateOptions() {
+        // We use the "disabled status" in code, but show the opposite text
+        // "Automatic system updates" on screen. So a value 0 indicates the
+        // automatic update is enabled.
+        updateSwitchPreference(mOtaDisableAutomaticUpdate, Settings.Global.getInt(
+                getActivity().getContentResolver(),
+                Settings.Global.OTA_DISABLE_AUTOMATIC_UPDATE, 0) != 1);
+    }
+
+    private void writeOtaDisableAutomaticUpdateOptions() {
+        // We use the "disabled status" in code, but show the opposite text
+        // "Automatic system updates" on screen. So a value 0 indicates the
+        // automatic update is enabled.
+        Settings.Global.putInt(getActivity().getContentResolver(),
+                Settings.Global.OTA_DISABLE_AUTOMATIC_UPDATE,
+                mOtaDisableAutomaticUpdate.isChecked() ? 0 : 1);
+    }
+
     private boolean enableVerifierSetting() {
         final ContentResolver cr = getActivity().getContentResolver();
         if (Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) == 0) {
@@ -1834,6 +1858,8 @@
             writeDebuggerOptions();
         } else if (preference == mVerifyAppsOverUsb) {
             writeVerifyAppsOverUsbOptions();
+        } else if (preference == mOtaDisableAutomaticUpdate) {
+            writeOtaDisableAutomaticUpdateOptions();
         } else if (preference == mStrictMode) {
             writeStrictModeVisualOptions();
         } else if (preference == mPointerLocation) {