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
