| Index: chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
|
| diff --git a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
|
| index 04132501aa76844221940661dd5baaeec44c21fe..2c534ecc94a2fe71af0f836f9816e36ff4196bda 100644
|
| --- a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
|
| +++ b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
|
| @@ -49,6 +49,7 @@
|
| #include "chrome/browser/ui/intents/web_intent_picker_controller.h"
|
| #include "chrome/browser/ui/sad_tab_observer.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_delegate.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| #include "chrome/common/chrome_switches.h"
|
| @@ -84,8 +85,8 @@ const char* kPrefsToObserve[] = {
|
| prefs::kWebKitDefaultFontSize,
|
| prefs::kWebKitFantasyFontFamily,
|
| prefs::kWebKitFixedFontFamily,
|
| + prefs::kWebKitGlobalJavascriptEnabled,
|
| prefs::kWebKitJavaEnabled,
|
| - prefs::kWebKitJavascriptEnabled,
|
| prefs::kWebKitLoadsImagesAutomatically,
|
| prefs::kWebKitMinimumFontSize,
|
| prefs::kWebKitMinimumLogicalFontSize,
|
| @@ -282,6 +283,7 @@ TabContentsWrapper::TabContentsWrapper(TabContents* contents)
|
| password_manager_delegate_.reset(new PasswordManagerDelegateImpl(this));
|
| password_manager_.reset(
|
| new PasswordManager(contents, password_manager_delegate_.get()));
|
| + per_tab_prefs_tab_helper_.reset(new PerTabPrefsTabHelper(this));
|
| prerender_tab_helper_.reset(new prerender::PrerenderTabHelper(this));
|
| print_view_manager_.reset(new printing::PrintViewManager(this));
|
| restore_tab_helper_.reset(new RestoreTabHelper(this));
|
| @@ -306,8 +308,6 @@ TabContentsWrapper::TabContentsWrapper(TabContents* contents)
|
| new ExtensionWebNavigationTabObserver(contents));
|
| external_protocol_observer_.reset(new ExternalProtocolObserver(contents));
|
| plugin_observer_.reset(new PluginObserver(this));
|
| - per_tab_prefs_.reset(
|
| - profile()->GetPrefs()->CreatePrefServiceWithPerTabPrefStore());
|
| print_preview_.reset(new printing::PrintPreviewMessageHandler(contents));
|
| sad_tab_observer_.reset(new SadTabObserver(contents));
|
| // Start the in-browser thumbnailing if the feature is enabled.
|
| @@ -374,7 +374,7 @@ void TabContentsWrapper::RegisterUserPrefs(PrefService* prefs) {
|
| PrefService::SYNCABLE_PREF);
|
|
|
| WebPreferences pref_defaults;
|
| - prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled,
|
| + prefs->RegisterBooleanPref(prefs::kWebKitGlobalJavascriptEnabled,
|
| pref_defaults.javascript_enabled,
|
| PrefService::UNSYNCABLE_PREF);
|
| prefs->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled,
|
| @@ -632,7 +632,9 @@ void TabContentsWrapper::Observe(int type,
|
| case chrome::NOTIFICATION_PREF_CHANGED: {
|
| std::string* pref_name_in = content::Details<std::string>(details).ptr();
|
| DCHECK(content::Source<PrefService>(source).ptr() ==
|
| - profile()->GetPrefs());
|
| + profile()->GetPrefs() ||
|
| + content::Source<PrefService>(source).ptr() ==
|
| + per_tab_prefs_tab_helper_->prefs());
|
| if (*pref_name_in == prefs::kAlternateErrorPagesEnabled) {
|
| UpdateAlternateErrorPageURL(render_view_host());
|
| } else if ((*pref_name_in == prefs::kDefaultCharset) ||
|
| @@ -690,8 +692,9 @@ void TabContentsWrapper::UpdateAlternateErrorPageURL(RenderViewHost* rvh) {
|
|
|
| void TabContentsWrapper::UpdateWebPreferences() {
|
| RenderViewHostDelegate* rvhd = tab_contents();
|
| - tab_contents()->render_view_host()->UpdateWebkitPreferences(
|
| - rvhd->GetWebkitPrefs());
|
| + WebPreferences prefs = rvhd->GetWebkitPrefs();
|
| + per_tab_prefs_tab_helper_->OverrideWebPreferences(&prefs);
|
| + tab_contents()->render_view_host()->UpdateWebkitPreferences(prefs);
|
| }
|
|
|
| void TabContentsWrapper::UpdateRendererPreferences() {
|
|
|