Add debug option to disable performance features for testing

Change-Id: I508448907a83fb32028cb28eb64b72f97a863fd0
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4b2021f..e2205d1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -657,6 +657,13 @@
     <!-- Do not tranlsate.  Development option -->
     <string name="pref_development_cpu_upload_path" translatable="false">Enable Cpu Upload Path</string>
     <!-- Do not tranlsate.  Development option -->
+    <string name="pref_development_disable_perf"
+        translatable="false">High Performance features</string>
+    <string name="pref_development_disable_perf_on"
+        translatable="false">WebRefiner, WebAccelerator, EdgeNavigation enabled</string>
+    <string name="pref_development_disable_perf_off"
+        translatable="false">WebRefiner, WebAccelerator, EdgeNavigation disabled</string>
+    <!-- Do not tranlsate.  Development option -->
     <string name="js_engine_flags" translatable="false">Set JS flags</string>
     <!-- Do not tranlsate.  Development option -->
     <string name="pref_development_uastring" translatable="false">UAString</string>
diff --git a/res/xml/debug_preferences.xml b/res/xml/debug_preferences.xml
index f23ce12..e244188 100644
--- a/res/xml/debug_preferences.xml
+++ b/res/xml/debug_preferences.xml
@@ -78,6 +78,14 @@
         android:defaultValue="false"
         android:title="@string/pref_development_nav_dump" />
 
+    <SwitchPreference
+        android:layout="@layout/swe_preference"
+        android:key="disable_perf"
+        android:defaultValue="true"
+        android:summaryOn="@string/pref_development_disable_perf_on"
+        android:summaryOff="@string/pref_development_disable_perf_off"
+        android:title="@string/pref_development_disable_perf" />
+
     <EditTextPreference
         android:layout="@layout/swe_preference"
         android:key="js_engine_flags"
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 2d53daa..026e661 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -686,8 +686,9 @@
     }
 
     public static boolean isUiLowPowerMode() {
-        return BrowserCommandLine.hasSwitch("ui-low-power-mode") ||
-            BrowserSettings.getInstance().isPowerSaveModeEnabled();
+        return BrowserCommandLine.hasSwitch("ui-low-power-mode")
+            || BrowserSettings.getInstance().isPowerSaveModeEnabled()
+            || BrowserSettings.getInstance().isDisablePerfFeatures();
     }
 
     // -------------------------------------------------------------------------
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 9de584d..82402c1 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -901,6 +901,11 @@
         return mPrefs.getBoolean(PREF_ENABLE_HARDWARE_ACCEL_SKIA, false);
     }
 
+    public boolean isDisablePerfFeatures() {
+        // This value is flipped in the prefs.
+        return !mPrefs.getBoolean(PREF_DISABLE_PERF, true);
+    }
+
     // -----------------------------
     // getter/setters for hidden_debug_preferences.xml
     // -----------------------------
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index 0cc635a..2f144c5 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -53,6 +53,7 @@
     // ----------------------
     static final String PREF_ENABLE_HARDWARE_ACCEL = "enable_hardware_accel";
     static final String PREF_ENABLE_HARDWARE_ACCEL_SKIA = "enable_hardware_accel_skia";
+    static final String PREF_DISABLE_PERF = "disable_perf";
 
     // ----------------------
     // Keys for general_preferences.xml
diff --git a/src/com/android/browser/preferences/DebugPreferencesFragment.java b/src/com/android/browser/preferences/DebugPreferencesFragment.java
index 21e3080..2283fb6 100644
--- a/src/com/android/browser/preferences/DebugPreferencesFragment.java
+++ b/src/com/android/browser/preferences/DebugPreferencesFragment.java
@@ -19,18 +19,41 @@
 import android.app.ActionBar;
 import android.os.Bundle;
 import android.preference.Preference;
+import android.preference.SwitchPreference;
 import android.preference.Preference.OnPreferenceClickListener;
+import android.preference.Preference.OnPreferenceChangeListener;
 
+import com.android.browser.PreferenceKeys;
 import com.android.browser.R;
 
+import org.codeaurora.swe.PermissionsServiceFactory;
+
 public class DebugPreferencesFragment extends SWEPreferenceFragment
-        implements OnPreferenceClickListener {
+        implements OnPreferenceClickListener, OnPreferenceChangeListener {
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
         // Load the XML preferences file
         addPreferencesFromResource(R.xml.debug_preferences);
+
+        SwitchPreference pref = (SwitchPreference) findPreference(PreferenceKeys.PREF_DISABLE_PERF);
+        pref.setOnPreferenceChangeListener(this);
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference pref, Object objValue) {
+        if (getActivity() == null) {
+            return false;
+        }
+
+        if (pref.getKey().equals(PreferenceKeys.PREF_DISABLE_PERF)) {
+            PermissionsServiceFactory.setDefaultPermissions(
+                PermissionsServiceFactory.PermissionType.WEBREFINER, (Boolean)objValue);
+            return true;
+        }
+
+        return false;
     }
 
     @Override