| Index: chrome/browser/ui/prefs/prefs_tab_helper.cc
|
| diff --git a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc
|
| similarity index 54%
|
| copy from chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
|
| copy to chrome/browser/ui/prefs/prefs_tab_helper.cc
|
| index 2df3a278179be442739368997e7848064cd31290..0b4a3a3c73640c437bf9bba650982d685399d8a6 100644
|
| --- a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
|
| +++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc
|
| @@ -2,83 +2,47 @@
|
| // 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/tab_contents_wrapper.h"
|
| -
|
| -#include "base/utf_string_conversions.h"
|
| +#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
|
|
|
| -#include "base/command_line.h"
|
| -#include "base/lazy_instance.h"
|
| #include "base/stringprintf.h"
|
| -#include "chrome/browser/autocomplete_history_manager.h"
|
| -#include "chrome/browser/autofill/autofill_external_delegate.h"
|
| -#include "chrome/browser/autofill/autofill_manager.h"
|
| -#include "chrome/browser/automation/automation_tab_helper.h"
|
| +#include "base/string_util.h"
|
| #include "chrome/browser/browser_process.h"
|
| -#include "chrome/browser/content_settings/tab_specific_content_settings.h"
|
| -#include "chrome/browser/download/download_request_limiter_observer.h"
|
| -#include "chrome/browser/extensions/extension_tab_helper.h"
|
| -#include "chrome/browser/extensions/extension_webnavigation_api.h"
|
| -#include "chrome/browser/external_protocol/external_protocol_observer.h"
|
| -#include "chrome/browser/favicon/favicon_tab_helper.h"
|
| -#include "chrome/browser/google/google_util.h"
|
| -#include "chrome/browser/history/history_tab_helper.h"
|
| -#include "chrome/browser/infobars/infobar_tab_helper.h"
|
| -#include "chrome/browser/omnibox_search_hint.h"
|
| -#include "chrome/browser/password_manager/password_manager.h"
|
| -#include "chrome/browser/password_manager_delegate_impl.h"
|
| -#include "chrome/browser/pdf_unsupported_feature.h"
|
| -#include "chrome/browser/plugin_observer.h"
|
| #include "chrome/browser/prefs/pref_service.h"
|
| -#include "chrome/browser/prerender/prerender_tab_helper.h"
|
| -#include "chrome/browser/printing/print_preview_message_handler.h"
|
| -#include "chrome/browser/printing/print_view_manager.h"
|
| -#include "chrome/browser/renderer_host/web_cache_manager.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/renderer_preferences_util.h"
|
| -#include "chrome/browser/sessions/restore_tab_helper.h"
|
| -#include "chrome/browser/safe_browsing/client_side_detection_host.h"
|
| -#include "chrome/browser/tab_contents/tab_contents_ssl_helper.h"
|
| -#include "chrome/browser/tab_contents/thumbnail_generator.h"
|
| #include "chrome/browser/themes/theme_service.h"
|
| #include "chrome/browser/themes/theme_service_factory.h"
|
| -#include "chrome/browser/translate/translate_tab_helper.h"
|
| -#include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h"
|
| -#include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h"
|
| #include "chrome/browser/ui/constrained_window_tab_helper.h"
|
| -#include "chrome/browser/ui/find_bar/find_tab_helper.h"
|
| -#include "chrome/browser/ui/intents/web_intent_picker_factory_impl.h"
|
| -#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/sync/tab_contents_wrapper_synced_tab_delegate.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/browser/ui/tab_contents/tab_contents_wrapper.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/pref_names.h"
|
| -#include "chrome/common/render_messages.h"
|
| #include "content/browser/renderer_host/render_view_host.h"
|
| -#include "content/browser/tab_contents/tab_contents_view.h"
|
| +#include "content/public/browser/notification_details.h"
|
| #include "content/public/browser/notification_service.h"
|
| -#include "grit/generated_resources.h"
|
| #include "grit/locale_settings.h"
|
| #include "grit/platform_locale_settings.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| #include "webkit/glue/webpreferences.h"
|
|
|
| namespace {
|
|
|
| -static base::LazyInstance<base::PropertyAccessor<TabContentsWrapper*> >
|
| - g_tab_contents_wrapper_property_accessor = LAZY_INSTANCE_INITIALIZER;
|
| +const char* kPerTabPrefsToObserve[] = {
|
| + prefs::kWebKitJavascriptEnabled
|
| +};
|
| +
|
| +const int kPerTabPrefsToObserveLength = arraysize(kPerTabPrefsToObserve);
|
| +
|
| +void RegisterPerTabUserPrefs(PrefService* prefs) {
|
| + WebPreferences pref_defaults;
|
| +
|
| + prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled,
|
| + pref_defaults.javascript_enabled,
|
| + PrefService::UNSYNCABLE_PREF);
|
| +}
|
|
|
| // The list of prefs we want to observe.
|
| const char* kPrefsToObserve[] = {
|
| - prefs::kAlternateErrorPagesEnabled,
|
| prefs::kDefaultCharset,
|
| - prefs::kDefaultZoomLevel,
|
| prefs::kEnableReferrers,
|
| -#if defined (ENABLE_SAFE_BROWSING)
|
| - prefs::kSafeBrowsingEnabled,
|
| -#endif
|
| prefs::kWebKitAllowDisplayingInsecureContent,
|
| prefs::kWebKitAllowRunningInsecureContent,
|
| prefs::kWebKitCursiveFontFamily,
|
| @@ -245,93 +209,10 @@ const size_t kPerScriptFontDefaultsLength = arraysize(kPerScriptFontDefaults);
|
|
|
| } // namespace
|
|
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// TabContentsWrapper, public:
|
| -
|
| -TabContentsWrapper::TabContentsWrapper(TabContents* contents)
|
| - : TabContentsObserver(contents),
|
| - delegate_(NULL),
|
| - in_destructor_(false),
|
| - tab_contents_(contents) {
|
| - DCHECK(contents);
|
| - DCHECK(!GetCurrentWrapperForContents(contents));
|
| - // Stash this in the property bag so it can be retrieved without having to
|
| - // go to a Browser.
|
| - property_accessor()->SetProperty(contents->property_bag(), this);
|
| -
|
| - // Create the tab helpers.
|
| - autocomplete_history_manager_.reset(new AutocompleteHistoryManager(contents));
|
| - autofill_manager_ = new AutofillManager(this);
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kExternalAutofillPopup)) {
|
| - autofill_external_delegate_.reset(
|
| - AutofillExternalDelegate::Create(this, autofill_manager_.get()));
|
| - autofill_manager_->SetExternalDelegate(autofill_external_delegate_.get());
|
| - autocomplete_history_manager_->SetExternalDelegate(
|
| - autofill_external_delegate_.get());
|
| - }
|
| - automation_tab_helper_.reset(new AutomationTabHelper(contents));
|
| - blocked_content_tab_helper_.reset(new BlockedContentTabHelper(this));
|
| - bookmark_tab_helper_.reset(new BookmarkTabHelper(this));
|
| - constrained_window_tab_helper_.reset(new ConstrainedWindowTabHelper(this));
|
| - extension_tab_helper_.reset(new ExtensionTabHelper(this));
|
| - favicon_tab_helper_.reset(new FaviconTabHelper(contents));
|
| - find_tab_helper_.reset(new FindTabHelper(contents));
|
| - history_tab_helper_.reset(new HistoryTabHelper(contents));
|
| - infobar_tab_helper_.reset(new InfoBarTabHelper(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));
|
| -#if defined(ENABLE_SAFE_BROWSING)
|
| - if (profile()->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled) &&
|
| - g_browser_process->safe_browsing_detection_service()) {
|
| - safebrowsing_detection_host_.reset(
|
| - safe_browsing::ClientSideDetectionHost::Create(contents));
|
| - }
|
| -#endif
|
| - search_engine_tab_helper_.reset(new SearchEngineTabHelper(contents));
|
| - ssl_helper_.reset(new TabContentsSSLHelper(this));
|
| - synced_tab_delegate_.reset(new TabContentsWrapperSyncedTabDelegate(this));
|
| - content_settings_.reset(new TabSpecificContentSettings(contents));
|
| - translate_tab_helper_.reset(new TranslateTabHelper(contents));
|
| - web_intent_picker_controller_.reset(new WebIntentPickerController(
|
| - this, new WebIntentPickerFactoryImpl()));
|
| -
|
| - // Create the per-tab observers.
|
| - download_request_limiter_observer_.reset(
|
| - new DownloadRequestLimiterObserver(contents));
|
| - webnavigation_observer_.reset(
|
| - new ExtensionWebNavigationTabObserver(contents));
|
| - external_protocol_observer_.reset(new ExternalProtocolObserver(contents));
|
| - plugin_observer_.reset(new PluginObserver(this));
|
| - print_preview_.reset(new printing::PrintPreviewMessageHandler(contents));
|
| - sad_tab_observer_.reset(new SadTabObserver(contents));
|
| - // Start the in-browser thumbnailing if the feature is enabled.
|
| - if (switches::IsInBrowserThumbnailingEnabled()) {
|
| - thumbnail_generation_observer_.reset(new ThumbnailGenerator);
|
| - thumbnail_generation_observer_->StartThumbnailing(tab_contents_.get());
|
| - }
|
| -
|
| - // Set-up the showing of the omnibox search infobar if applicable.
|
| - if (OmniboxSearchHint::IsEnabled(profile()))
|
| - omnibox_search_hint_.reset(new OmniboxSearchHint(this));
|
| -
|
| - registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED,
|
| - content::NotificationService::AllSources());
|
| - registrar_.Add(this, chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED,
|
| - content::NotificationService::AllSources());
|
| -#if defined(OS_POSIX) && !defined(OS_MACOSX)
|
| - registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
|
| - content::Source<ThemeService>(
|
| - ThemeServiceFactory::GetForProfile(profile())));
|
| -#endif
|
| -
|
| - // Register for notifications about all interested prefs change.
|
| - PrefService* prefs = profile()->GetPrefs();
|
| +PrefsTabHelper::PrefsTabHelper(TabContentsWrapper* wrapper)
|
| + : TabContentsObserver(wrapper->tab_contents()),
|
| + wrapper_(wrapper) {
|
| + PrefService* prefs = wrapper->profile()->GetPrefs();
|
| pref_change_registrar_.Init(prefs);
|
| if (prefs) {
|
| for (int i = 0; i < kPrefsToObserveLength; ++i)
|
| @@ -351,28 +232,31 @@ TabContentsWrapper::TabContentsWrapper(TabContents* contents)
|
| prefs::kWebKitFantasyFontFamilyMap, this);
|
| }
|
|
|
| - renderer_preferences_util::UpdateFromSystemSettings(
|
| - tab_contents()->GetMutableRendererPrefs(), profile());
|
| -}
|
| + per_tab_prefs_.reset(
|
| + wrapper_->profile()->GetPrefs()->CreatePrefServiceWithPerTabPrefStore());
|
| + RegisterPerTabUserPrefs(per_tab_prefs_.get());
|
| + per_tab_pref_change_registrar_.Init(per_tab_prefs_.get());
|
| + for (int i = 0; i < kPerTabPrefsToObserveLength; ++i) {
|
| + per_tab_pref_change_registrar_.Add(kPerTabPrefsToObserve[i], this);
|
| + }
|
|
|
| -TabContentsWrapper::~TabContentsWrapper() {
|
| - in_destructor_ = true;
|
| + renderer_preferences_util::UpdateFromSystemSettings(
|
| + tab_contents()->GetMutableRendererPrefs(), wrapper_->profile());
|
|
|
| - // Need to tear down infobars before the TabContents goes away.
|
| - infobar_tab_helper_.reset();
|
| + registrar_.Add(this, chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED,
|
| + content::NotificationService::AllSources());
|
| +#if defined(OS_POSIX) && !defined(OS_MACOSX)
|
| + registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
|
| + content::Source<ThemeService>(
|
| + ThemeServiceFactory::GetForProfile(wrapper->profile())));
|
| +#endif
|
| }
|
|
|
| -base::PropertyAccessor<TabContentsWrapper*>*
|
| - TabContentsWrapper::property_accessor() {
|
| - return g_tab_contents_wrapper_property_accessor.Pointer();
|
| +PrefsTabHelper::~PrefsTabHelper() {
|
| }
|
|
|
| // static
|
| -void TabContentsWrapper::RegisterUserPrefs(PrefService* prefs) {
|
| - prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled,
|
| - true,
|
| - PrefService::SYNCABLE_PREF);
|
| -
|
| +void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) {
|
| WebPreferences pref_defaults;
|
| prefs->RegisterBooleanPref(prefs::kWebKitGlobalJavascriptEnabled,
|
| pref_defaults.javascript_enabled,
|
| @@ -496,130 +380,18 @@ void TabContentsWrapper::RegisterUserPrefs(PrefService* prefs) {
|
| PrefService::UNSYNCABLE_PREF);
|
| }
|
|
|
| -string16 TabContentsWrapper::GetDefaultTitle() {
|
| - return l10n_util::GetStringUTF16(IDS_DEFAULT_TAB_TITLE);
|
| +void PrefsTabHelper::RenderViewCreated(RenderViewHost* render_view_host) {
|
| + UpdateWebPreferences();
|
| }
|
|
|
| -string16 TabContentsWrapper::GetStatusText() const {
|
| - if (!tab_contents()->IsLoading() ||
|
| - tab_contents()->load_state().state == net::LOAD_STATE_IDLE) {
|
| - return string16();
|
| - }
|
| -
|
| - switch (tab_contents()->load_state().state) {
|
| - case net::LOAD_STATE_WAITING_FOR_DELEGATE:
|
| - return l10n_util::GetStringFUTF16(IDS_LOAD_STATE_WAITING_FOR_DELEGATE,
|
| - tab_contents()->load_state().param);
|
| - case net::LOAD_STATE_WAITING_FOR_CACHE:
|
| - return l10n_util::GetStringUTF16(IDS_LOAD_STATE_WAITING_FOR_CACHE);
|
| - case net::LOAD_STATE_WAITING_FOR_APPCACHE:
|
| - return l10n_util::GetStringUTF16(IDS_LOAD_STATE_WAITING_FOR_APPCACHE);
|
| - case net::LOAD_STATE_ESTABLISHING_PROXY_TUNNEL:
|
| - return
|
| - l10n_util::GetStringUTF16(IDS_LOAD_STATE_ESTABLISHING_PROXY_TUNNEL);
|
| - case net::LOAD_STATE_RESOLVING_PROXY_FOR_URL:
|
| - return l10n_util::GetStringUTF16(IDS_LOAD_STATE_RESOLVING_PROXY_FOR_URL);
|
| - case net::LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT:
|
| - return l10n_util::GetStringUTF16(
|
| - IDS_LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT);
|
| - case net::LOAD_STATE_RESOLVING_HOST:
|
| - return l10n_util::GetStringUTF16(IDS_LOAD_STATE_RESOLVING_HOST);
|
| - case net::LOAD_STATE_CONNECTING:
|
| - return l10n_util::GetStringUTF16(IDS_LOAD_STATE_CONNECTING);
|
| - case net::LOAD_STATE_SSL_HANDSHAKE:
|
| - return l10n_util::GetStringUTF16(IDS_LOAD_STATE_SSL_HANDSHAKE);
|
| - case net::LOAD_STATE_SENDING_REQUEST:
|
| - if (tab_contents()->upload_size())
|
| - return l10n_util::GetStringFUTF16Int(
|
| - IDS_LOAD_STATE_SENDING_REQUEST_WITH_PROGRESS,
|
| - static_cast<int>((100 * tab_contents()->upload_position()) /
|
| - tab_contents()->upload_size()));
|
| - else
|
| - return l10n_util::GetStringUTF16(IDS_LOAD_STATE_SENDING_REQUEST);
|
| - case net::LOAD_STATE_WAITING_FOR_RESPONSE:
|
| - return l10n_util::GetStringFUTF16(IDS_LOAD_STATE_WAITING_FOR_RESPONSE,
|
| - tab_contents()->load_state_host());
|
| - // Ignore net::LOAD_STATE_READING_RESPONSE and net::LOAD_STATE_IDLE
|
| - case net::LOAD_STATE_IDLE:
|
| - case net::LOAD_STATE_READING_RESPONSE:
|
| - break;
|
| - }
|
| -
|
| - return string16();
|
| -}
|
| -
|
| -TabContentsWrapper* TabContentsWrapper::Clone() {
|
| - TabContents* new_contents = tab_contents()->Clone();
|
| - TabContentsWrapper* new_wrapper = new TabContentsWrapper(new_contents);
|
| -
|
| - new_wrapper->extension_tab_helper()->CopyStateFrom(
|
| - *extension_tab_helper_.get());
|
| - return new_wrapper;
|
| -}
|
| -
|
| -void TabContentsWrapper::CaptureSnapshot() {
|
| - Send(new ChromeViewMsg_CaptureSnapshot(routing_id()));
|
| -}
|
| -
|
| -// static
|
| -TabContentsWrapper* TabContentsWrapper::GetCurrentWrapperForContents(
|
| - TabContents* contents) {
|
| - TabContentsWrapper** wrapper =
|
| - property_accessor()->GetProperty(contents->property_bag());
|
| -
|
| - return wrapper ? *wrapper : NULL;
|
| -}
|
| -
|
| -// static
|
| -const TabContentsWrapper* TabContentsWrapper::GetCurrentWrapperForContents(
|
| - const TabContents* contents) {
|
| - TabContentsWrapper* const* wrapper =
|
| - property_accessor()->GetProperty(contents->property_bag());
|
| -
|
| - return wrapper ? *wrapper : NULL;
|
| -}
|
| -
|
| -Profile* TabContentsWrapper::profile() const {
|
| - return Profile::FromBrowserContext(tab_contents()->browser_context());
|
| -}
|
| -
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// TabContentsWrapper implementation:
|
| -
|
| -void TabContentsWrapper::RenderViewCreated(RenderViewHost* render_view_host) {
|
| - UpdateAlternateErrorPageURL(render_view_host);
|
| -}
|
| -
|
| -void TabContentsWrapper::DidBecomeSelected() {
|
| - WebCacheManager::GetInstance()->ObserveActivity(
|
| - tab_contents()->GetRenderProcessHost()->GetID());
|
| -}
|
| -
|
| -bool TabContentsWrapper::OnMessageReceived(const IPC::Message& message) {
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(TabContentsWrapper, message)
|
| - IPC_MESSAGE_HANDLER(ChromeViewHostMsg_Snapshot, OnSnapshot)
|
| - IPC_MESSAGE_HANDLER(ChromeViewHostMsg_PDFHasUnsupportedFeature,
|
| - OnPDFHasUnsupportedFeature)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - return handled;
|
| -}
|
| -
|
| -void TabContentsWrapper::TabContentsDestroyed(TabContents* tab) {
|
| - // Destruction of the TabContents should only be done by us from our
|
| - // destructor. Otherwise it's very likely we (or one of the helpers we own)
|
| - // will attempt to access the TabContents and we'll crash.
|
| - DCHECK(in_destructor_);
|
| +void PrefsTabHelper::TabContentsDestroyed(TabContents* tab) {
|
| + per_tab_pref_change_registrar_.RemoveAll();
|
| }
|
|
|
| -void TabContentsWrapper::Observe(int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) {
|
| +void PrefsTabHelper::Observe(int type,
|
| + const content::NotificationSource& source,
|
| + const content::NotificationDetails& details) {
|
| switch (type) {
|
| - case chrome::NOTIFICATION_GOOGLE_URL_UPDATED:
|
| - UpdateAlternateErrorPageURL(render_view_host());
|
| - break;
|
| case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED:
|
| UpdateWebPreferences();
|
| break;
|
| @@ -632,21 +404,13 @@ 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() ||
|
| - 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) ||
|
| - StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) {
|
| + wrapper_->profile()->GetPrefs() ||
|
| + content::Source<PrefService>(source).ptr() == per_tab_prefs_);
|
| + if ((*pref_name_in == prefs::kDefaultCharset) ||
|
| + StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) {
|
| UpdateWebPreferences();
|
| - } else if (*pref_name_in == prefs::kDefaultZoomLevel) {
|
| - tab_contents()->render_view_host()->SetZoomLevel(
|
| - tab_contents()->GetZoomLevel());
|
| } else if (*pref_name_in == prefs::kEnableReferrers) {
|
| UpdateRendererPreferences();
|
| - } else if (*pref_name_in == prefs::kSafeBrowsingEnabled) {
|
| - UpdateSafebrowsingDetectionHost();
|
| } else {
|
| NOTREACHED() << "unexpected pref change notification" << *pref_name_in;
|
| }
|
| @@ -657,72 +421,16 @@ void TabContentsWrapper::Observe(int type,
|
| }
|
| }
|
|
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -// Internal helpers
|
| -
|
| -void TabContentsWrapper::OnSnapshot(const SkBitmap& bitmap) {
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_TAB_SNAPSHOT_TAKEN,
|
| - content::Source<TabContentsWrapper>(this),
|
| - content::Details<const SkBitmap>(&bitmap));
|
| -}
|
| -
|
| -void TabContentsWrapper::OnPDFHasUnsupportedFeature() {
|
| - PDFHasUnsupportedFeature(this);
|
| -}
|
| -
|
| -GURL TabContentsWrapper::GetAlternateErrorPageURL() const {
|
| - GURL url;
|
| - // Disable alternate error pages when in Incognito mode.
|
| - if (profile()->IsOffTheRecord())
|
| - return url;
|
| -
|
| - PrefService* prefs = profile()->GetPrefs();
|
| - if (prefs->GetBoolean(prefs::kAlternateErrorPagesEnabled)) {
|
| - url = google_util::AppendGoogleLocaleParam(
|
| - GURL(google_util::kLinkDoctorBaseURL));
|
| - url = google_util::AppendGoogleTLDParam(url);
|
| - }
|
| - return url;
|
| -}
|
| -
|
| -void TabContentsWrapper::UpdateAlternateErrorPageURL(RenderViewHost* rvh) {
|
| - rvh->SetAltErrorPageURL(GetAlternateErrorPageURL());
|
| -}
|
| -
|
| -void TabContentsWrapper::UpdateWebPreferences() {
|
| +void PrefsTabHelper::UpdateWebPreferences() {
|
| RenderViewHostDelegate* rvhd = tab_contents();
|
| WebPreferences prefs = rvhd->GetWebkitPrefs();
|
| - per_tab_prefs_tab_helper_->OverrideWebPreferences(&prefs);
|
| + prefs.javascript_enabled =
|
| + per_tab_prefs_->GetBoolean(prefs::kWebKitJavascriptEnabled);
|
| tab_contents()->render_view_host()->UpdateWebkitPreferences(prefs);
|
| }
|
|
|
| -void TabContentsWrapper::UpdateRendererPreferences() {
|
| +void PrefsTabHelper::UpdateRendererPreferences() {
|
| renderer_preferences_util::UpdateFromSystemSettings(
|
| - tab_contents()->GetMutableRendererPrefs(), profile());
|
| - render_view_host()->SyncRendererPrefs();
|
| -}
|
| -
|
| -void TabContentsWrapper::UpdateSafebrowsingDetectionHost() {
|
| -#if defined(ENABLE_SAFE_BROWSING)
|
| - PrefService* prefs = profile()->GetPrefs();
|
| - bool safe_browsing = prefs->GetBoolean(prefs::kSafeBrowsingEnabled);
|
| - if (safe_browsing &&
|
| - g_browser_process->safe_browsing_detection_service()) {
|
| - if (!safebrowsing_detection_host_.get()) {
|
| - safebrowsing_detection_host_.reset(
|
| - safe_browsing::ClientSideDetectionHost::Create(tab_contents()));
|
| - }
|
| - } else {
|
| - safebrowsing_detection_host_.reset();
|
| - }
|
| - render_view_host()->Send(
|
| - new ChromeViewMsg_SetClientSidePhishingDetection(routing_id(),
|
| - safe_browsing));
|
| -#endif
|
| -}
|
| -
|
| -void TabContentsWrapper::ExitFullscreenMode() {
|
| - if (tab_contents() && render_view_host())
|
| - tab_contents()->render_view_host()->ExitFullscreen();
|
| + tab_contents()->GetMutableRendererPrefs(), wrapper_->profile());
|
| + tab_contents()->render_view_host()->SyncRendererPrefs();
|
| }
|
|
|