Chromium Code Reviews| 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..f8cddd57e9613eb90e96c3451e4bb51f1f95f6b2 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,32 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
| anchor); |
| } |
| -- (bool)hasLocationBar { |
| - return browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR); |
| +- (bool)hasVisibleLocationBar { |
| + bool has_bar = browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR); |
|
tapted
2016/04/22 05:27:40
nit: has_bar -> hasBar since it's between @impleme
benwells
2016/04/28 07:32:43
Done.
|
| + if (!has_bar) |
| + 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 |
|
tapted
2016/04/22 05:27:40
what about popups?
E.g. https://permission.site -
benwells
2016/04/28 07:32:43
That does have a hidden location bar, but those wi
|
| + // 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 { |