Night Mode and Runtime Enable/Disable Option

By default, night mode is disabled. User can switch it on and off in General
Settings.

Change-Id: Ibf78689ed4a75dcee9ae1d036d1a770627df298b
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 01aee0c..54e5fe2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -385,6 +385,11 @@
     <!-- Settings summary for the powersave feature. -->
     <string name ="pref_powersave_enabled_summary">Turn on power saving mode</string>
 
+    <!-- Checkbox setting for enabling/disabling night mode feature -->
+    <string name ="pref_nightmode_enabled">Night mode</string>
+    <!-- Settings summary for the night mode feature. -->
+    <string name ="pref_nightmode_enabled_summary">Turn on night mode</string>
+
     <!-- Checkbox setting for enabling/disabling the form AutoFill feature [CHAR-LIMIT=32] -->
     <string name="pref_autofill_enabled">Form auto-fill</string>
     <!-- Settings summary for the form AutoFill feature. [CHAR-LIMIT=none] -->
diff --git a/res/xml/general_preferences.xml b/res/xml/general_preferences.xml
index abd7b73..816503b 100644
--- a/res/xml/general_preferences.xml
+++ b/res/xml/general_preferences.xml
@@ -43,6 +43,12 @@
             android:title="@string/pref_powersave_enabled" />
 
         <CheckBoxPreference
+            android:defaultValue="false"
+            android:key="nightmode_enabled"
+            android:summary="@string/pref_nightmode_enabled_summary"
+            android:title="@string/pref_nightmode_enabled" />
+
+        <CheckBoxPreference
             android:key="autofill_enabled"
             android:title="@string/pref_autofill_enabled"
             android:summary="@string/pref_autofill_enabled_summary"
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index a60a109..4a138c1 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -270,6 +270,7 @@
         settings.setSaveFormData(saveFormdata());
         settings.setUseWideViewPort(isWideViewport());
         settings.setDoNotTrack(doNotTrack());
+        settings.setNightModeEnabled(isNightModeEnabled());
         settings.setMediaPlaybackRequiresUserGesture(false);
 
         WebSettings settingsClassic = (WebSettings) settings;
@@ -821,6 +822,14 @@
         mPrefs.edit().putBoolean(PREF_WEB_REFINER_ENABLED, value).apply();
     }
 
+    public boolean isNightModeEnabled() {
+        return mPrefs.getBoolean(PREF_NIGHTMODE_ENABLED, false);
+    }
+
+    public void setNightModeEnabled(boolean value) {
+        mPrefs.edit().putBoolean(PREF_NIGHTMODE_ENABLED, value).apply();
+    }
+
     // -----------------------------
     // getter/setters for debug_preferences.xml
     // -----------------------------
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index ab11940..99e5f1c 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -62,6 +62,7 @@
     static final String PREF_WEB_REFINER_ENABLED = "web_refiner_enabled";
     static final String PREF_HOMEPAGE = "homepage";
     static final String PREF_POWERSAVE_ENABLED = "powersave_enabled";
+    static final String PREF_NIGHTMODE_ENABLED = "nightmode_enabled";
     static final String PREF_SYNC_WITH_CHROME = "sync_with_chrome";
 
     // ----------------------