diff options
author | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-13 22:44:14 +0000 |
---|---|---|
committer | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-13 22:44:14 +0000 |
commit | 40ec0567cd066f4b6a88d7e50d0f21d14712b313 (patch) | |
tree | 8bf6689d3a1cb7d0085f80714c34d02e5594e13c /chrome | |
parent | 02fdefc21859ae76cfecadaa54be8d795e936c16 (diff) | |
download | chromium_src-40ec0567cd066f4b6a88d7e50d0f21d14712b313.zip chromium_src-40ec0567cd066f4b6a88d7e50d0f21d14712b313.tar.gz chromium_src-40ec0567cd066f4b6a88d7e50d0f21d14712b313.tar.bz2 |
Ensure that we use a normal browser window as parent for HTML dialogs on ChromeOS.
BUG=chromium-os:2671
TEST=Verify fix for chromius-os:2671.
Review URL: http://codereview.chromium.org/2085003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47215 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/views/frame/browser_view.cc | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc index 2ef1fe1..93de37e 100644 --- a/chrome/browser/views/frame/browser_view.cc +++ b/chrome/browser/views/frame/browser_view.cc @@ -109,6 +109,25 @@ static const int kExtensionAppTitleMaxWidth = 150; // Returned from BrowserView::GetClassName. const char BrowserView::kViewClassName[] = "browser/views/BrowserView"; +#if defined(OS_CHROMEOS) +// Get a normal browser window of given |profile| to use as dialog parent +// if given |browser| is not one. Otherwise, returns browser window of +// |browser|. If |profile| is NULL, |browser|'s profile is used to find the +// normal browser. +static gfx::NativeWindow GetNormalBrowserWindowForBrowser(Browser* browser, + Profile* profile) { + if (browser->type() != Browser::TYPE_NORMAL) { + Browser* normal_browser = BrowserList::FindBrowserWithType( + profile ? profile : browser->profile(), + Browser::TYPE_NORMAL, true); + if (normal_browser && normal_browser->window()) + return normal_browser->window()->GetNativeHandle(); + } + + return browser->window()->GetNativeHandle(); +} +#endif // defined(OS_CHROMEOS) + /////////////////////////////////////////////////////////////////////////////// // BookmarkExtensionBackground, private: // This object serves as the views::Background object which is used to layout @@ -1067,6 +1086,10 @@ void BrowserView::ShowHTMLDialog(HtmlDialogUIDelegate* delegate, // Default to using our window as the parent if the argument is not specified. gfx::NativeWindow parent = parent_window ? parent_window : GetNativeHandle(); +#if defined(OS_CHROMEOS) + parent = GetNormalBrowserWindowForBrowser(browser(), NULL); +#endif // defined(OS_CHROMEOS) + browser::ShowHtmlDialogView(parent, browser_.get()->profile(), delegate); } @@ -1099,13 +1122,7 @@ void BrowserView::ShowPageInfo(Profile* profile, gfx::NativeWindow parent = GetWindow()->GetNativeWindow(); #if defined(OS_CHROMEOS) - // Use normal browser window as parent window for ChromeOS. - if (!IsBrowserTypeNormal()) { - Browser* browser = BrowserList::FindBrowserWithType(profile, - Browser::TYPE_NORMAL, true); - if (browser && browser->window()) - parent = browser->window()->GetNativeHandle(); - } + parent = GetNormalBrowserWindowForBrowser(browser(), profile); #endif // defined(OS_CHROMEOS) browser::ShowPageInfo(parent, profile, url, ssl, show_history); |