diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-23 05:31:15 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-23 05:31:15 +0000 |
commit | 299d7f1d0003d467a159fb79ba1884080a655a00 (patch) | |
tree | 087f5e337119e9c836260bf46cfd808236157d30 /chrome | |
parent | de030d16f66334efafdef4ddd01f715d9ebbcfe9 (diff) | |
download | chromium_src-299d7f1d0003d467a159fb79ba1884080a655a00.zip chromium_src-299d7f1d0003d467a159fb79ba1884080a655a00.tar.gz chromium_src-299d7f1d0003d467a159fb79ba1884080a655a00.tar.bz2 |
Get rid of the RenderViewType concept in content, since it was only used by Chrome. Store the enum value in the WebContents' property bag.
BUG=98716
Review URL: https://chromiumcodereview.appspot.com/10409088
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138434 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
47 files changed, 250 insertions, 173 deletions
diff --git a/chrome/browser/automation/automation_provider_observers.cc b/chrome/browser/automation/automation_provider_observers.cc index 700311b..b07dfb6 100644 --- a/chrome/browser/automation/automation_provider_observers.cc +++ b/chrome/browser/automation/automation_provider_observers.cc @@ -67,9 +67,9 @@ #include "chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.h" #include "chrome/common/automation_messages.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/content_settings_types.h" #include "chrome/common/extensions/extension.h" +#include "chrome/common/view_type.h" #include "content/public/browser/dom_operation_notification_details.h" #include "content/public/browser/navigation_controller.h" #include "content/public/browser/notification_service.h" diff --git a/chrome/browser/automation/automation_util.cc b/chrome/browser/automation/automation_util.cc index 12bf075..8754245 100644 --- a/chrome/browser/automation/automation_util.cc +++ b/chrome/browser/automation/automation_util.cc @@ -25,13 +25,12 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/automation_id.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" #include "content/public/browser/web_contents.h" #include "net/cookies/cookie_monster.h" #include "net/cookies/cookie_store.h" @@ -416,7 +415,8 @@ AutomationId GetIdForTab(const TabContentsWrapper* tab) { AutomationId GetIdForExtensionView( const content::RenderViewHost* render_view_host) { AutomationId::Type type; - switch (render_view_host->GetDelegate()->GetRenderViewType()) { + WebContents* web_contents = WebContents::FromRenderViewHost(render_view_host); + switch (chrome::GetViewType(web_contents)) { case chrome::VIEW_TYPE_EXTENSION_POPUP: type = AutomationId::kTypeExtensionPopup; break; diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc index 8480c30..885108f 100644 --- a/chrome/browser/automation/testing_automation_provider.cc +++ b/chrome/browser/automation/testing_automation_provider.cc @@ -111,13 +111,13 @@ #include "chrome/browser/ui/omnibox/omnibox_view.h" #include "chrome/browser/ui/search_engines/keyword_editor_controller.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/automation_id.h" #include "chrome/common/automation_messages.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_action.h" #include "chrome/common/extensions/url_pattern.h" @@ -136,7 +136,6 @@ #include "content/public/browser/plugin_service.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" #include "content/public/common/child_process_host.h" @@ -2411,7 +2410,10 @@ void TestingAutomationProvider::GetBrowserInfo( render_view_host->GetRoutingID()); item->Set("view", view); std::string type; - switch (render_view_host->GetDelegate()->GetRenderViewType()) { + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host); + chrome::ViewType view_type = chrome::GetViewType(web_contents); + switch (view_type) { case chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE: type = "EXTENSION_BACKGROUND_PAGE"; break; @@ -2435,7 +2437,7 @@ void TestingAutomationProvider::GetBrowserInfo( break; } item->SetString("view_type", type); - item->SetString("url", render_view_host->GetDelegate()->GetURL().spec()); + item->SetString("url", web_contents->GetURL().spec()); item->SetBoolean("loaded", !render_view_host->IsLoading()); extension_views->Append(item); } diff --git a/chrome/browser/bookmarks/bookmark_manager_extension_api.cc b/chrome/browser/bookmarks/bookmark_manager_extension_api.cc index 406a6e0..4b31a4c 100644 --- a/chrome/browser/bookmarks/bookmark_manager_extension_api.cc +++ b/chrome/browser/bookmarks/bookmark_manager_extension_api.cc @@ -21,10 +21,9 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" #include "chrome/browser/ui/webui/chrome_url_data_manager.h" -#include "chrome/common/chrome_view_type.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/pref_names.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "grit/generated_resources.h" @@ -385,8 +384,9 @@ bool StartDragBookmarkManagerFunction::RunImpl() { EXTENSION_FUNCTION_VALIDATE( GetNodesFromArguments(model, args_.get(), 0, &nodes)); - if (render_view_host_->GetDelegate()->GetRenderViewType() == - chrome::VIEW_TYPE_TAB_CONTENTS) { + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host_); + if (chrome::GetViewType(web_contents) == chrome::VIEW_TYPE_TAB_CONTENTS) { WebContents* web_contents = dispatcher()->delegate()->GetAssociatedWebContents(); CHECK(web_contents); @@ -427,8 +427,9 @@ bool DropBookmarkManagerFunction::RunImpl() { else drop_index = drop_parent->child_count(); - if (render_view_host_->GetDelegate()->GetRenderViewType() == - chrome::VIEW_TYPE_TAB_CONTENTS) { + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host_); + if (chrome::GetViewType(web_contents) == chrome::VIEW_TYPE_TAB_CONTENTS) { WebContents* web_contents = dispatcher()->delegate()->GetAssociatedWebContents(); CHECK(web_contents); diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 1f0dee7..204d69f 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -66,6 +66,7 @@ #include "chrome/browser/ui/media_stream_infobar_delegate.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/browser/user_style_sheet_watcher.h" #include "chrome/browser/user_style_sheet_watcher_factory.h" #include "chrome/common/child_process_logging.h" @@ -1447,19 +1448,19 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( } DCHECK(!web_prefs->default_encoding.empty()); + WebContents* web_contents = WebContents::FromRenderViewHost(rvh); + chrome::ViewType view_type = chrome::GetViewType(web_contents); ExtensionService* service = profile->GetExtensionService(); if (service) { const Extension* extension = service->extensions()->GetByID( rvh->GetSiteInstance()->GetSite().host()); extension_webkit_preferences::SetPreferences( - extension, rvh->GetDelegate()->GetRenderViewType(), web_prefs); + extension, view_type, web_prefs); } - if (rvh->GetDelegate()->GetRenderViewType() == - chrome::VIEW_TYPE_NOTIFICATION) { + if (view_type == chrome::VIEW_TYPE_NOTIFICATION) { web_prefs->allow_scripts_to_close_windows = true; - } else if (rvh->GetDelegate()->GetRenderViewType() == - chrome::VIEW_TYPE_BACKGROUND_CONTENTS) { + } else if (view_type == chrome::VIEW_TYPE_BACKGROUND_CONTENTS) { // Disable all kinds of acceleration for background pages. // See http://crbug.com/96005 and http://crbug.com/96006 web_prefs->force_compositing_mode = false; diff --git a/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc b/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc index 369903b..a637e34 100644 --- a/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc +++ b/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc @@ -17,8 +17,8 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/tab_contents/retargeting_details.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/url_constants.h" #include "content/public/browser/resource_request_details.h" #include "content/public/browser/navigation_details.h" @@ -447,7 +447,7 @@ void WebNavigationEventRouter::Retargeting(const RetargetingDetails* details) { if (!tab_observer) { // If you hit this DCHECK(), please add reproduction steps to // http://crbug.com/109464. - DCHECK(details->source_web_contents->GetViewType() != + DCHECK(chrome::GetViewType(details->source_web_contents) != chrome::VIEW_TYPE_TAB_CONTENTS); return; } diff --git a/chrome/browser/extensions/extension_event_router.cc b/chrome/browser/extensions/extension_event_router.cc index 041d566..ab07200 100644 --- a/chrome/browser/extensions/extension_event_router.cc +++ b/chrome/browser/extensions/extension_event_router.cc @@ -23,10 +23,10 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/extensions/api/extension_api.h" +#include "chrome/common/view_type.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/render_process_host.h" diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index a4d8993..1c0fdb3 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -29,9 +29,9 @@ #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/prefs/prefs_tab_helper.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_messages.h" @@ -127,7 +127,7 @@ class ExtensionHost::ProcessCreationQueue { ExtensionHost::ExtensionHost(const extensions::Extension* extension, SiteInstance* site_instance, const GURL& url, - content::ViewType host_type) + chrome::ViewType host_type) : extension_(extension), extension_id_(extension->id()), profile_(Profile::FromBrowserContext( @@ -144,7 +144,7 @@ ExtensionHost::ExtensionHost(const extensions::Extension* extension, profile_, site_instance, MSG_ROUTING_NONE, NULL, NULL)); content::WebContentsObserver::Observe(host_contents_.get()); host_contents_->SetDelegate(this); - host_contents_->SetViewType(host_type); + chrome::SetViewType(host_contents_.get(), host_type); prefs_tab_helper_.reset(new PrefsTabHelper(host_contents())); diff --git a/chrome/browser/extensions/extension_host.h b/chrome/browser/extensions/extension_host.h index 4350872..56d5816 100644 --- a/chrome/browser/extensions/extension_host.h +++ b/chrome/browser/extensions/extension_host.h @@ -13,12 +13,12 @@ #include "base/memory/scoped_ptr.h" #include "base/perftimer.h" #include "chrome/browser/extensions/extension_function_dispatcher.h" +#include "chrome/common/view_type.h" #include "content/public/browser/javascript_dialogs.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" #include "content/public/browser/web_contents_delegate.h" #include "content/public/browser/web_contents_observer.h" -#include "content/public/common/view_type.h" #if defined(TOOLKIT_VIEWS) #include "chrome/browser/ui/views/extensions/extension_view.h" @@ -68,7 +68,7 @@ class ExtensionHost : public content::WebContentsDelegate, ExtensionHost(const extensions::Extension* extension, content::SiteInstance* site_instance, - const GURL& url, content::ViewType host_type); + const GURL& url, chrome::ViewType host_type); virtual ~ExtensionHost(); #if defined(TOOLKIT_VIEWS) @@ -107,7 +107,7 @@ class ExtensionHost : public content::WebContentsDelegate, Profile* profile() const { return profile_; } - content::ViewType extension_host_type() const { return extension_host_type_; } + chrome::ViewType extension_host_type() const { return extension_host_type_; } const GURL& GetURL() const; // ExtensionFunctionDispatcher::Delegate @@ -243,7 +243,7 @@ class ExtensionHost : public content::WebContentsDelegate, ExtensionFunctionDispatcher extension_function_dispatcher_; // The type of view being hosted. - content::ViewType extension_host_type_; + chrome::ViewType extension_host_type_; // The relevant WebContents associated with this ExtensionHost, if any. content::WebContents* associated_web_contents_; diff --git a/chrome/browser/extensions/extension_host_mac.h b/chrome/browser/extensions/extension_host_mac.h index 4f655e4..d2b48d6 100644 --- a/chrome/browser/extensions/extension_host_mac.h +++ b/chrome/browser/extensions/extension_host_mac.h @@ -18,7 +18,7 @@ class ExtensionHostMac : public ExtensionHost { public: ExtensionHostMac(const extensions::Extension* extension, content::SiteInstance* site_instance, - const GURL& url, content::ViewType host_type) : + const GURL& url, chrome::ViewType host_type) : ExtensionHost(extension, site_instance, url, host_type) {} virtual ~ExtensionHostMac(); diff --git a/chrome/browser/extensions/extension_host_mac.mm b/chrome/browser/extensions/extension_host_mac.mm index 11350db..c3096d1 100644 --- a/chrome/browser/extensions/extension_host_mac.mm +++ b/chrome/browser/extensions/extension_host_mac.mm @@ -7,7 +7,7 @@ #import "chrome/browser/ui/cocoa/chrome_event_processing_window.h" #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h" #import "chrome/browser/ui/cocoa/info_bubble_window.h" -#include "chrome/common/chrome_view_type.h" +#include "chrome/common/view_type.h" #include "content/public/browser/native_web_keyboard_event.h" using content::NativeWebKeyboardEvent; diff --git a/chrome/browser/extensions/extension_message_handler.cc b/chrome/browser/extensions/extension_message_handler.cc index 5a57fbd..cc0ac25 100644 --- a/chrome/browser/extensions/extension_message_handler.cc +++ b/chrome/browser/extensions/extension_message_handler.cc @@ -7,10 +7,13 @@ #include "chrome/browser/extensions/extension_message_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/extensions/extension_messages.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" +#include "content/public/browser/web_contents.h" + +using content::WebContents; ExtensionMessageHandler::ExtensionMessageHandler( content::RenderViewHost* render_view_host) @@ -31,8 +34,10 @@ bool ExtensionMessageHandler::OnMessageReceived( } void ExtensionMessageHandler::RenderViewHostInitialized() { + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host()); Send(new ExtensionMsg_NotifyRenderViewType( - routing_id(), render_view_host()->GetDelegate()->GetRenderViewType())); + routing_id(), chrome::GetViewType(web_contents))); } void ExtensionMessageHandler::OnPostMessage(int port_id, diff --git a/chrome/browser/extensions/extension_message_service.cc b/chrome/browser/extensions/extension_message_service.cc index c522eaf..e8c9a2f 100644 --- a/chrome/browser/extensions/extension_message_service.cc +++ b/chrome/browser/extensions/extension_message_service.cc @@ -21,9 +21,9 @@ #include "chrome/browser/tab_contents/tab_util.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" +#include "chrome/common/view_type.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc index 1685138..413a1b9 100644 --- a/chrome/browser/extensions/extension_process_manager.cc +++ b/chrome/browser/extensions/extension_process_manager.cc @@ -19,9 +19,9 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/url_constants.h" @@ -43,6 +43,7 @@ using content::OpenURLParams; using content::Referrer; using content::RenderViewHost; using content::SiteInstance; +using content::WebContents; using extensions::Extension; namespace { @@ -67,7 +68,7 @@ class IncognitoExtensionProcessManager : public ExtensionProcessManager { const Extension* extension, const GURL& url, Browser* browser, - content::ViewType view_type) OVERRIDE; + chrome::ViewType view_type) OVERRIDE; virtual void CreateBackgroundHost(const Extension* extension, const GURL& url); virtual SiteInstance* GetSiteInstanceForURL(const GURL& url); @@ -178,7 +179,7 @@ ExtensionProcessManager::~ExtensionProcessManager() { void ExtensionProcessManager::EnsureBrowserWhenRequired( Browser* browser, - content::ViewType view_type) { + chrome::ViewType view_type) { if (!browser) { #if defined (OS_CHROMEOS) // On ChromeOS we'll only use ExtensionView, which @@ -199,7 +200,7 @@ ExtensionHost* ExtensionProcessManager::CreateViewHost( const Extension* extension, const GURL& url, Browser* browser, - content::ViewType view_type) { + chrome::ViewType view_type) { DCHECK(extension); EnsureBrowserWhenRequired(browser, view_type); ExtensionHost* host = @@ -215,7 +216,7 @@ ExtensionHost* ExtensionProcessManager::CreateViewHost( } ExtensionHost* ExtensionProcessManager::CreateViewHost( - const GURL& url, Browser* browser, content::ViewType view_type) { + const GURL& url, Browser* browser, chrome::ViewType view_type) { EnsureBrowserWhenRequired(browser, view_type); ExtensionService* service = GetProfile()->GetExtensionService(); if (service) { @@ -341,7 +342,7 @@ const Extension* ExtensionProcessManager::GetExtensionForRenderViewHost( void ExtensionProcessManager::RegisterRenderViewHost( RenderViewHost* render_view_host, const Extension* extension) { - all_extension_views_[render_view_host] = content::VIEW_TYPE_INVALID; + all_extension_views_[render_view_host] = chrome::VIEW_TYPE_INVALID; } void ExtensionProcessManager::UnregisterRenderViewHost( @@ -356,11 +357,11 @@ void ExtensionProcessManager::UnregisterRenderViewHost( content::Source<Profile>(GetProfile()), content::Details<RenderViewHost>(render_view_host)); - content::ViewType view_type = view->second; + chrome::ViewType view_type = view->second; all_extension_views_.erase(view); // Keepalive count, balanced in UpdateRegisteredRenderView. - if (view_type != content::VIEW_TYPE_INVALID && + if (view_type != chrome::VIEW_TYPE_INVALID && view_type != chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { const Extension* extension = GetExtensionForRenderViewHost( render_view_host); @@ -381,7 +382,8 @@ void ExtensionProcessManager::UpdateRegisteredRenderView( content::Source<Profile>(GetProfile()), content::Details<RenderViewHost>(render_view_host)); - view->second = render_view_host->GetDelegate()->GetRenderViewType(); + WebContents* web_contents = WebContents::FromRenderViewHost(render_view_host); + view->second = chrome::GetViewType(web_contents); // Keep the lazy background page alive as long as any non-background-page // extension views are visible. Keepalive count balanced in @@ -438,9 +440,10 @@ int ExtensionProcessManager::DecrementLazyKeepaliveCount( } void ExtensionProcessManager::IncrementLazyKeepaliveCountForView( RenderViewHost* render_view_host) { - content::ViewType view_type = - render_view_host->GetDelegate()->GetRenderViewType(); - if (view_type != content::VIEW_TYPE_INVALID && + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host); + chrome::ViewType view_type = chrome::GetViewType(web_contents); + if (view_type != chrome::VIEW_TYPE_INVALID && view_type != chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { const Extension* extension = GetExtensionForRenderViewHost( render_view_host); @@ -592,9 +595,11 @@ void ExtensionProcessManager::Observe( case content::NOTIFICATION_DEVTOOLS_WINDOW_OPENING: { RenderViewHost* render_view_host = content::Details<RenderViewHost>(details).ptr(); + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host); // Keep the lazy background page alive while it's being inspected. // Balanced in response to the CLOSING notification. - if (render_view_host->GetDelegate()->GetRenderViewType() == + if (chrome::GetViewType(web_contents) == chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { const Extension* extension = GetExtensionForRenderViewHost( render_view_host); @@ -607,8 +612,10 @@ void ExtensionProcessManager::Observe( case content::NOTIFICATION_DEVTOOLS_WINDOW_CLOSING: { RenderViewHost* render_view_host = content::Details<RenderViewHost>(details).ptr(); + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host); // Balanced in response to the OPENING notification. - if (render_view_host->GetDelegate()->GetRenderViewType() == + if (chrome::GetViewType(web_contents) == chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { const Extension* extension = GetExtensionForRenderViewHost( render_view_host); @@ -703,7 +710,7 @@ ExtensionHost* IncognitoExtensionProcessManager::CreateViewHost( const Extension* extension, const GURL& url, Browser* browser, - content::ViewType view_type) { + chrome::ViewType view_type) { if (extension->incognito_split_mode()) { if (IsIncognitoEnabled(extension)) { return ExtensionProcessManager::CreateViewHost(extension, url, diff --git a/chrome/browser/extensions/extension_process_manager.h b/chrome/browser/extensions/extension_process_manager.h index c695d21..9561c4b2 100644 --- a/chrome/browser/extensions/extension_process_manager.h +++ b/chrome/browser/extensions/extension_process_manager.h @@ -14,7 +14,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/time.h" -#include "content/public/common/view_type.h" +#include "chrome/common/view_type.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" @@ -56,10 +56,10 @@ class ExtensionProcessManager : public content::NotificationObserver { virtual ExtensionHost* CreateViewHost(const extensions::Extension* extension, const GURL& url, Browser* browser, - content::ViewType view_type); + chrome::ViewType view_type); ExtensionHost* CreateViewHost(const GURL& url, Browser* browser, - content::ViewType view_type); + chrome::ViewType view_type); ExtensionHost* CreatePopupHost(const extensions::Extension* extension, const GURL& url, Browser* browser); @@ -171,7 +171,7 @@ class ExtensionProcessManager : public content::NotificationObserver { // We also keep a cache of the host's view type, because that information // is not accessible at registration/deregistration time. typedef std::map<content::RenderViewHost*, - content::ViewType> ExtensionRenderViews; + chrome::ViewType> ExtensionRenderViews; ExtensionRenderViews all_extension_views_; // Close the given |host| iff it's a background page. @@ -179,7 +179,7 @@ class ExtensionProcessManager : public content::NotificationObserver { // Ensure browser object is not null except for certain situations. void EnsureBrowserWhenRequired(Browser* browser, - content::ViewType view_type); + chrome::ViewType view_type); // These are called when the extension transitions between idle and active. // They control the process of closing the background page when idle. diff --git a/chrome/browser/extensions/extension_webkit_preferences.cc b/chrome/browser/extensions/extension_webkit_preferences.cc index 672ba58..14fbbbe 100644 --- a/chrome/browser/extensions/extension_webkit_preferences.cc +++ b/chrome/browser/extensions/extension_webkit_preferences.cc @@ -12,7 +12,7 @@ namespace extension_webkit_preferences { void SetPreferences(const extensions::Extension* extension, - content::ViewType render_view_type, + chrome::ViewType render_view_type, webkit_glue::WebPreferences* webkit_prefs) { if (!extension) return; diff --git a/chrome/browser/extensions/extension_webkit_preferences.h b/chrome/browser/extensions/extension_webkit_preferences.h index e793bb0..2136bc2 100644 --- a/chrome/browser/extensions/extension_webkit_preferences.h +++ b/chrome/browser/extensions/extension_webkit_preferences.h @@ -5,7 +5,7 @@ #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBKIT_PREFERENCES_H_ #define CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBKIT_PREFERENCES_H_ -#include "chrome/common/chrome_view_type.h" +#include "chrome/common/view_type.h" namespace extensions { class Extension; @@ -18,7 +18,7 @@ struct WebPreferences; namespace extension_webkit_preferences { void SetPreferences(const extensions::Extension* extension, - content::ViewType render_view_type, + chrome::ViewType render_view_type, webkit_glue::WebPreferences* webkit_prefs); } // namespace extension_webkit_preferences diff --git a/chrome/browser/extensions/lazy_background_task_queue.cc b/chrome/browser/extensions/lazy_background_task_queue.cc index dbe0ff6..ce733a3 100644 --- a/chrome/browser/extensions/lazy_background_task_queue.cc +++ b/chrome/browser/extensions/lazy_background_task_queue.cc @@ -16,9 +16,9 @@ #include "chrome/browser/tab_contents/tab_util.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" +#include "chrome/common/view_type.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" diff --git a/chrome/browser/geolocation/chrome_geolocation_permission_context.cc b/chrome/browser/geolocation/chrome_geolocation_permission_context.cc index 7d61875..53d0b2f 100644 --- a/chrome/browser/geolocation/chrome_geolocation_permission_context.cc +++ b/chrome/browser/geolocation/chrome_geolocation_permission_context.cc @@ -21,8 +21,8 @@ #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" #include "chrome/browser/tab_contents/tab_util.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/pref_names.h" #include "content/public/browser/browser_thread.h" @@ -624,8 +624,7 @@ void ChromeGeolocationPermissionContext::RequestGeolocationPermission( WebContents* web_contents = tab_util::GetWebContentsByID(render_process_id, render_view_id); - if (!web_contents || web_contents->GetViewType() != - chrome::VIEW_TYPE_TAB_CONTENTS) { + if (chrome::GetViewType(web_contents) != chrome::VIEW_TYPE_TAB_CONTENTS) { // The tab may have gone away, or the request may not be from a tab at all. // TODO(mpcomplete): the request could be from a background page or // extension popup (tab_contents will have a different ViewType). But why do diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc index 2f08bbf3..3f2dedc 100644 --- a/chrome/browser/memory_details.cc +++ b/chrome/browser/memory_details.cc @@ -14,7 +14,7 @@ #include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/common/chrome_view_type.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/url_constants.h" #include "content/public/browser/browser_child_process_host_iterator.h" @@ -24,7 +24,6 @@ #include "content/public/browser/navigation_entry.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" #include "content/public/browser/web_contents.h" #include "content/public/common/bindings_policy.h" #include "content/public/common/process_type.h" @@ -242,12 +241,13 @@ void MemoryDetails::CollectChildInfoOnUIThread() { if (!widget || !widget->IsRenderView()) continue; - const RenderViewHost* host = + RenderViewHost* host = RenderViewHost::From(const_cast<RenderWidgetHost*>(widget)); - content::RenderViewHostDelegate* host_delegate = host->GetDelegate(); - DCHECK(host_delegate); - GURL url = host_delegate->GetURL(); - content::ViewType type = host_delegate->GetRenderViewType(); + WebContents* contents = WebContents::FromRenderViewHost(host); + GURL url; + if (contents) + url = contents->GetURL(); + chrome::ViewType type = chrome::GetViewType(contents); if (host->GetEnabledBindings() & content::BINDINGS_POLICY_WEB_UI) { process.renderer_type = ProcessMemoryInformation::RENDERER_CHROME; } else if (extension_process_map->Contains( @@ -268,41 +268,37 @@ void MemoryDetails::CollectChildInfoOnUIThread() { } } } - WebContents* contents = host_delegate->GetAsWebContents(); + if (extension_process_map->Contains(host->GetProcess()->GetID())) { + const Extension* extension = + extension_service->extensions()->GetByID(url.host()); + if (extension) { + string16 title = UTF8ToUTF16(extension->name()); + process.titles.push_back(title); + } + continue; + } + if (!contents) { - if (extension_process_map->Contains(host->GetProcess()->GetID())) { - const Extension* extension = - extension_service->extensions()->GetByID(url.host()); - if (extension) { - string16 title = UTF8ToUTF16(extension->name()); - process.titles.push_back(title); - } - } else if (process.renderer_type == - ProcessMemoryInformation::RENDERER_UNKNOWN) { - process.titles.push_back(UTF8ToUTF16(url.spec())); - switch (type) { - case chrome::VIEW_TYPE_BACKGROUND_CONTENTS: - process.renderer_type = + process.renderer_type = + ProcessMemoryInformation::RENDERER_INTERSTITIAL; + continue; + } + + if (type == chrome::VIEW_TYPE_BACKGROUND_CONTENTS) { + process.titles.push_back(UTF8ToUTF16(url.spec())); + process.renderer_type = ProcessMemoryInformation::RENDERER_BACKGROUND_APP; - break; - case content::VIEW_TYPE_INTERSTITIAL_PAGE: - process.renderer_type = - ProcessMemoryInformation::RENDERER_INTERSTITIAL; - break; - case chrome::VIEW_TYPE_NOTIFICATION: - process.renderer_type = + continue; + } + + if (type == chrome::VIEW_TYPE_NOTIFICATION) { + process.titles.push_back(UTF8ToUTF16(url.spec())); + process.renderer_type = ProcessMemoryInformation::RENDERER_NOTIFICATION; - break; - default: - process.renderer_type = - ProcessMemoryInformation::RENDERER_UNKNOWN; - break; - } - } continue; } - // Since We have a WebContents and and the renderer type hasn't been + // Since we have a WebContents and and the renderer type hasn't been // set yet, it must be a normal tabbed renderer. if (process.renderer_type == ProcessMemoryInformation::RENDERER_UNKNOWN) process.renderer_type = ProcessMemoryInformation::RENDERER_NORMAL; diff --git a/chrome/browser/notifications/balloon_host.cc b/chrome/browser/notifications/balloon_host.cc index 03e0126..9968845 100644 --- a/chrome/browser/notifications/balloon_host.cc +++ b/chrome/browser/notifications/balloon_host.cc @@ -12,8 +12,8 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" @@ -132,7 +132,7 @@ void BalloonHost::Init() { MSG_ROUTING_NONE, NULL, NULL)); - web_contents_->SetViewType(chrome::VIEW_TYPE_NOTIFICATION); + chrome::SetViewType(web_contents_.get(), chrome::VIEW_TYPE_NOTIFICATION); web_contents_->SetDelegate(this); Observe(web_contents_.get()); diff --git a/chrome/browser/renderer_host/chrome_render_view_host_observer.cc b/chrome/browser/renderer_host/chrome_render_view_host_observer.cc index 6f46690..5661dfa 100644 --- a/chrome/browser/renderer_host/chrome_render_view_host_observer.cc +++ b/chrome/browser/renderer_host/chrome_render_view_host_observer.cc @@ -17,7 +17,6 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" #include "content/public/browser/site_instance.h" using content::ChildProcessSecurityPolicy; diff --git a/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc b/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc index 14b6af3..6b0162c 100644 --- a/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc +++ b/chrome/browser/speech/chrome_speech_recognition_manager_delegate.cc @@ -14,15 +14,15 @@ #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/tab_contents/tab_util.h" -#include "chrome/common/chrome_view_type.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/pref_names.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" #include "content/public/browser/resource_context.h" #include "content/public/browser/speech_recognition_manager.h" #include "content/public/browser/speech_recognition_session_config.h" #include "content/public/browser/speech_recognition_session_context.h" +#include "content/public/browser/web_contents.h" #include "content/public/common/speech_recognition_error.h" #include "content/public/common/speech_recognition_result.h" #include "grit/generated_resources.h" @@ -35,6 +35,7 @@ using content::BrowserThread; using content::SpeechRecognitionManager; +using content::WebContents; namespace { const int kNoActiveBubble = @@ -311,18 +312,20 @@ void ChromeSpeechRecognitionManagerDelegate::CheckRenderViewType( DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); const content::RenderViewHost* render_view_host = content::RenderViewHost::FromID(render_process_id, render_view_id); - - // For host delegates other than VIEW_TYPE_TAB_CONTENTS we can't reliably show - // a popup, including the speech input bubble. In these cases for privacy - // reasons we don't want to start recording if the user can't be properly - // notified. An example of this is trying to show the speech input bubble - // within an extension popup: http://crbug.com/92083. In these situations the - // speech input extension API should be used instead. - - const bool allowed = (render_view_host != NULL && - render_view_host->GetDelegate() != NULL && - render_view_host->GetDelegate()->GetRenderViewType() == - chrome::VIEW_TYPE_TAB_CONTENTS); + bool allowed = false; + if (render_view_host) { + // For host delegates other than VIEW_TYPE_TAB_CONTENTS we can't reliably + // show a popup, including the speech input bubble. In these cases for + // privacy reasons we don't want to start recording if the user can't be + // properly notified. An example of this is trying to show the speech input + // bubble within an extension popup: http://crbug.com/92083. In these + // situations the speech input extension API should be used instead. + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host); + chrome::ViewType view_type = chrome::GetViewType(web_contents); + if (view_type == chrome::VIEW_TYPE_TAB_CONTENTS) + allowed = true; + } BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(callback, session_id, allowed)); } diff --git a/chrome/browser/tab_contents/background_contents.cc b/chrome/browser/tab_contents/background_contents.cc index 3f1834b..84f5427 100644 --- a/chrome/browser/tab_contents/background_contents.cc +++ b/chrome/browser/tab_contents/background_contents.cc @@ -9,8 +9,8 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/renderer_preferences_util.h" #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/url_constants.h" #include "content/public/browser/notification_service.h" @@ -32,7 +32,8 @@ BackgroundContents::BackgroundContents(SiteInstance* site_instance, // TODO(rafaelw): Implement correct session storage. web_contents_.reset(WebContents::Create( profile_, site_instance, routing_id, NULL, NULL)); - web_contents_->SetViewType(chrome::VIEW_TYPE_BACKGROUND_CONTENTS); + chrome::SetViewType( + web_contents_.get(), chrome::VIEW_TYPE_BACKGROUND_CONTENTS); web_contents_->SetDelegate(this); content::WebContentsObserver::Observe(web_contents_.get()); diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc index 0e7c9f1..3f54f97 100644 --- a/chrome/browser/tab_contents/render_view_context_menu.cc +++ b/chrome/browser/tab_contents/render_view_context_menu.cc @@ -50,10 +50,10 @@ #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/net/url_util.h" #include "chrome/common/pref_names.h" @@ -533,7 +533,7 @@ void RenderViewContextMenu::AppendAllExtensionItems() { } void RenderViewContextMenu::InitMenu() { - content::ViewType view_type = source_web_contents_->GetViewType(); + chrome::ViewType view_type = chrome::GetViewType(source_web_contents_); if (view_type == chrome::VIEW_TYPE_APP_SHELL) { AppendPlatformAppItems(); return; diff --git a/chrome/browser/tab_contents/tab_util.cc b/chrome/browser/tab_contents/tab_util.cc index 35af64e..f855d6a 100644 --- a/chrome/browser/tab_contents/tab_util.cc +++ b/chrome/browser/tab_contents/tab_util.cc @@ -9,7 +9,6 @@ #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" #include "chrome/common/chrome_switches.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" #include "content/public/browser/site_instance.h" #include "content/public/browser/web_contents.h" #include "googleurl/src/gurl.h" @@ -27,7 +26,7 @@ content::WebContents* GetWebContentsByID(int render_process_id, if (!render_view_host) return NULL; - return render_view_host->GetDelegate()->GetAsWebContents(); + return WebContents::FromRenderViewHost(render_view_host); } SiteInstance* GetSiteInstanceForNewTab(Profile* profile, diff --git a/chrome/browser/task_manager/task_manager.cc b/chrome/browser/task_manager/task_manager.cc index a41e167..424865c 100644 --- a/chrome/browser/task_manager/task_manager.cc +++ b/chrome/browser/task_manager/task_manager.cc @@ -25,9 +25,9 @@ #include "chrome/browser/task_manager/task_manager_worker_resource_provider.h" #include "chrome/browser/ui/browser_navigator.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" +#include "chrome/common/view_type.h" #include "content/public/browser/browser_child_process_host.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_view_host.h" diff --git a/chrome/browser/task_manager/task_manager_resource_providers.cc b/chrome/browser/task_manager/task_manager_resource_providers.cc index 472069e..1f2e46e 100644 --- a/chrome/browser/task_manager/task_manager_resource_providers.cc +++ b/chrome/browser/task_manager/task_manager_resource_providers.cc @@ -37,9 +37,9 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" @@ -49,10 +49,8 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" -#include "content/public/browser/render_view_host_delegate.h" #include "content/public/browser/web_contents.h" #include "content/public/common/process_type.h" -#include "content/public/common/view_type.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "grit/theme_resources_standard.h" @@ -1208,8 +1206,10 @@ const Extension* TaskManagerExtensionProcessResource::GetExtension() const { } bool TaskManagerExtensionProcessResource::IsBackground() const { - return render_view_host_->GetDelegate()->GetRenderViewType() == - chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE; + WebContents* web_contents = + WebContents::FromRenderViewHost(render_view_host_); + chrome::ViewType view_type = chrome::GetViewType(web_contents); + return view_type == chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE; } //////////////////////////////////////////////////////////////////////////////// @@ -1330,8 +1330,8 @@ bool TaskManagerExtensionProcessResourceProvider:: // Don't add WebContents (those are handled by // TaskManagerTabContentsResourceProvider) or background contents (handled // by TaskManagerBackgroundResourceProvider). - content::ViewType view_type = - render_view_host->GetDelegate()->GetRenderViewType(); + WebContents* web_contents = WebContents::FromRenderViewHost(render_view_host); + chrome::ViewType view_type = chrome::GetViewType(web_contents); return (view_type != chrome::VIEW_TYPE_TAB_CONTENTS && view_type != chrome::VIEW_TYPE_BACKGROUND_CONTENTS); } diff --git a/chrome/browser/ui/cocoa/extensions/extension_view_mac.mm b/chrome/browser/ui/cocoa/extensions/extension_view_mac.mm index 189a0d7..3c03417 100644 --- a/chrome/browser/ui/cocoa/extensions/extension_view_mac.mm +++ b/chrome/browser/ui/cocoa/extensions/extension_view_mac.mm @@ -7,7 +7,7 @@ #include "chrome/browser/ui/cocoa/extensions/extension_view_mac.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/common/chrome_view_type.h" +#include "chrome/common/view_type.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" @@ -67,7 +67,7 @@ void ExtensionViewMac::RenderViewCreated() { pending_background_.reset(); } - content::ViewType host_type = extension_host_->extension_host_type(); + chrome::ViewType host_type = extension_host_->extension_host_type(); if (host_type == chrome::VIEW_TYPE_EXTENSION_POPUP) { gfx::Size min_size(ExtensionViewMac::kMinWidth, ExtensionViewMac::kMinHeight); diff --git a/chrome/browser/ui/extensions/shell_window.cc b/chrome/browser/ui/extensions/shell_window.cc index 1622cb9..9a71900 100644 --- a/chrome/browser/ui/extensions/shell_window.cc +++ b/chrome/browser/ui/extensions/shell_window.cc @@ -16,8 +16,8 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/intents/web_intent_picker_controller.h" #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_notification_types.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" #include "content/public/browser/notification_details.h" @@ -111,7 +111,7 @@ ShellWindow::ShellWindow(Profile* profile, contents_wrapper_.reset(new TabContentsWrapper(web_contents_)); content::WebContentsObserver::Observe(web_contents_); web_contents_->SetDelegate(this); - web_contents_->SetViewType(chrome::VIEW_TYPE_APP_SHELL); + chrome::SetViewType(web_contents_, chrome::VIEW_TYPE_APP_SHELL); web_contents_->GetMutableRendererPrefs()-> browser_handles_all_top_level_requests = true; web_contents_->GetRenderViewHost()->SyncRendererPrefs(); diff --git a/chrome/browser/ui/gtk/extensions/extension_view_gtk.cc b/chrome/browser/ui/gtk/extensions/extension_view_gtk.cc index d1675ee..143d4ed 100644 --- a/chrome/browser/ui/gtk/extensions/extension_view_gtk.cc +++ b/chrome/browser/ui/gtk/extensions/extension_view_gtk.cc @@ -6,7 +6,7 @@ #include "chrome/browser/extensions/extension_host.h" #include "chrome/browser/ui/gtk/extensions/extension_popup_gtk.h" -#include "chrome/common/chrome_view_type.h" +#include "chrome/common/view_type.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" @@ -54,7 +54,7 @@ void ExtensionViewGtk::RenderViewCreated() { pending_background_.reset(); } - content::ViewType host_type = extension_host_->extension_host_type(); + chrome::ViewType host_type = extension_host_->extension_host_type(); if (host_type == chrome::VIEW_TYPE_EXTENSION_POPUP) { gfx::Size min_size(ExtensionPopupGtk::kMinWidth, ExtensionPopupGtk::kMinHeight); diff --git a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc index 2010a43..f299f71 100644 --- a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc +++ b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc @@ -45,8 +45,8 @@ #include "chrome/browser/ui/sync/one_click_signin_helper.h" #include "chrome/browser/ui/sync/tab_contents_wrapper_synced_tab_delegate.h" #include "chrome/browser/ui/tab_contents/core_tab_helper.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/chrome_view_type.h" #include "content/public/browser/web_contents.h" using content::WebContents; @@ -68,7 +68,7 @@ TabContentsWrapper::TabContentsWrapper(WebContents* contents) DCHECK(contents); DCHECK(!GetCurrentWrapperForContents(contents)); - web_contents_->SetViewType(chrome::VIEW_TYPE_TAB_CONTENTS); + chrome::SetViewType(contents, chrome::VIEW_TYPE_TAB_CONTENTS); // Stash this in the property bag so it can be retrieved without having to // go to a Browser. diff --git a/chrome/browser/ui/views/ash/panel_view_aura.cc b/chrome/browser/ui/views/ash/panel_view_aura.cc index abe51fb..310777c 100644 --- a/chrome/browser/ui/views/ash/panel_view_aura.cc +++ b/chrome/browser/ui/views/ash/panel_view_aura.cc @@ -17,7 +17,7 @@ #include "chrome/browser/sessions/session_id.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" -#include "chrome/common/chrome_view_type.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" #include "content/public/browser/site_instance.h" @@ -107,7 +107,7 @@ void PanelHost::Init(const GURL& url) { web_contents_.reset(content::WebContents::Create( profile_, site_instance_.get(), MSG_ROUTING_NONE, NULL, NULL)); - web_contents_->SetViewType(chrome::VIEW_TYPE_PANEL); + chrome::SetViewType(web_contents_.get(), chrome::VIEW_TYPE_PANEL); web_contents_->SetDelegate(this); Observe(web_contents_.get()); diff --git a/chrome/browser/ui/views/extensions/extension_view.cc b/chrome/browser/ui/views/extensions/extension_view.cc index 98592cc..f1a43c5 100644 --- a/chrome/browser/ui/views/extensions/extension_view.cc +++ b/chrome/browser/ui/views/extensions/extension_view.cc @@ -6,7 +6,7 @@ #include "chrome/browser/extensions/extension_host.h" #include "chrome/browser/ui/views/extensions/extension_popup.h" -#include "chrome/common/chrome_view_type.h" +#include "chrome/common/view_type.h" #include "content/public/browser/content_browser_client.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/render_widget_host_view.h" @@ -164,7 +164,7 @@ void ExtensionView::RenderViewCreated() { pending_background_.reset(); } - content::ViewType host_type = host_->extension_host_type(); + chrome::ViewType host_type = host_->extension_host_type(); if (host_type == chrome::VIEW_TYPE_EXTENSION_POPUP) { gfx::Size min_size(ExtensionPopup::kMinWidth, ExtensionPopup::kMinHeight); diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc index a91b706..5985ad9 100644 --- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc +++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc @@ -29,9 +29,9 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/tab_contents/background_contents.h" #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" +#include "chrome/browser/view_type_utils.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_icon_set.h" #include "chrome/common/extensions/extension_set.h" @@ -801,13 +801,14 @@ void ExtensionSettingsHandler::GetInspectablePagesForExtensionProcess( for (std::set<RenderViewHost*>::const_iterator iter = views.begin(); iter != views.end(); ++iter) { RenderViewHost* host = *iter; - int host_type = host->GetDelegate()->GetRenderViewType(); + WebContents* web_contents = WebContents::FromRenderViewHost(host); + chrome::ViewType host_type = chrome::GetViewType(web_contents); if (host == deleting_rvh_ || chrome::VIEW_TYPE_EXTENSION_POPUP == host_type || chrome::VIEW_TYPE_EXTENSION_DIALOG == host_type) continue; - GURL url = host->GetDelegate()->GetURL(); + GURL url = web_contents->GetURL(); content::RenderProcessHost* process = host->GetProcess(); result->push_back( ExtensionPage(url, process->GetID(), host->GetRoutingID(), diff --git a/chrome/browser/view_type_utils.cc b/chrome/browser/view_type_utils.cc new file mode 100644 index 0000000..5118e0a --- /dev/null +++ b/chrome/browser/view_type_utils.cc @@ -0,0 +1,35 @@ +// Copyright (c) 2012 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/view_type_utils.h" + +#include "base/lazy_instance.h" +#include "base/property_bag.h" +#include "content/public/browser/web_contents.h" + +using content::WebContents; + +namespace chrome { + +static base::LazyInstance<base::PropertyAccessor<ViewType> > + g_view_type_property_accessor = LAZY_INSTANCE_INITIALIZER; + +base::PropertyAccessor<ViewType>* GetPropertyAccessor() { + return g_view_type_property_accessor.Pointer(); +} + +ViewType GetViewType(WebContents* tab) { + if (!tab) + return VIEW_TYPE_INVALID; + ViewType* type = GetPropertyAccessor()->GetProperty(tab->GetPropertyBag()); + if (type) + return *type; + return VIEW_TYPE_INVALID; +} + +void SetViewType(WebContents* tab, ViewType type) { + GetPropertyAccessor()->SetProperty(tab->GetPropertyBag(), type); +} + +} // namespace chrome diff --git a/chrome/browser/view_type_utils.h b/chrome/browser/view_type_utils.h new file mode 100644 index 0000000..3dc3fb4 --- /dev/null +++ b/chrome/browser/view_type_utils.h @@ -0,0 +1,25 @@ +// Copyright (c) 2012 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. + +#ifndef CHROME_BROWSER_VIEW_TYPE_UTILS_H_ +#define CHROME_BROWSER_VIEW_TYPE_UTILS_H_ +#pragma once + +#include "chrome/common/view_type.h" + +namespace content { +class WebContents; +} + +namespace chrome { + +// Get/Set the type of a WebContents. +// GetViewType handles a NULL |tab| for convenience by returning +// VIEW_TYPE_INVALID. +ViewType GetViewType(content::WebContents* tab); +void SetViewType(content::WebContents* tab, ViewType type); + +} // namespace chrome + +#endif // CHROME_BROWSER_VIEW_TYPE_UTILS_H_ diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 30a6ab9..88470ae 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -3974,6 +3974,8 @@ 'browser/user_style_sheet_watcher.h', 'browser/user_style_sheet_watcher_factory.cc', 'browser/user_style_sheet_watcher_factory.h', + 'browser/view_type_utils.cc', + 'browser/view_type_utils.h', 'browser/visitedlink/visitedlink_event_listener.cc', 'browser/visitedlink/visitedlink_event_listener.h', 'browser/visitedlink/visitedlink_master.cc', diff --git a/chrome/chrome_common.gypi b/chrome/chrome_common.gypi index fce8ec5..8cab14f 100644 --- a/chrome/chrome_common.gypi +++ b/chrome/chrome_common.gypi @@ -271,8 +271,8 @@ 'common/time_format.h', 'common/url_constants.cc', 'common/url_constants.h', - 'common/chrome_view_type.cc', - 'common/chrome_view_type.h', + 'common/view_type.cc', + 'common/view_type.h', 'common/visitedlink_common.cc', 'common/visitedlink_common.h', 'common/web_apps.cc', diff --git a/chrome/common/extensions/extension_messages.h b/chrome/common/extensions/extension_messages.h index 0c40ec9..650a3cb 100644 --- a/chrome/common/extensions/extension_messages.h +++ b/chrome/common/extensions/extension_messages.h @@ -11,12 +11,14 @@ #include "chrome/common/extensions/extension_permission_set.h" #include "chrome/common/extensions/url_pattern.h" #include "chrome/common/extensions/url_pattern_set.h" +#include "chrome/common/view_type.h" #include "chrome/common/web_apps.h" -#include "content/public/common/view_type.h" #include "ipc/ipc_message_macros.h" #define IPC_MESSAGE_START ExtensionMsgStart +IPC_ENUM_TRAITS(chrome::ViewType) + // Parameters structure for ExtensionHostMsg_Request. IPC_STRUCT_BEGIN(ExtensionHostMsg_Request_Params) // Message name. @@ -246,7 +248,7 @@ IPC_MESSAGE_CONTROL5(ExtensionMsg_UpdatePermissions, // Tell the renderer which type this view is. IPC_MESSAGE_ROUTED1(ExtensionMsg_NotifyRenderViewType, - content::ViewType /* view_type */) + chrome::ViewType /* view_type */) // Deliver a message sent with ExtensionHostMsg_PostMessage. IPC_MESSAGE_CONTROL3(ExtensionMsg_UsingWebRequestAPI, diff --git a/chrome/common/chrome_view_type.cc b/chrome/common/view_type.cc index 7b15a26..5824b4c 100644 --- a/chrome/common/chrome_view_type.cc +++ b/chrome/common/view_type.cc @@ -2,9 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/common/chrome_view_type.h" +#include "chrome/common/view_type.h" namespace chrome { + const char kViewTypeTabContents[] = "TAB"; const char kViewTypeBackgroundPage[] = "BACKGROUND"; const char kViewTypePopup[] = "POPUP"; @@ -14,4 +15,5 @@ const char kViewTypeNotification[] = "NOTIFICATION"; const char kViewTypeExtensionDialog[] = "EXTENSION_DIALOG"; const char kViewTypeAppShell[] = "SHELL"; const char kViewTypeAll[] = "ALL"; + } // namespace chrome diff --git a/chrome/common/chrome_view_type.h b/chrome/common/view_type.h index 7fdeeed..ff9101f 100644 --- a/chrome/common/chrome_view_type.h +++ b/chrome/common/view_type.h @@ -2,12 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_COMMON_CHROME_VIEW_TYPE_H_ -#define CHROME_COMMON_CHROME_VIEW_TYPE_H_ +#ifndef CHROME_COMMON_VIEW_TYPE_H_ +#define CHROME_COMMON_VIEW_TYPE_H_ #pragma once -#include "content/public/common/view_type.h" - namespace chrome { // Icky RTTI used by a few systems to distinguish the host type of a given @@ -16,8 +14,7 @@ namespace chrome { // TODO(aa): Remove this and teach those systems to keep track of their own // data. enum ViewType { - VIEW_TYPE_CHROME_START = content::VIEW_TYPE_CONTENT_END, - + VIEW_TYPE_INVALID, VIEW_TYPE_APP_SHELL, VIEW_TYPE_BACKGROUND_CONTENTS, VIEW_TYPE_EXTENSION_BACKGROUND_PAGE, @@ -43,4 +40,4 @@ extern const char kViewTypeTabContents[]; } // namespace chrome -#endif // CHROME_COMMON_CHROME_VIEW_TYPE_H_ +#endif // CHROME_COMMON_VIEW_TYPE_H_ diff --git a/chrome/renderer/extensions/event_bindings.cc b/chrome/renderer/extensions/event_bindings.cc index ac5b0aa..94a0203 100644 --- a/chrome/renderer/extensions/event_bindings.cc +++ b/chrome/renderer/extensions/event_bindings.cc @@ -9,10 +9,10 @@ #include "base/basictypes.h" #include "base/lazy_instance.h" #include "base/message_loop.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/extensions/extension_set.h" #include "chrome/common/url_constants.h" +#include "chrome/common/view_type.h" #include "chrome/renderer/extensions/chrome_v8_context.h" #include "chrome/renderer/extensions/chrome_v8_context_set.h" #include "chrome/renderer/extensions/chrome_v8_extension.h" diff --git a/chrome/renderer/extensions/extension_custom_bindings.cc b/chrome/renderer/extensions/extension_custom_bindings.cc index a301342..a513a26 100644 --- a/chrome/renderer/extensions/extension_custom_bindings.cc +++ b/chrome/renderer/extensions/extension_custom_bindings.cc @@ -7,11 +7,11 @@ #include <string> #include "base/string_util.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_action.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/url_constants.h" +#include "chrome/common/view_type.h" #include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_helper.h" #include "content/public/renderer/render_view.h" @@ -49,9 +49,9 @@ v8::Handle<v8::Value> ExtensionCustomBindings::GetExtensionViews( std::string view_type_string = *v8::String::Utf8Value(args[1]->ToString()); StringToUpperASCII(&view_type_string); - // |view_type| == content::VIEW_TYPE_INVALID means getting any type of + // |view_type| == chrome::VIEW_TYPE_INVALID means getting any type of // views. - content::ViewType view_type = content::VIEW_TYPE_INVALID; + chrome::ViewType view_type = chrome::VIEW_TYPE_INVALID; if (view_type_string == chrome::kViewTypeBackgroundPage) { view_type = chrome::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE; } else if (view_type_string == chrome::kViewTypeInfobar) { diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc index a070496..23efff8 100644 --- a/chrome/renderer/extensions/extension_dispatcher.cc +++ b/chrome/renderer/extensions/extension_dispatcher.cc @@ -11,12 +11,12 @@ #include "chrome/common/child_process_logging.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_version_info.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/api/extension_api.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/extensions/extension_permission_set.h" #include "chrome/common/url_constants.h" +#include "chrome/common/view_type.h" #include "chrome/renderer/chrome_render_process_observer.h" #include "chrome/renderer/extensions/api_definitions_natives.h" #include "chrome/renderer/extensions/app_bindings.h" diff --git a/chrome/renderer/extensions/extension_helper.cc b/chrome/renderer/extensions/extension_helper.cc index 3aba7c4..aec4508 100644 --- a/chrome/renderer/extensions/extension_helper.cc +++ b/chrome/renderer/extensions/extension_helper.cc @@ -12,10 +12,10 @@ #include "base/message_loop.h" #include "base/utf_string_conversions.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/chrome_view_type.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" +#include "chrome/common/view_type.h" #include "chrome/renderer/extensions/chrome_v8_context.h" #include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/miscellaneous_bindings.h" @@ -59,7 +59,7 @@ class ExtensionViewAccumulator : public content::RenderViewVisitor { public: ExtensionViewAccumulator(const std::string& extension_id, int browser_window_id, - content::ViewType view_type) + chrome::ViewType view_type) : extension_id_(extension_id), browser_window_id_(browser_window_id), view_type_(view_type) { @@ -94,12 +94,12 @@ class ExtensionViewAccumulator : public content::RenderViewVisitor { private: // Returns true if |type| "isa" |match|. - static bool ViewTypeMatches(content::ViewType type, content::ViewType match) { + static bool ViewTypeMatches(chrome::ViewType type, chrome::ViewType match) { if (type == match) return true; // INVALID means match all. - if (match == content::VIEW_TYPE_INVALID) + if (match == chrome::VIEW_TYPE_INVALID) return true; return false; @@ -107,7 +107,7 @@ class ExtensionViewAccumulator : public content::RenderViewVisitor { std::string extension_id_; int browser_window_id_; - content::ViewType view_type_; + chrome::ViewType view_type_; std::vector<content::RenderView*> views_; }; @@ -117,7 +117,7 @@ class ExtensionViewAccumulator : public content::RenderViewVisitor { std::vector<content::RenderView*> ExtensionHelper::GetExtensionViews( const std::string& extension_id, int browser_window_id, - content::ViewType view_type) { + chrome::ViewType view_type) { ExtensionViewAccumulator accumulator( extension_id, browser_window_id, view_type); content::RenderView::ForEach(&accumulator); @@ -143,7 +143,7 @@ ExtensionHelper::ExtensionHelper(content::RenderView* render_view, content::RenderViewObserverTracker<ExtensionHelper>(render_view), extension_dispatcher_(extension_dispatcher), pending_app_icon_requests_(0), - view_type_(content::VIEW_TYPE_INVALID), + view_type_(chrome::VIEW_TYPE_INVALID), browser_window_id_(-1) { } @@ -369,7 +369,7 @@ void ExtensionHelper::OnGetApplicationInfo(int page_id) { routing_id(), page_id, app_info)); } -void ExtensionHelper::OnNotifyRendererViewType(content::ViewType type) { +void ExtensionHelper::OnNotifyRendererViewType(chrome::ViewType type) { view_type_ = type; } diff --git a/chrome/renderer/extensions/extension_helper.h b/chrome/renderer/extensions/extension_helper.h index 2376b94..4e88467 100644 --- a/chrome/renderer/extensions/extension_helper.h +++ b/chrome/renderer/extensions/extension_helper.h @@ -11,9 +11,9 @@ #include "base/memory/linked_ptr.h" #include "base/memory/scoped_ptr.h" +#include "chrome/common/view_type.h" #include "content/public/renderer/render_view_observer.h" #include "content/public/renderer/render_view_observer_tracker.h" -#include "content/public/common/view_type.h" #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLResponse.h" class ExtensionDispatcher; @@ -42,7 +42,7 @@ class ExtensionHelper static std::vector<content::RenderView*> GetExtensionViews( const std::string& extension_id, int browser_window_id, - content::ViewType view_type); + chrome::ViewType view_type); // Returns the given extension's background page, or NULL if none. static content::RenderView* GetBackgroundPage( @@ -60,7 +60,7 @@ class ExtensionHelper string16* error); int browser_window_id() const { return browser_window_id_; } - content::ViewType view_type() const { return view_type_; } + chrome::ViewType view_type() const { return view_type_; } private: // RenderViewObserver implementation. @@ -91,7 +91,7 @@ class ExtensionHelper void OnExtensionDispatchOnDisconnect(int port_id, bool connection_error); void OnExecuteCode(const ExtensionMsg_ExecuteCode_Params& params); void OnGetApplicationInfo(int page_id); - void OnNotifyRendererViewType(content::ViewType view_type); + void OnNotifyRendererViewType(chrome::ViewType view_type); void OnUpdateBrowserWindowId(int window_id); // Callback triggered when we finish downloading the application definition @@ -127,7 +127,7 @@ class ExtensionHelper int pending_app_icon_requests_; // Type of view attached with RenderView. - content::ViewType view_type_; + chrome::ViewType view_type_; // Id number of browser window which RenderView is attached to. int browser_window_id_; |