Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3628)

Unified Diff: chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.cc

Issue 8716004: Add per-tab "JavaScript enabled" preference. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments and fixed fwd declaration Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.cc
diff --git a/chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.cc b/chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4a5abb934960abcfb3c9dca2d8006a2c12a9ff8d
--- /dev/null
+++ b/chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.cc
@@ -0,0 +1,53 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.h"
+
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/constrained_window_tab_helper.h"
+#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
+#include "chrome/common/pref_names.h"
+#include "webkit/glue/webpreferences.h"
+
+const char* kPerTabPrefsToObserve[] = {
+ prefs::kWebKitJavascriptEnabled
+};
+
+const int kPerTabPrefsToObserveLength = arraysize(kPerTabPrefsToObserve);
+
+PerTabPrefsTabHelper::PerTabPrefsTabHelper(
+ TabContentsWrapper* wrapper)
+ : TabContentsObserver(wrapper->tab_contents()),
+ wrapper_(wrapper) {
+ prefs_.reset(
+ wrapper_->profile()->GetPrefs()->CreatePrefServiceWithPerTabPrefStore());
+ RegisterPerTabUserPrefs(prefs_.get());
+
+ // Notify the wrapper about all interested prefs changes.
+ pref_change_registrar_.Init(prefs_.get());
+ for (int i = 0; i < kPerTabPrefsToObserveLength; ++i) {
+ pref_change_registrar_.Add(kPerTabPrefsToObserve[i], wrapper_);
+ }
+}
+
+PerTabPrefsTabHelper::~PerTabPrefsTabHelper() {
+}
+
+void PerTabPrefsTabHelper::OverrideWebPreferences(WebPreferences* prefs) {
+ prefs->javascript_enabled =
+ prefs_->GetBoolean(prefs::kWebKitJavascriptEnabled);
+}
+
+void PerTabPrefsTabHelper::RegisterPerTabUserPrefs(PrefService* prefs) {
+ WebPreferences pref_defaults;
+
+ prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled,
+ pref_defaults.javascript_enabled,
+ PrefService::UNSYNCABLE_PREF);
+}
+
+void PerTabPrefsTabHelper::TabContentsDestroyed(TabContents* tab) {
+ pref_change_registrar_.RemoveAll();
+}

Powered by Google App Engine
This is Rietveld 408576698