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
