Commit 11f764bb authored by jam@chromium.org's avatar jam@chromium.org

Remove dependency on PrefChangeRegistrar and renderer_preferences_util from content.

BUG=76697
Review URL: http://codereview.chromium.org/7066039

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86679 0039d316-1c4b-4281-b951-d872f2087c98
parent 882e27ed
......@@ -177,23 +177,6 @@ bool ChromeContentBrowserClient::IsURLSameAsAnySiteInstance(const GURL& url) {
url.spec() == chrome::kAboutShorthangURL;
}
GURL ChromeContentBrowserClient::GetAlternateErrorPageURL(
const TabContents* tab) {
GURL url;
// Disable alternate error pages when in OffTheRecord/Incognito mode.
if (tab->profile()->IsOffTheRecord())
return url;
PrefService* prefs = tab->profile()->GetPrefs();
DCHECK(prefs);
if (prefs->GetBoolean(prefs::kAlternateErrorPagesEnabled)) {
url = google_util::AppendGoogleLocaleParam(
GURL(google_util::kLinkDoctorBaseURL));
url = google_util::AppendGoogleTLDParam(url);
}
return url;
}
std::string ChromeContentBrowserClient::GetCanonicalEncodingNameByAliasName(
const std::string& alias_name) {
return CharacterEncoding::GetCanonicalEncodingNameByAliasName(alias_name);
......
......@@ -19,7 +19,6 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient {
virtual content::WebUIFactory* GetWebUIFactory();
virtual GURL GetEffectiveURL(Profile* profile, const GURL& url);
virtual bool IsURLSameAsAnySiteInstance(const GURL& url);
virtual GURL GetAlternateErrorPageURL(const TabContents* tab);
virtual std::string GetCanonicalEncodingNameByAliasName(
const std::string& alias_name);
virtual void AppendExtraCommandLineSwitches(CommandLine* command_line,
......
......@@ -90,6 +90,7 @@ bool ChromeRenderMessageFilter::OnMessageReceived(const IPC::Message& message,
OnCanTriggerClipboardRead)
IPC_MESSAGE_HANDLER(ViewHostMsg_CanTriggerClipboardWrite,
OnCanTriggerClipboardWrite)
IPC_MESSAGE_HANDLER(ViewHostMsg_ClearPredictorCache, OnClearPredictorCache)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
......@@ -421,6 +422,13 @@ void ChromeRenderMessageFilter::OnCanTriggerClipboardWrite(const GURL& url,
url, Extension::kClipboardWritePermission);
}
void ChromeRenderMessageFilter::OnClearPredictorCache(int* result) {
// This function is disabled unless the user has enabled
// benchmarking extensions.
chrome_browser_net::ClearPredictorCache();
*result = 0;
}
void ChromeRenderMessageFilter::OnGetCookies(
const GURL& url,
const GURL& first_party_for_cookies,
......
......@@ -109,6 +109,7 @@ class ChromeRenderMessageFilter : public BrowserMessageFilter {
ContentSetting* setting);
void OnCanTriggerClipboardRead(const GURL& url, bool* allowed);
void OnCanTriggerClipboardWrite(const GURL& url, bool* allowed);
void OnClearPredictorCache(int* result);
void OnGetCookies(const GURL& url,
const GURL& first_party_for_cookies,
IPC::Message* reply_msg);
......
......@@ -5,8 +5,12 @@
#include "chrome/browser/renderer_host/chrome_render_view_host_observer.h"
#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/net/predictor_api.h"
#include "chrome/common/render_messages.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/common/notification_service.h"
#include "content/common/url_constants.h"
#include "content/common/view_messages.h"
ChromeRenderViewHostObserver::ChromeRenderViewHostObserver(
......@@ -17,6 +21,14 @@ ChromeRenderViewHostObserver::ChromeRenderViewHostObserver(
ChromeRenderViewHostObserver::~ChromeRenderViewHostObserver() {
}
void ChromeRenderViewHostObserver::Navigate(
const ViewMsg_Navigate_Params& params) {
const GURL& url = params.url;
if (!render_view_host()->delegate()->IsExternalTabContainer() &&
(url.SchemeIs(chrome::kHttpScheme) || url.SchemeIs(chrome::kHttpsScheme)))
chrome_browser_net::PreconnectUrlAndSubresources(url);
}
bool ChromeRenderViewHostObserver::OnMessageReceived(
const IPC::Message& message) {
bool handled = true;
......
......@@ -16,7 +16,8 @@ class ChromeRenderViewHostObserver : public RenderViewHostObserver {
virtual ~ChromeRenderViewHostObserver();
// RenderViewHostObserver overrides.
virtual bool OnMessageReceived(const IPC::Message& message);
virtual void Navigate(const ViewMsg_Navigate_Params& params) OVERRIDE;
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
private:
void OnDomOperationResponse(const std::string& json_string,
......
......@@ -5,6 +5,8 @@
#include "chrome/browser/tab_contents/chrome_interstitial_page.h"
#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/renderer_preferences_util.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "content/common/notification_service.h"
#include "content/common/notification_source.h"
......@@ -12,6 +14,10 @@ ChromeInterstitialPage::ChromeInterstitialPage(TabContents* tab,
bool new_navigation,
const GURL& url)
: InterstitialPage(tab, new_navigation, url) {
RendererPreferences prefs;
renderer_preferences_util::UpdateFromSystemSettings(
&prefs, tab->profile());
set_renderer_preferences(prefs);
}
ChromeInterstitialPage::~ChromeInterstitialPage() {
......
......@@ -18,6 +18,7 @@
#include "chrome/browser/external_protocol/external_protocol_observer.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
#include "chrome/browser/file_select_helper.h"
#include "chrome/browser/google/google_util.h"
#include "chrome/browser/history/history_tab_helper.h"
#include "chrome/browser/omnibox_search_hint.h"
#include "chrome/browser/password_manager/password_manager.h"
......@@ -28,6 +29,7 @@
#include "chrome/browser/prerender/prerender_observer.h"
#include "chrome/browser/printing/print_preview_message_handler.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/renderer_preferences_util.h"
#include "chrome/browser/safe_browsing/client_side_detection_host.h"
#include "chrome/browser/tab_contents/infobar_delegate.h"
#include "chrome/browser/tab_contents/simple_alert_infobar_delegate.h"
......@@ -43,6 +45,7 @@
#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.h"
#include "content/common/notification_service.h"
#include "content/common/view_messages.h"
......@@ -52,9 +55,23 @@
#include "ui/base/l10n/l10n_util.h"
#include "webkit/glue/webpreferences.h"
namespace {
static base::LazyInstance<PropertyAccessor<TabContentsWrapper*> >
g_tab_contents_wrapper_property_accessor(base::LINKER_INITIALIZED);
// The list of prefs we want to observe.
const char* kPrefsToObserve[] = {
prefs::kAlternateErrorPagesEnabled,
prefs::kDefaultCharset,
prefs::kDefaultZoomLevel,
prefs::kEnableReferrers
};
const int kPrefsToObserveLength = arraysize(kPrefsToObserve);
}
////////////////////////////////////////////////////////////////////////////////
// TabContentsWrapper, public:
......@@ -109,6 +126,26 @@ TabContentsWrapper::TabContentsWrapper(TabContents* contents)
// Set-up the showing of the omnibox search infobar if applicable.
if (OmniboxSearchHint::IsEnabled(contents->profile()))
omnibox_search_hint_.reset(new OmniboxSearchHint(this));
registrar_.Add(this, NotificationType::GOOGLE_URL_UPDATED,
NotificationService::AllSources());
registrar_.Add(this, NotificationType::USER_STYLE_SHEET_UPDATED,
NotificationService::AllSources());
#if defined(OS_LINUX)
registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED,
NotificationService::AllSources());
#endif
// Register for notifications about all interested prefs change.
PrefService* prefs = profile()->GetPrefs();
pref_change_registrar_.Init(prefs);
if (prefs) {
for (int i = 0; i < kPrefsToObserveLength; ++i)
pref_change_registrar_.Add(kPrefsToObserve[i], this);
}
renderer_preferences_util::UpdateFromSystemSettings(
tab_contents()->GetMutableRendererPrefs(), profile());
}
TabContentsWrapper::~TabContentsWrapper() {
......@@ -290,6 +327,10 @@ TabContentsWrapper* TabContentsWrapper::GetCurrentWrapperForContents(
////////////////////////////////////////////////////////////////////////////////
// TabContentsWrapper implementation:
void TabContentsWrapper::RenderViewCreated(RenderViewHost* render_view_host) {
UpdateAlternateErrorPageURL(render_view_host);
}
void TabContentsWrapper::RenderViewGone() {
// Remove all infobars.
while (!infobar_delegates_.empty())
......@@ -332,6 +373,36 @@ void TabContentsWrapper::Observe(NotificationType type,
break;
}
case NotificationType::GOOGLE_URL_UPDATED:
UpdateAlternateErrorPageURL(render_view_host());
break;
case NotificationType::USER_STYLE_SHEET_UPDATED:
UpdateWebPreferences();
break;
#if defined(OS_LINUX)
case NotificationType::BROWSER_THEME_CHANGED: {
UpdateRendererPreferences();
break;
}
#endif
case NotificationType::PREF_CHANGED: {
std::string* pref_name_in = Details<std::string>(details).ptr();
DCHECK(Source<PrefService>(source).ptr() == profile()->GetPrefs());
if (*pref_name_in == prefs::kAlternateErrorPagesEnabled) {
UpdateAlternateErrorPageURL(render_view_host());
} else if ((*pref_name_in == prefs::kDefaultCharset) ||
StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) {
UpdateWebPreferences();
} else if (*pref_name_in == prefs::kDefaultZoomLevel) {
Send(new ViewMsg_SetZoomLevel(
routing_id(), tab_contents()->GetZoomLevel()));
} else if (*pref_name_in == prefs::kEnableReferrers) {
UpdateRendererPreferences();
} else {
NOTREACHED() << "unexpected pref change notification" << *pref_name_in;
}
break;
}
default:
NOTREACHED();
}
......@@ -460,3 +531,34 @@ void TabContentsWrapper::OnSnapshot(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->Send(new ViewMsg_SetAltErrorPageURL(
rvh->routing_id(), GetAlternateErrorPageURL()));
}
void TabContentsWrapper::UpdateWebPreferences() {
RenderViewHostDelegate* rvhd = tab_contents();
Send(new ViewMsg_UpdateWebPreferences(routing_id(), rvhd->GetWebkitPrefs()));
}
void TabContentsWrapper::UpdateRendererPreferences() {
renderer_preferences_util::UpdateFromSystemSettings(
tab_contents()->GetMutableRendererPrefs(), profile());
render_view_host()->SyncRendererPrefs();
}
......@@ -12,6 +12,7 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/prefs/pref_change_registrar.h"
#include "chrome/browser/printing/print_view_manager.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "content/browser/tab_contents/tab_contents_observer.h"
......@@ -175,6 +176,7 @@ class TabContentsWrapper : public TabContentsObserver,
// Overrides -----------------------------------------------------------------
// TabContentsObserver overrides:
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
virtual void RenderViewGone() OVERRIDE;
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
......@@ -214,6 +216,19 @@ class TabContentsWrapper : public TabContentsObserver,
void OnSnapshot(const SkBitmap& bitmap);
void OnPDFHasUnsupportedFeature();
// Returns the server that can provide alternate error pages. If the returned
// URL is empty, the default error page built into WebKit will be used.
GURL GetAlternateErrorPageURL() const;
// 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();
// Data for core operation ---------------------------------------------------
// Delegate for notifying our owner about stuff. Not owned by us.
......@@ -224,6 +239,7 @@ class TabContentsWrapper : public TabContentsObserver,
bool infobars_enabled_;
NotificationRegistrar registrar_;
PrefChangeRegistrar pref_change_registrar_;
// Data for current page -----------------------------------------------------
......
......@@ -41,7 +41,6 @@ include_rules = [
"+chrome/browser/mach_broker_mac.h",
"+chrome/browser/net/load_timing_observer.h",
"+chrome/browser/net/predictor_api.h",
"+chrome/browser/notifications/desktop_notification_service.h",
"+chrome/browser/notifications/desktop_notification_service_factory.h",
......@@ -49,7 +48,6 @@ include_rules = [
"+chrome/browser/platform_util.h",
"+chrome/browser/prefs/pref_change_registrar.h",
"+chrome/browser/prefs/pref_service.h",
"+chrome/common/pref_names.h",
......@@ -62,8 +60,6 @@ include_rules = [
"+chrome/browser/renderer_host/web_cache_manager.h",
"+chrome/browser/renderer_preferences_util.h",
# http://crbug.com/77089
"+chrome/browser/safe_browsing/safe_browsing_service.h",
"+chrome/browser/renderer_host/safe_browsing_resource_handler.h",
......
......@@ -37,10 +37,6 @@ bool ContentBrowserClient::IsURLSameAsAnySiteInstance(const GURL& url) {
return false;
}
GURL ContentBrowserClient::GetAlternateErrorPageURL(const TabContents* tab) {
return GURL();
}
std::string ContentBrowserClient::GetCanonicalEncodingNameByAliasName(
const std::string& alias_name) {
return alias_name;
......
......@@ -61,9 +61,6 @@ class ContentBrowserClient {
// SiteInstance.
virtual bool IsURLSameAsAnySiteInstance(const GURL& url);
// See RenderViewHostDelegate's comment.
virtual GURL GetAlternateErrorPageURL(const TabContents* tab);
// See CharacterEncoding's comment.
virtual std::string GetCanonicalEncodingNameByAliasName(
const std::string& alias_name);
......
......@@ -16,7 +16,6 @@
#include "chrome/browser/download/download_types.h"
#include "chrome/browser/download/download_util.h"
#include "chrome/browser/extensions/extension_info_map.h"
#include "chrome/browser/net/predictor_api.h"
#include "chrome/browser/notifications/desktop_notification_service.h"
#include "chrome/browser/notifications/desktop_notification_service_factory.h"
#include "chrome/browser/notifications/notifications_prefs_cache.h"
......@@ -383,7 +382,6 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message,
IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ClearCache, OnClearCache)
IPC_MESSAGE_HANDLER(ViewHostMsg_ClearHostResolverCache,
OnClearHostResolverCache)
IPC_MESSAGE_HANDLER(ViewHostMsg_ClearPredictorCache, OnClearPredictorCache)
IPC_MESSAGE_HANDLER(ViewHostMsg_DidGenerateCacheableMetadata,
OnCacheableMetadataAvailable)
IPC_MESSAGE_HANDLER(ViewHostMsg_EnableSpdy, OnEnableSpdy)
......@@ -771,14 +769,6 @@ void RenderMessageFilter::OnClearHostResolverCache(int* result) {
}
}
void RenderMessageFilter::OnClearPredictorCache(int* result) {
// This function is disabled unless the user has enabled
// benchmarking extensions.
CHECK(CheckBenchmarkingEnabled());
chrome_browser_net::ClearPredictorCache();
*result = 0;
}
bool RenderMessageFilter::CheckPreparsedJsCachingEnabled() const {
static bool checked = false;
static bool result = false;
......
......@@ -190,7 +190,6 @@ class RenderMessageFilter : public BrowserMessageFilter {
void OnSetCacheMode(bool enabled);
void OnClearCache(bool preserve_ssl_host_info, IPC::Message* reply_msg);
void OnClearHostResolverCache(int* result);
void OnClearPredictorCache(int* result);
void OnCacheableMetadataAvailable(const GURL& url,
double expected_response_time,
const std::vector<char>& data);
......
......@@ -15,7 +15,6 @@
#include "base/time.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/net/predictor_api.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_switches.h"
#include "content/browser/browser_message_filter.h"
......@@ -171,10 +170,6 @@ bool RenderViewHost::CreateRenderView(const string16& frame_name) {
params.frame_name = frame_name;
Send(new ViewMsg_New(params));
// Set the alternate error page, which is profile specific, in the renderer.
GURL url = delegate_->GetAlternateErrorPageURL();
Send(new ViewMsg_SetAltErrorPageURL(routing_id(), url));
// If it's enabled, tell the renderer to set up the Javascript bindings for
// sending messages back to the browser.
Send(new ViewMsg_AllowBindings(routing_id(), enabled_bindings_));
......@@ -233,10 +228,9 @@ void RenderViewHost::Navigate(const ViewMsg_Navigate_Params& params) {
if (!params.url.SchemeIs(chrome::kJavaScriptScheme))
delegate_->DidStartLoading();
}
const GURL& url = params.url;
if (!delegate_->IsExternalTabContainer() &&
(url.SchemeIs(chrome::kHttpScheme) || url.SchemeIs(chrome::kHttpsScheme)))
chrome_browser_net::PreconnectUrlAndSubresources(url);
FOR_EACH_OBSERVER(
RenderViewHostObserver, observers_, Navigate(params));
}
void RenderViewHost::NavigateToURL(const GURL& url) {
......
......@@ -41,10 +41,6 @@ BackgroundContents* RenderViewHostDelegate::GetAsBackgroundContents() {
return NULL;
}
GURL RenderViewHostDelegate::GetAlternateErrorPageURL() const {
return GURL();
}
WebPreferences RenderViewHostDelegate::GetWebkitPrefs() {
return WebPreferences();
}
......
......@@ -374,11 +374,6 @@ class RenderViewHostDelegate : public IPC::Channel::Listener {
const std::wstring& message,
IPC::Message* reply_msg) {}
// |url| is assigned to a server that can provide alternate error pages. If
// the returned URL is empty, the default error page built into WebKit will
// be used.
virtual GURL GetAlternateErrorPageURL() const;
// Return a dummy RendererPreferences object that will be used by the renderer
// associated with the owning RenderViewHost.
virtual RendererPreferences GetRendererPrefs(Profile* profile) const = 0;
......
......@@ -24,6 +24,9 @@ void RenderViewHostObserver::RenderViewHostDestroyed() {
delete this;
}
void RenderViewHostObserver::Navigate(const ViewMsg_Navigate_Params& params) {
}
bool RenderViewHostObserver::OnMessageReceived(const IPC::Message& message) {
return false;
}
......
......@@ -8,6 +8,7 @@
#include "ipc/ipc_channel.h"
class RenderViewHost;
struct ViewMsg_Navigate_Params;
// An observer API implemented by classes which want to filter IPC messages from
// RenderViewHost.
......@@ -28,6 +29,9 @@ class RenderViewHostObserver : public IPC::Channel::Listener,
// chance to cleanup. The base implementation will delete the object.
virtual void RenderViewHostDestroyed();
// Notifies that a navigation is starting.
virtual void Navigate(const ViewMsg_Navigate_Params& params);
// IPC::Channel::Listener implementation.
virtual bool OnMessageReceived(const IPC::Message& message);
......
......@@ -12,8 +12,6 @@
#include "base/threading/thread.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/renderer_preferences_util.h"
#include "content/browser/browser_thread.h"
#include "content/browser/renderer_host/render_process_host.h"
#include "content/browser/renderer_host/render_view_host.h"
......@@ -158,9 +156,6 @@ InterstitialPage::InterstitialPage(TabContents* tab,
resource_dispatcher_host_notified_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(rvh_view_delegate_(
new InterstitialPageRVHViewDelegate(this))) {
renderer_preferences_util::UpdateFromSystemSettings(
&renderer_preferences_, tab_->profile());
InitInterstitialPageMap();
// It would be inconsistent to create an interstitial with no new navigation
// (which is the case when the interstitial was triggered by a sub-resource on
......
......@@ -144,6 +144,9 @@ class InterstitialPage : public NotificationObserver,
TabContents* tab() const { return tab_; }
const GURL& url() const { return url_; }
RenderViewHost* render_view_host() const { return render_view_host_; }
void set_renderer_preferences(const RendererPreferences& prefs) {
renderer_preferences_ = prefs;
}
// Creates the RenderViewHost containing the interstitial content.
// Overriden in unit tests.
......
......@@ -22,7 +22,6 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/renderer_host/web_cache_manager.h"
#include "chrome/browser/renderer_preferences_util.h"
#include "chrome/browser/ui/app_modal_dialogs/message_box_handler.h"
#include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/common/chrome_constants.h"
......@@ -117,32 +116,6 @@ const int kQueryStateDelay = 5000;
const int kSyncWaitDelay = 40;
// The list of prefs we want to observe.
const char* kPrefsToObserve[] = {
prefs::kAlternateErrorPagesEnabled,
prefs::kDefaultZoomLevel,
prefs::kWebKitJavaEnabled,
prefs::kWebKitJavascriptEnabled,
prefs::kWebKitLoadsImagesAutomatically,
prefs::kWebKitPluginsEnabled,
prefs::kWebKitUsesUniversalDetector,
prefs::kWebKitStandardFontFamily,
prefs::kWebKitSerifFontFamily,
prefs::kWebKitSansSerifFontFamily,
prefs::kWebKitFixedFontFamily,
prefs::kWebKitDefaultFontSize,
prefs::kWebKitDefaultFixedFontSize,
prefs::kWebKitMinimumFontSize,
prefs::kWebKitMinimumLogicalFontSize,
prefs::kWebkitTabsToLinks,
prefs::kWebKitAllowRunningInsecureContent,
prefs::kWebKitAllowDisplayingInsecureContent,
prefs::kDefaultCharset,
prefs::kEnableReferrers
};
const int kPrefsToObserveLength = arraysize(kPrefsToObserve);
#if defined(OS_WIN)
BOOL CALLBACK InvalidateWindow(HWND hwnd, LPARAM lparam) {
......@@ -231,8 +204,6 @@ TabContents::TabContents(Profile* profile,
static_cast<int>(WebKit::WebView::maxTextSizeMultiplier * 100)),
temporary_zoom_settings_(false),
content_restrictions_(0) {
renderer_preferences_util::UpdateFromSystemSettings(
&renderer_preferences_, profile);
render_manager_.Init(profile, site_instance, routing_id);
......@@ -241,27 +212,8 @@ TabContents::TabContents(Profile* profile,
view_->CreateView(base_tab_contents ?
base_tab_contents->view()->GetContainerSize() : gfx::Size());
// Register for notifications about all interested prefs change.
PrefService* prefs = profile->GetPrefs();
pref_change_registrar_.Init(prefs);
if (prefs) {
for (int i = 0; i < kPrefsToObserveLength; ++i)
pref_change_registrar_.Add(kPrefsToObserve[i], this);
}
registrar_.Add(this, NotificationType::RENDER_WIDGET_HOST_DESTROYED,
NotificationService::AllSources());
#if defined(OS_LINUX)
registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED,
NotificationService::AllSources());
#endif
registrar_.Add(this, NotificationType::USER_STYLE_SHEET_UPDATED,
NotificationService::AllSources());
// Listen for Google URL changes.
registrar_.Add(this, NotificationType::GOOGLE_URL_UPDATED,
NotificationService::AllSources());
// Can only add observers after render_manager_.Init() is called, since that's
// what sets up the render_view_host which TabContentObserver's constructor
......@@ -274,7 +226,6 @@ TabContents::~TabContents() {
// We don't want any notifications while we're running our destructor.
registrar_.RemoveAll();
pref_change_registrar_.RemoveAll();
NotifyDisconnected();
browser::HideHungRendererDialog(this);
......@@ -1195,22 +1146,6 @@ void TabContents::CloseConstrainedWindows() {
}
}
void TabContents::UpdateAlternateErrorPageURL() {
GURL url = GetAlternateErrorPageURL();
render_view_host()->Send(new ViewMsg_SetAltErrorPageURL(
render_view_host()->routing_id(), url));
}
void TabContents::UpdateWebPreferences() {
render_view_host()->Send(new ViewMsg_UpdateWebPreferences(
render_view_host()->routing_id(), GetWebkitPrefs()));
}
void TabContents::UpdateZoomLevel() {
render_view_host()->Send(new ViewMsg_SetZoomLevel(
render_view_host()->routing_id(), GetZoomLevel()));
}
void TabContents::UpdateMaxPageIDIfNecessary(SiteInstance* site_instance,
RenderViewHost* rvh) {
// If we are creating a RVH for a restored controller, then we might
......@@ -1355,6 +1290,9 @@ void TabContents::RenderViewCreated(RenderViewHost* render_view_host) {
}
view()->RenderViewCreated(render_view_host);
FOR_EACH_OBSERVER(
TabContentsObserver, observers_, RenderViewCreated(render_view_host));
}
void TabContents::RenderViewReady(RenderViewHost* rvh) {
......@@ -1705,10 +1643,6 @@ void TabContents::RunBeforeUnloadConfirm(const RenderViewHost* rvh,
RunBeforeUnloadDialog(this, message, reply_msg);
}
GURL TabContents::GetAlternateErrorPageURL() const {
return content::GetContentClient()->browser()->GetAlternateErrorPageURL(this);
}
WebPreferences TabContents::GetWebkitPrefs() {
Profile* profile = render_view_host()->process()->profile();
bool is_web_ui = false;
......@@ -1887,46 +1821,9 @@ void TabContents::Observe(NotificationType type,
const NotificationSource& source,
const NotificationDetails& details) {
switch (type.value) {
case NotificationType::PREF_CHANGED: {
std::string* pref_name_in = Details<std::string>(details).ptr();
DCHECK(Source<PrefService>(source).ptr() == profile()->GetPrefs());
if (*pref_name_in == prefs::kAlternateErrorPagesEnabled) {
UpdateAlternateErrorPageURL();
} else if ((*pref_name_in == prefs::kDefaultCharset) ||
StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) {
UpdateWebPreferences();
} else if (*pref_name_in == prefs::kDefaultZoomLevel) {
UpdateZoomLevel();
} else if (*pref_name_in == prefs::kEnableReferrers) {
renderer_preferences_util::UpdateFromSystemSettings(
&renderer_preferences_, profile());
render_view_host()->SyncRendererPrefs();
} else {
NOTREACHED() << "unexpected pref change notification" << *pref_name_in;
}
break;
}
case NotificationType::RENDER_WIDGET_HOST_DESTROYED:
view_->RenderWidgetHostDestroyed(Source<RenderWidgetHost>(source).ptr());
break;
#if defined(OS_LINUX)
case NotificationType::BROWSER_THEME_CHANGED: {
renderer_preferences_util::UpdateFromSystemSettings(
&renderer_preferences_, profile());
render_view_host()->SyncRendererPrefs();
break;
}
#endif
case NotificationType::USER_STYLE_SHEET_UPDATED:
UpdateWebPreferences();
break;
case NotificationType::GOOGLE_URL_UPDATED:
UpdateAlternateErrorPageURL();
break;
default:
NOTREACHED();
}
......
......@@ -14,7 +14,6 @@
#include "base/gtest_prod_util.h"
#include "base/memory/scoped_ptr.h"
#include "base/string16.h"
#include "chrome/browser/prefs/pref_change_registrar.h"
#include "chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/browser/tab_contents/constrained_window.h"
......@@ -601,16 +600,6 @@ class TabContents : public PageNavigator,
// Closes all constrained windows.
void CloseConstrainedWindows();
// Send the alternate error page URL to the renderer. This method is virtual
// so special html pages can override this (e.g., the new tab page).
virtual void UpdateAlternateErrorPageURL();
// Send webkit specific settings to the renderer.
void UpdateWebPreferences();
// Instruct the renderer to update the zoom level.
void UpdateZoomLevel();
// If our controller was restored and the page id is > than the site
// instance's page id, the site instances page id is updated as well as the
// renderers max page id.
......@@ -690,7 +679,6 @@ class TabContents : public PageNavigator,
virtual void RunBeforeUnloadConfirm(const RenderViewHost* rvh,
const std::wstring& message,
IPC::Message* reply_msg);
virtual GURL GetAlternateErrorPageURL() const;
virtual RendererPreferences GetRendererPrefs(Profile* profile) const;
virtual WebPreferences GetWebkitPrefs();
virtual void OnUserGesture();
......@@ -771,9 +759,6 @@ class TabContents : public PageNavigator,
// Registers and unregisters us for notifications.
NotificationRegistrar registrar_;
// Registers and unregisters for pref notifications.
PrefChangeRegistrar pref_change_registrar_;
// Handles drag and drop event forwarding to extensions.
BookmarkDrag* bookmark_drag_;
......
......@@ -25,6 +25,9 @@ void TabContentsObserver::Registrar::Observe(TabContents* tab) {
tab_->AddObserver(observer_);
}
void TabContentsObserver::RenderViewCreated(RenderViewHost* render_view_host) {
}
void TabContentsObserver::NavigateToPendingEntry(
const GURL& url,
NavigationController::ReloadType reload_type) {
......
......@@ -40,10 +40,10 @@ class TabContentsObserver : public IPC::Channel::Listener,
DISALLOW_COPY_AND_ASSIGN(Registrar);
};
virtual void RenderViewCreated(RenderViewHost* render_view_host);
virtual void NavigateToPendingEntry(
const GURL& url,
NavigationController::ReloadType reload_type);
virtual void DidNavigateMainFramePostCommit(
const NavigationController::LoadCommittedDetails& details,
const ViewHostMsg_FrameNavigate_Params& params);
......
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