diff --git a/res/xml-sw600dp/advanced_preferences.xml b/res/xml-sw600dp/advanced_preferences.xml
index 359386f..688c70e 100644
--- a/res/xml-sw600dp/advanced_preferences.xml
+++ b/res/xml-sw600dp/advanced_preferences.xml
@@ -41,14 +41,6 @@
             android:defaultValue="true"
             android:title="@string/pref_memory_monitor" />
 
-    <ListPreference
-            android:key="plugin_state"
-            android:title="@string/pref_content_plugins"
-            android:defaultValue="ON"
-            android:entries="@array/pref_content_plugins_choices"
-            android:entryValues="@array/pref_content_plugins_values"
-            android:dialogTitle="@string/pref_content_plugins" />
-
     <PreferenceScreen
             android:key="website_settings"
             android:title="@string/pref_extras_website_settings"
diff --git a/res/xml/advanced_preferences.xml b/res/xml/advanced_preferences.xml
index 333883a..5b2c169 100644
--- a/res/xml/advanced_preferences.xml
+++ b/res/xml/advanced_preferences.xml
@@ -46,14 +46,6 @@
             android:defaultValue="false"
             android:title="@string/pref_allow_apptabs" />
 
-    <ListPreference
-            android:key="plugin_state"
-            android:title="@string/pref_content_plugins"
-            android:defaultValue="ON"
-            android:entries="@array/pref_content_plugins_choices"
-            android:entryValues="@array/pref_content_plugins_values"
-            android:dialogTitle="@string/pref_content_plugins" />
-
     <PreferenceScreen
             android:key="website_settings"
             android:title="@string/pref_extras_website_settings"
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 77ee04d..12013ab 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -271,7 +271,6 @@
         settings.setDefaultZoom(getDefaultZoom());
         settings.setMinimumFontSize(getMinimumFontSize());
         settings.setMinimumLogicalFontSize(getMinimumFontSize());
-        settings.setPluginState(getPluginState());
         settings.setTextZoom(getTextZoom());
         settings.setLayoutAlgorithm(getLayoutAlgorithm());
         settings.setJavaScriptCanOpenWindowsAutomatically(!blockPopupWindows());
@@ -776,12 +775,6 @@
     }
 
     // TODO: Cache
-    public PluginState getPluginState() {
-        String state = mPrefs.getString(PREF_PLUGIN_STATE, "ON");
-        return PluginState.valueOf(state);
-    }
-
-    // TODO: Cache
     public ZoomDensity getDefaultZoom() {
         String zoom = mPrefs.getString(PREF_DEFAULT_ZOOM, "MEDIUM");
         ZoomDensity zoomDensity = ZoomDensity.valueOf(zoom);
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index 5860cd4..73af1f7 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -43,7 +43,6 @@
     static final String PREF_ENABLE_MEMORY_MONITOR = "enable_memory_monitor";
     static final String PREF_LOAD_PAGE = "load_page";
     static final String PREF_OPEN_IN_BACKGROUND = "open_in_background";
-    static final String PREF_PLUGIN_STATE = "plugin_state";
     static final String PREF_RESET_DEFAULT_PREFERENCES = "reset_default_preferences";
     static final String PREF_SEARCH_ENGINE = "search_engine";
     static final String PREF_WEBSITE_SETTINGS = "website_settings";
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index d6fd21d..e693297 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -72,8 +72,6 @@
         e.setOnPreferenceChangeListener(this);
         updateListPreferenceSummary((ListPreference) e);
 
-        e = findPreference(PreferenceKeys.PREF_PLUGIN_STATE);
-        e.setOnPreferenceChangeListener(this);
         updateListPreferenceSummary((ListPreference) e);
         onInitdownloadSettingsPreference();
     }
@@ -194,8 +192,7 @@
                         getActivity(), BrowserActivity.class));
                 return true;
             }
-        } else if (pref.getKey().equals(PreferenceKeys.PREF_PLUGIN_STATE)
-                || pref.getKey().equals(PreferenceKeys.PREF_SEARCH_ENGINE)) {
+        } else if (pref.getKey().equals(PreferenceKeys.PREF_SEARCH_ENGINE)) {
             ListPreference lp = (ListPreference) pref;
             lp.setValue((String) objValue);
             updateListPreferenceSummary(lp);
