summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_process_manager.cc
diff options
context:
space:
mode:
authorrkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 01:36:21 +0000
committerrkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 01:36:21 +0000
commitc64827a67cb5409b4a000951c06e2d01cbc3783e (patch)
tree699e0d65eac757c34d799ebe64dc7d4109b977ae /chrome/browser/extensions/extension_process_manager.cc
parenta8f677c4f043a47ee4cbb295b438662eabec08ad (diff)
downloadchromium_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.cc27
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 =