Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5581)

Unified Diff: chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm

Issue 1905273002: Fix positioning of Mac permission prompts when fullscreen. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Feedback Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
diff --git a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
index 0bcc1bd5d34e022119a70dd160a7d0154591ac74..ed03b08529045ff7a6acd59385b049486a131212 100644
--- a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
+++ b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
@@ -25,10 +25,15 @@
#include "chrome/browser/ui/cocoa/website_settings/permission_selector_button.h"
#include "chrome/browser/ui/cocoa/website_settings/split_block_button.h"
#include "chrome/browser/ui/cocoa/website_settings/website_settings_utils_cocoa.h"
+#include "chrome/browser/ui/exclusive_access/exclusive_access_context.h"
+#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h"
+#include "chrome/browser/ui/exclusive_access/fullscreen_controller.h"
#include "chrome/browser/ui/website_settings/permission_bubble_request.h"
#include "chrome/browser/ui/website_settings/permission_bubble_view.h"
#include "chrome/browser/ui/website_settings/permission_menu_model.h"
+#include "chrome/common/pref_names.h"
#include "chrome/grit/generated_resources.h"
+#include "components/prefs/pref_service.h"
#include "components/url_formatter/elide_url.h"
#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/user_metrics.h"
@@ -447,7 +452,7 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate {
- (NSPoint)getExpectedAnchorPoint {
NSPoint anchor;
- if ([self hasLocationBar]) {
+ if ([self hasVisibleLocationBar]) {
LocationBarViewMac* location_bar =
[[[self getExpectedParentWindow] windowController] locationBarBridge];
anchor = location_bar->GetPageInfoBubblePoint();
@@ -461,12 +466,31 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate {
anchor);
}
-- (bool)hasLocationBar {
- return browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR);
+- (bool)hasVisibleLocationBar {
+ if (!browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
+ return false;
+
+ if (!browser_->exclusive_access_manager()->context()->IsFullscreen())
+ return true;
+
+ // If the browser is in browser-initiated full screen, a preference can cause
+ // the toolbar to be hidden.
+ if (browser_->exclusive_access_manager()
+ ->fullscreen_controller()
+ ->IsFullscreenForBrowser()) {
+ PrefService* prefs = browser_->profile()->GetPrefs();
+ bool show_toolbar = prefs->GetBoolean(prefs::kShowFullscreenToolbar);
+ return show_toolbar;
+ }
+
+ // Otherwise this is fullscreen without a toolbar, so there is no visible
+ // location bar.
+ return false;
}
- (info_bubble::BubbleArrowLocation)getExpectedArrowLocation {
- return [self hasLocationBar] ? info_bubble::kTopLeft : info_bubble::kNoArrow;
+ return [self hasVisibleLocationBar] ? info_bubble::kTopLeft
+ : info_bubble::kNoArrow;
}
- (NSWindow*)getExpectedParentWindow {

Powered by Google App Engine
This is Rietveld 408576698