diff options
author | rkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-23 01:36:21 +0000 |
---|---|---|
committer | rkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-23 01:36:21 +0000 |
commit | c64827a67cb5409b4a000951c06e2d01cbc3783e (patch) | |
tree | 699e0d65eac757c34d799ebe64dc7d4109b977ae /chrome/browser/extensions/extension_process_manager.cc | |
parent | a8f677c4f043a47ee4cbb295b438662eabec08ad (diff) | |
download | chromium_src-c64827a67cb5409b4a000951c06e2d01cbc3783e.zip chromium_src-c64827a67cb5409b4a000951c06e2d01cbc3783e.tar.gz chromium_src-c64827a67cb5409b4a000951c06e2d01cbc3783e.tar.bz2 |
Fix screensaver display issue on ChromeOS.
Use the ExtensionDialogHost to show the screensaver instead of the ExtensionPopup host. The changed auto-sizing of PopupHost makes the Window size to the HTML; so HTML that sizes itself to the window doesn't really work anymore.
The proper way of doing this is to create a host for the screensaver separate from the extensions host; will get that code in for R20 (crosbug.com/28211).
R=aa@chromium.org
BUG=chromium-os:28177
TEST=Tested with the kiosk mode flags.
Review URL: http://codereview.chromium.org/9811030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128381 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_process_manager.cc')
-rw-r--r-- | chrome/browser/extensions/extension_process_manager.cc | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc index af6ad45..970ca27 100644 --- a/chrome/browser/extensions/extension_process_manager.cc +++ b/chrome/browser/extensions/extension_process_manager.cc @@ -167,15 +167,32 @@ ExtensionHost* ExtensionProcessManager::CreateShellHost( return host; } +void ExtensionProcessManager::EnsureBrowserWhenRequired( + Browser* browser, + content::ViewType view_type) { + if (!browser) { +#if defined (OS_CHROMEOS) + // On ChromeOS we'll only use ExtensionView, which + // does not use the browser parameter. + // TODO(rkc): Remove all this once we create a new host for + // screensaver extensions (crosbug.com/28211). + DCHECK(view_type == chrome::VIEW_TYPE_EXTENSION_POPUP || + view_type == chrome::VIEW_TYPE_EXTENSION_DIALOG); +#else + // A NULL browser may only be given for pop-up views. + DCHECK(view_type == chrome::VIEW_TYPE_EXTENSION_POPUP); +#endif + } +} + + ExtensionHost* ExtensionProcessManager::CreateViewHost( const Extension* extension, const GURL& url, Browser* browser, content::ViewType view_type) { DCHECK(extension); - // A NULL browser may only be given for pop-up views. - DCHECK(browser || - (!browser && view_type == chrome::VIEW_TYPE_EXTENSION_POPUP)); + EnsureBrowserWhenRequired(browser, view_type); ExtensionHost* host = #if defined(OS_MACOSX) new ExtensionHostMac(extension, GetSiteInstanceForURL(url), url, @@ -190,9 +207,7 @@ ExtensionHost* ExtensionProcessManager::CreateViewHost( ExtensionHost* ExtensionProcessManager::CreateViewHost( const GURL& url, Browser* browser, content::ViewType view_type) { - // A NULL browser may only be given for pop-up views. - DCHECK(browser || - (!browser && view_type == chrome::VIEW_TYPE_EXTENSION_POPUP)); + EnsureBrowserWhenRequired(browser, view_type); ExtensionService* service = GetProfile()->GetExtensionService(); if (service) { const Extension* extension = |