summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-13 22:44:14 +0000
committerxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-13 22:44:14 +0000
commit40ec0567cd066f4b6a88d7e50d0f21d14712b313 (patch)
tree8bf6689d3a1cb7d0085f80714c34d02e5594e13c /chrome
parent02fdefc21859ae76cfecadaa54be8d795e936c16 (diff)
downloadchromium_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.cc31
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);