Commit c47f6005 authored by Elly Fong-Jones's avatar Elly Fong-Jones Committed by Commit Bot

polychrome: use Cocoa anchoring code for ChooserBubbleUi in Cocoa mode

This fixes UsbChooserBrowserTest.* in both polychrome modes.

Bug: 817408
Change-Id: If739ffdb6084fc55af38932dff09c2b2b3c4ce38
Reviewed-on: https://chromium-review.googlesource.com/961162Reviewed-by: default avatarSarah Chan <spqchan@chromium.org>
Commit-Queue: Elly Fong-Jones <ellyjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542882}
parent cc555347
......@@ -2521,7 +2521,6 @@ split_static_library("ui") {
"cocoa/password_reuse_warning_view_controller.h",
"cocoa/password_reuse_warning_view_controller.mm",
"cocoa/passwords/password_prompt_views_mac.mm",
"cocoa/permission_bubble/chooser_bubble_ui_views_mac.mm",
"cocoa/session_crashed_bubble.mm",
"cocoa/simple_message_box_bridge_views.mm",
"cocoa/simple_message_box_cocoa.h",
......
......@@ -6,6 +6,7 @@
#include <memory>
#include "build/buildflag.h"
#include "chrome/browser/chooser_controller/chooser_controller.h"
#include "chrome/browser/platform_util.h"
#include "chrome/browser/ui/browser.h"
......@@ -25,7 +26,8 @@ std::unique_ptr<BubbleUi> ChooserBubbleDelegate::BuildBubbleUi() {
std::move(chooser_controller_));
}
void ChooserBubbleUi::CreateAndShow(views::BubbleDialogDelegateView* delegate) {
void ChooserBubbleUi::CreateAndShowCocoa(
views::BubbleDialogDelegateView* delegate) {
gfx::NativeWindow parent_window = browser_->window()->GetNativeWindow();
gfx::NativeView parent = platform_util::GetViewForWindow(parent_window);
DCHECK(parent);
......@@ -34,3 +36,9 @@ void ChooserBubbleUi::CreateAndShow(views::BubbleDialogDelegateView* delegate) {
views::BubbleDialogDelegateView::CreateBubble(delegate)->Show();
KeepBubbleAnchored(delegate, GetPageInfoDecoration(parent_window));
}
#if !BUILDFLAG(MAC_VIEWS_BROWSER)
void ChooserBubbleUi::CreateAndShow(views::BubbleDialogDelegateView* delegate) {
CreateAndShowCocoa(delegate);
}
#endif
......@@ -43,6 +43,9 @@ class ChooserBubbleUi : public BubbleUi, public views::WidgetObserver {
// allow this bubble to be used in either.
void CreateAndShow(views::BubbleDialogDelegateView* delegate);
// Create a ChooserBubbleUi attached specifically to a Cocoa browser window.
void CreateAndShowCocoa(views::BubbleDialogDelegateView* delegate);
Browser* const browser_; // Weak.
// Weak. Owned by its parent view.
ChooserBubbleUiViewDelegate* chooser_bubble_ui_view_delegate_;
......
......@@ -6,10 +6,13 @@
#include <memory>
#include "build/build_config.h"
#include "build/buildflag.h"
#include "chrome/browser/chooser_controller/chooser_controller.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/permission_bubble/chooser_bubble_delegate.h"
#include "chrome/browser/ui/views_mode_controller.h"
#include "ui/views/bubble/bubble_dialog_delegate.h"
#include "ui/views/widget/widget.h"
......@@ -22,7 +25,12 @@ std::unique_ptr<BubbleUi> ChooserBubbleDelegate::BuildBubbleUi() {
std::move(chooser_controller_));
}
#if !defined(OS_MACOSX) || BUILDFLAG(MAC_VIEWS_BROWSER)
void ChooserBubbleUi::CreateAndShow(views::BubbleDialogDelegateView* delegate) {
#if BUILDFLAG(MAC_VIEWS_BROWSER)
if (views_mode_controller::IsViewsBrowserCocoa())
return ChooserBubbleUi::CreateAndShowCocoa(delegate);
#endif
// Set |parent_window_| because some valid anchors can become hidden.
views::Widget* widget = views::Widget::GetWidgetForNativeWindow(
browser_->window()->GetNativeWindow());
......@@ -31,3 +39,4 @@ void ChooserBubbleUi::CreateAndShow(views::BubbleDialogDelegateView* delegate) {
delegate->set_parent_window(parent);
views::BubbleDialogDelegateView::CreateBubble(delegate)->Show();
}
#endif // !OS_MACOSX || MAC_VIEWS_BROWSER
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