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

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: Moved per-tab prefs into a helper 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..5fb588fe1757b9d4cd10985561a5bbeb79d9c688
--- /dev/null
+++ b/chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.cc
@@ -0,0 +1,55 @@
+// 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/ui/constrained_window_tab_helper.h"
+#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
+#include "chrome/browser/prefs/pref_service.h"
Avi (use Gerrit) 2011/11/29 15:13:53 alphabetize
mnaganov (inactive) 2011/11/29 16:57:59 Done.
+#include "chrome/browser/profiles/profile.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)
+{
Avi (use Gerrit) 2011/11/29 15:13:53 opening braces always share the previous line
mnaganov (inactive) 2011/11/29 16:57:59 Done.
+ prefs->javascript_enabled =
+ prefs_->GetBoolean(prefs::kWebKitJavascriptEnabled);
+}
+
+void PerTabPrefsTabHelper::RegisterPerTabUserPrefs(PrefService* prefs)
+{
Avi (use Gerrit) 2011/11/29 15:13:53 opening braces always share the previous line
mnaganov (inactive) 2011/11/29 16:57:59 Done.
+ 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