Commit 780a71ed authored by Alan Cutter's avatar Alan Cutter Committed by Commit Bot

Fix permission prompt anchoring in fullscreen when UI is hidden

This CL fixes a regression caused by https://chromium-review.googlesource.com/1004886
where permission prompts would appear partially off screen in full screen mode
on platforms where we hide the Chrome UI.

Before:
https://bugs.chromium.org/p/chromium/issues/attachment?aid=334665&signed_aid=cQIe_b4bfUZn8i-akRK_ZQ==&inline=1

After:
https://bugs.chromium.org/p/chromium/issues/attachment?aid=334829&signed_aid=cXhOlJe-_oibvrzmLtL4Bw==&inline=1

This also fixes the DCHECK in GetPageInfoAnchorRect() to be relative to
GetPageInfoAnchorView() rather than copy pasting its bail out condition.

Bug: 833257, 814532
Change-Id: I6ef85ace735b0b217b3a473365791ad453cf8378
Reviewed-on: https://chromium-review.googlesource.com/1013676
Commit-Queue: Alan Cutter <alancutter@chromium.org>
Reviewed-by: default avatarMichael Wasserman <msw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553898}
parent 68959931
...@@ -803,6 +803,27 @@ IN_PROC_BROWSER_TEST_P(HostedAppTest, BookmarkAppThemeColor) { ...@@ -803,6 +803,27 @@ IN_PROC_BROWSER_TEST_P(HostedAppTest, BookmarkAppThemeColor) {
} }
} }
// Check that no assertions are hit when showing a permission request bubble.
IN_PROC_BROWSER_TEST_P(HostedAppTest, PermissionBubble) {
ASSERT_TRUE(https_server()->Start());
ASSERT_TRUE(embedded_test_server()->Start());
WebApplicationInfo web_app_info;
web_app_info.app_url = GetSecureAppURL();
const extensions::Extension* app = InstallBookmarkApp(web_app_info);
ui_test_utils::UrlLoadObserver url_observer(
GetSecureAppURL(), content::NotificationService::AllSources());
Browser* app_browser = LaunchAppBrowser(app);
url_observer.Wait();
RenderFrameHost* render_frame_host =
app_browser->tab_strip_model()->GetActiveWebContents()->GetMainFrame();
EXPECT_TRUE(content::ExecuteScript(
render_frame_host,
"navigator.geolocation.getCurrentPosition(function(){});"));
}
// Ensure that hosted app windows with blank titles don't display the URL as a // Ensure that hosted app windows with blank titles don't display the URL as a
// default window title. // default window title.
IN_PROC_BROWSER_TEST_P(HostedAppTest, Title) { IN_PROC_BROWSER_TEST_P(HostedAppTest, Title) {
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#include "chrome/browser/ui/views/bubble_anchor_util_views.h" #include "chrome/browser/ui/views/bubble_anchor_util_views.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/views/frame/app_menu_button.h" #include "chrome/browser/ui/views/frame/app_menu_button.h"
#include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/location_bar/location_bar_view.h" #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
...@@ -25,13 +24,16 @@ views::View* GetPageInfoAnchorView(Browser* browser, Anchor anchor) { ...@@ -25,13 +24,16 @@ views::View* GetPageInfoAnchorView(Browser* browser, Anchor anchor) {
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
if (anchor == kLocationBar && if (anchor == kLocationBar &&
browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR) &&
browser_view->GetLocationBarView()->visible()) { browser_view->GetLocationBarView()->visible()) {
return browser_view->GetLocationBarView()->GetSecurityBubbleAnchorView(); return browser_view->GetLocationBarView()->GetSecurityBubbleAnchorView();
} }
// Fall back to menu button if no location bar present. // Fall back to menu button if no location bar present.
return browser_view->toolbar_button_provider()->GetAppMenuButton(); views::View* app_menu_button =
browser_view->toolbar_button_provider()->GetAppMenuButton();
if (app_menu_button && app_menu_button->visible())
return app_menu_button;
return nullptr;
} }
gfx::Rect GetPageInfoAnchorRect(Browser* browser) { gfx::Rect GetPageInfoAnchorRect(Browser* browser) {
...@@ -39,8 +41,8 @@ gfx::Rect GetPageInfoAnchorRect(Browser* browser) { ...@@ -39,8 +41,8 @@ gfx::Rect GetPageInfoAnchorRect(Browser* browser) {
if (views_mode_controller::IsViewsBrowserCocoa()) if (views_mode_controller::IsViewsBrowserCocoa())
return GetPageInfoAnchorRectCocoa(browser); return GetPageInfoAnchorRectCocoa(browser);
#endif #endif
// GetPageInfoAnchorView() should be preferred when there is a location bar. // GetPageInfoAnchorView() should be preferred if available.
DCHECK(!browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); DCHECK_EQ(GetPageInfoAnchorView(browser), nullptr);
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
// Get position in view (taking RTL UI into account). // Get position in view (taking RTL UI into account).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment