Commit 9ce7cb4c authored by avi@chromium.org's avatar avi@chromium.org

Make PerTabPrefsTabHelper into PrefsTabHelper, move all prefs code into it.

BUG=105872
TEST=no change

Review URL: http://codereview.chromium.org/8775064

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113424 0039d316-1c4b-4281-b951-d872f2087c98
parent 0dce842b
......@@ -51,6 +51,7 @@
#include "chrome/browser/task_manager/task_manager.h"
#include "chrome/browser/translate/translate_prefs.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
#include "chrome/browser/ui/search_engines/keyword_editor_controller.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
#include "chrome/browser/ui/webui/flags_ui.h"
......@@ -155,6 +156,7 @@ void RegisterUserPrefs(PrefService* user_prefs) {
DownloadPrefs::RegisterUserPrefs(user_prefs);
bookmark_utils::RegisterUserPrefs(user_prefs);
TabContentsWrapper::RegisterUserPrefs(user_prefs);
PrefsTabHelper::RegisterUserPrefs(user_prefs);
TemplateURLPrepopulateData::RegisterUserPrefs(user_prefs);
ExtensionWebUI::RegisterUserPrefs(user_prefs);
ExtensionSettingsHandler::RegisterUserPrefs(user_prefs);
......
......@@ -45,8 +45,8 @@
#include "chrome/browser/translate/translate_prefs.h"
#include "chrome/browser/translate/translate_tab_helper.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
#include "chrome/browser/ui/search_engines/search_engine_tab_helper.h"
#include "chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_switches.h"
......@@ -1779,7 +1779,7 @@ bool RenderViewContextMenu::IsDevCommandEnabled(int id) const {
if (!tab_contents_wrapper)
return false;
// Don't enable the web inspector if JavaScript is disabled.
if (!tab_contents_wrapper->per_tab_prefs_tab_helper()->prefs()->GetBoolean(
if (!tab_contents_wrapper->prefs_tab_helper()->per_tab_prefs()->GetBoolean(
prefs::kWebKitJavascriptEnabled) ||
command_line.HasSwitch(switches::kDisableJavaScript))
return false;
......
This diff is collapsed.
......@@ -2,42 +2,58 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_TAB_CONTENTS_PER_TAB_PREFS_TAB_HELPER_H_
#define CHROME_BROWSER_UI_TAB_CONTENTS_PER_TAB_PREFS_TAB_HELPER_H_
#ifndef CHROME_BROWSER_UI_PREFS_PREFS_TAB_HELPER_H_
#define CHROME_BROWSER_UI_PREFS_PREFS_TAB_HELPER_H_
#pragma once
#include "chrome/browser/prefs/pref_change_registrar.h"
#include "content/browser/tab_contents/tab_contents_observer.h"
#include "content/public/browser/notification_registrar.h"
class PrefService;
class TabContentsWrapper;
struct WebPreferences;
// Per-tab class to override user preferences.
class PerTabPrefsTabHelper : public TabContentsObserver {
// Per-tab class to handle user preferences.
class PrefsTabHelper : public TabContentsObserver,
public content::NotificationObserver {
public:
explicit PerTabPrefsTabHelper(TabContentsWrapper* tab_contents);
virtual ~PerTabPrefsTabHelper();
explicit PrefsTabHelper(TabContentsWrapper* tab_contents);
virtual ~PrefsTabHelper();
PrefService* prefs() { return prefs_.get(); }
static void RegisterUserPrefs(PrefService* prefs);
virtual void OverrideWebPreferences(WebPreferences* prefs);
PrefService* per_tab_prefs() { return per_tab_prefs_.get(); }
protected:
void RegisterPerTabUserPrefs(PrefService* prefs);
// Update the RenderView's WebPreferences. Exposed as protected for testing.
virtual void UpdateWebPreferences();
// TabContentsObserver overrides:
// TabContentsObserver overrides, exposed as protected for testing.
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
virtual void TabContentsDestroyed(TabContents* tab) OVERRIDE;
private:
// TabContentsObserver overrides:
virtual void TabContentsDestroyed(TabContents* tab) OVERRIDE;
// content::NotificationObserver overrides:
virtual void Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE;
// Update the TabContents's RendererPreferences.
void UpdateRendererPreferences();
// Our owning TabContentsWrapper.
TabContentsWrapper* wrapper_;
scoped_ptr<PrefService> prefs_;
content::NotificationRegistrar registrar_;
scoped_ptr<PrefService> per_tab_prefs_;
PrefChangeRegistrar pref_change_registrar_;
PrefChangeRegistrar per_tab_pref_change_registrar_;
DISALLOW_COPY_AND_ASSIGN(PerTabPrefsTabHelper);
DISALLOW_COPY_AND_ASSIGN(PrefsTabHelper);
};
#endif // CHROME_BROWSER_UI_TAB_CONTENTS_PER_TAB_PREFS_TAB_HELPER_H_
#endif // CHROME_BROWSER_UI_PREFS_PREFS_TAB_HELPER_H_
......@@ -4,7 +4,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.h"
#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
#include "chrome/browser/ui/tab_contents/test_tab_contents_wrapper.h"
#include "content/browser/tab_contents/test_tab_contents.h"
......@@ -12,38 +12,38 @@
using content::BrowserThread;
class TestPerTabPrefsTabHelper : public PerTabPrefsTabHelper {
class TestPrefsTabHelper : public PrefsTabHelper {
public:
explicit TestPerTabPrefsTabHelper(TabContentsWrapper* tab_contents)
: PerTabPrefsTabHelper(tab_contents),
was_override_web_prefernces_called_(false) {
explicit TestPrefsTabHelper(TabContentsWrapper* tab_contents)
: PrefsTabHelper(tab_contents),
was_update_web_preferences_called_(false) {
}
virtual ~TestPerTabPrefsTabHelper() { }
virtual ~TestPrefsTabHelper() { }
virtual void OverrideWebPreferences(WebPreferences* prefs) OVERRIDE {
was_override_web_prefernces_called_ = true;
PerTabPrefsTabHelper::OverrideWebPreferences(prefs);
virtual void UpdateWebPreferences() OVERRIDE {
was_update_web_preferences_called_ = true;
PrefsTabHelper::UpdateWebPreferences();
}
void NotifyRenderViewCreated() {
RenderViewCreated(NULL);
}
bool was_override_web_prefernces_called() {
return was_override_web_prefernces_called_;
bool was_update_web_preferences_called() {
return was_update_web_preferences_called_;
}
private:
bool was_override_web_prefernces_called_;
bool was_update_web_preferences_called_;
};
class PerTabPrefsTabHelperTest : public TabContentsWrapperTestHarness {
class PrefsTabHelperTest : public TabContentsWrapperTestHarness {
public:
PerTabPrefsTabHelperTest()
PrefsTabHelperTest()
: TabContentsWrapperTestHarness(),
ui_thread_(BrowserThread::UI, &message_loop_) {}
virtual ~PerTabPrefsTabHelperTest() {}
virtual ~PrefsTabHelperTest() {}
TabContentsWrapper* contents_wrapper2() {
return contents_wrapper2_.get();
......@@ -69,14 +69,14 @@ class PerTabPrefsTabHelperTest : public TabContentsWrapperTestHarness {
content::TestBrowserThread ui_thread_;
scoped_ptr<TabContentsWrapper> contents_wrapper2_;
DISALLOW_COPY_AND_ASSIGN(PerTabPrefsTabHelperTest);
DISALLOW_COPY_AND_ASSIGN(PrefsTabHelperTest);
};
TEST_F(PerTabPrefsTabHelperTest, PerTabJavaScriptEnabled) {
TEST_F(PrefsTabHelperTest, PerTabJavaScriptEnabled) {
const char* key = prefs::kWebKitJavascriptEnabled;
PrefService* prefs1 = contents_wrapper()->per_tab_prefs_tab_helper()->prefs();
PrefService* prefs1 = contents_wrapper()->prefs_tab_helper()->per_tab_prefs();
PrefService* prefs2 =
contents_wrapper2()->per_tab_prefs_tab_helper()->prefs();
contents_wrapper2()->prefs_tab_helper()->per_tab_prefs();
const bool initial_value = prefs1->GetBoolean(key);
EXPECT_EQ(initial_value, prefs2->GetBoolean(key));
......@@ -93,11 +93,11 @@ TEST_F(PerTabPrefsTabHelperTest, PerTabJavaScriptEnabled) {
EXPECT_EQ(!initial_value, prefs2->GetBoolean(key));
}
TEST_F(PerTabPrefsTabHelperTest, OverridePrefsOnViewCreation) {
TestPerTabPrefsTabHelper* test_prefs_helper = new TestPerTabPrefsTabHelper(
contents_wrapper());
contents_wrapper()->per_tab_prefs_tab_helper_.reset(test_prefs_helper);
EXPECT_FALSE(test_prefs_helper->was_override_web_prefernces_called());
TEST_F(PrefsTabHelperTest, OverridePrefsOnViewCreation) {
TestPrefsTabHelper* test_prefs_helper =
new TestPrefsTabHelper(contents_wrapper());
contents_wrapper()->prefs_tab_helper_.reset(test_prefs_helper);
EXPECT_FALSE(test_prefs_helper->was_update_web_preferences_called());
test_prefs_helper->NotifyRenderViewCreated();
EXPECT_TRUE(test_prefs_helper->was_override_web_prefernces_called());
EXPECT_TRUE(test_prefs_helper->was_update_web_preferences_called());
}
// 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::RenderViewCreated(RenderViewHost* render_view_host) {
wrapper_->UpdateWebPreferences();
}
void PerTabPrefsTabHelper::TabContentsDestroyed(TabContents* tab) {
pref_change_registrar_.RemoveAll();
}
......@@ -26,21 +26,19 @@ class BlockedContentTabHelper;
class BookmarkTabHelper;
class ConstrainedWindowTabHelper;
class DownloadRequestLimiterObserver;
class Extension;
class ExtensionTabHelper;
class ExtensionWebNavigationTabObserver;
class ExternalProtocolObserver;
class FaviconTabHelper;
class FindTabHelper;
class InfoBarTabHelper;
class HistoryTabHelper;
class NavigationController;
class InfoBarTabHelper;
class OmniboxSearchHint;
class PasswordManager;
class PasswordManagerDelegate;
class PerTabPrefsTabHelper;
class PluginObserver;
class PrefService;
class PrefsTabHelper;
class Profile;
class RestoreTabHelper;
class SadTabObserver;
......@@ -53,10 +51,6 @@ class ThumbnailGenerator;
class TranslateTabHelper;
class WebIntentPickerController;
namespace browser_sync {
class SyncedTabDelegate;
}
namespace IPC {
class Message;
}
......@@ -174,10 +168,7 @@ class TabContentsWrapper : public TabContentsObserver,
HistoryTabHelper* history_tab_helper() { return history_tab_helper_.get(); }
InfoBarTabHelper* infobar_tab_helper() { return infobar_tab_helper_.get(); }
PasswordManager* password_manager() { return password_manager_.get(); }
PerTabPrefsTabHelper* per_tab_prefs_tab_helper() {
return per_tab_prefs_tab_helper_.get();
}
PrefsTabHelper* prefs_tab_helper() { return prefs_tab_helper_.get(); }
prerender::PrerenderTabHelper* prerender_tab_helper() {
return prerender_tab_helper_.get();
......@@ -235,9 +226,8 @@ class TabContentsWrapper : public TabContentsObserver,
const content::NotificationDetails& details) OVERRIDE;
private:
friend class PerTabPrefsTabHelper; // for UpdateWebPreferences
FRIEND_TEST_ALL_PREFIXES(
PerTabPrefsTabHelperTest, OverridePrefsOnViewCreation);
PrefsTabHelperTest, OverridePrefsOnViewCreation);
// Internal helpers ----------------------------------------------------------
......@@ -252,12 +242,6 @@ class TabContentsWrapper : public TabContentsObserver,
// Send the alternate error page URL to the renderer.
void UpdateAlternateErrorPageURL(RenderViewHost* rvh);
// Update the RenderView's WebPreferences.
void UpdateWebPreferences();
// Update the TabContents's RendererPreferences.
void UpdateRendererPreferences();
// Create or destroy SafebrowsingDetectionHost as needed if the user's
// safe browsing preference has changed.
void UpdateSafebrowsingDetectionHost();
......@@ -298,7 +282,7 @@ class TabContentsWrapper : public TabContentsObserver,
scoped_ptr<PasswordManagerDelegate> password_manager_delegate_;
scoped_ptr<PasswordManager> password_manager_;
scoped_ptr<PerTabPrefsTabHelper> per_tab_prefs_tab_helper_;
scoped_ptr<PrefsTabHelper> prefs_tab_helper_;
scoped_ptr<prerender::PrerenderTabHelper> prerender_tab_helper_;
// Handles print job for this contents.
......
......@@ -3222,6 +3222,8 @@
'browser/ui/panels/panel_titlebar_view_cocoa.mm',
'browser/ui/panels/panel_window_controller_cocoa.h',
'browser/ui/panels/panel_window_controller_cocoa.mm',
'browser/ui/prefs/prefs_tab_helper.cc',
'browser/ui/prefs/prefs_tab_helper.h',
'browser/ui/profile_error_dialog.cc',
'browser/ui/profile_error_dialog.h',
'browser/ui/sad_tab_observer.cc',
......@@ -3245,8 +3247,6 @@
'browser/ui/sync/browser_synced_window_delegate.cc',
'browser/ui/sync/tab_contents_wrapper_synced_tab_delegate.cc',
'browser/ui/sync/tab_contents_wrapper_synced_tab_delegate.h',
'browser/ui/tab_contents/per_tab_prefs_tab_helper.cc',
'browser/ui/tab_contents/per_tab_prefs_tab_helper.h',
'browser/ui/tab_contents/tab_contents_wrapper.cc',
'browser/ui/tab_contents/tab_contents_wrapper.h',
'browser/ui/tab_contents/tab_contents_wrapper_delegate.cc',
......
......@@ -1885,11 +1885,11 @@
'browser/ui/panels/auto_hiding_desktop_bar_win_unittest.cc',
'browser/ui/panels/panel_browser_window_cocoa_unittest.mm',
'browser/ui/panels/panel_mouse_watcher_unittest.cc',
'browser/ui/prefs/prefs_tab_helper_unittest.cc',
'browser/ui/search_engines/keyword_editor_controller_unittest.cc',
'browser/ui/select_file_dialog_unittest.cc',
'browser/ui/tabs/dock_info_unittest.cc',
'browser/ui/tabs/tab_menu_model_unittest.cc',
'browser/ui/tab_contents/per_tab_prefs_tab_helper_unittest.cc',
'browser/ui/tests/ui_gfx_image_unittest.cc',
'browser/ui/tests/ui_gfx_image_unittest.mm',
'browser/ui/toolbar/back_forward_menu_model_unittest.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment