| Index: chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.cc
|
| diff --git a/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.cc b/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.cc
|
| index ef305f76e095f2b9d912a9f160f8df57cbeb55f4..4dabf86a2c2b96f000ac37544c842a398e1de897 100644
|
| --- a/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.cc
|
| +++ b/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.cc
|
| @@ -28,11 +28,6 @@
|
| #include "ui/views/controls/table/table_view_observer.h"
|
| #include "ui/views/window/dialog_client_view.h"
|
|
|
| -std::unique_ptr<BubbleUi> ChooserBubbleDelegate::BuildBubbleUi() {
|
| - return base::MakeUnique<ChooserBubbleUiView>(browser_,
|
| - std::move(chooser_controller_));
|
| -}
|
| -
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // View implementation for the chooser bubble.
|
| class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView,
|
| @@ -40,6 +35,7 @@ class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView,
|
| public:
|
| ChooserBubbleUiViewDelegate(
|
| views::View* anchor_view,
|
| + const gfx::Point& anchor_point,
|
| views::BubbleBorder::Arrow anchor_arrow,
|
| std::unique_ptr<ChooserController> chooser_controller);
|
| ~ChooserBubbleUiViewDelegate() override;
|
| @@ -80,6 +76,7 @@ class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView,
|
|
|
| ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate(
|
| views::View* anchor_view,
|
| + const gfx::Point& anchor_point,
|
| views::BubbleBorder::Arrow anchor_arrow,
|
| std::unique_ptr<ChooserController> chooser_controller)
|
| : views::BubbleDialogDelegateView(anchor_view, anchor_arrow),
|
| @@ -101,6 +98,8 @@ ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate(
|
|
|
| device_chooser_content_view_ =
|
| new DeviceChooserContentView(this, std::move(chooser_controller));
|
| + if (!anchor_view)
|
| + SetAnchorRect(gfx::Rect(anchor_point, gfx::Size()));
|
| }
|
|
|
| ChooserBubbleUiViewDelegate::~ChooserBubbleUiViewDelegate() {}
|
| @@ -189,23 +188,15 @@ ChooserBubbleUiView::ChooserBubbleUiView(
|
| DCHECK(browser_);
|
| DCHECK(chooser_controller);
|
| chooser_bubble_ui_view_delegate_ = new ChooserBubbleUiViewDelegate(
|
| - GetAnchorView(), GetAnchorArrow(), std::move(chooser_controller));
|
| + GetAnchorView(), GetAnchorPoint(), GetAnchorArrow(),
|
| + std::move(chooser_controller));
|
| }
|
|
|
| ChooserBubbleUiView::~ChooserBubbleUiView() {}
|
|
|
| void ChooserBubbleUiView::Show(BubbleReference bubble_reference) {
|
| chooser_bubble_ui_view_delegate_->set_bubble_reference(bubble_reference);
|
| -
|
| - // Set |parent_window| because some valid anchors can become hidden.
|
| - views::Widget* widget = views::Widget::GetWidgetForNativeWindow(
|
| - browser_->window()->GetNativeWindow());
|
| - chooser_bubble_ui_view_delegate_->set_parent_window(widget->GetNativeView());
|
| -
|
| - views::BubbleDialogDelegateView::CreateBubble(
|
| - chooser_bubble_ui_view_delegate_)
|
| - ->Show();
|
| -
|
| + CreateAndShow(chooser_bubble_ui_view_delegate_);
|
| chooser_bubble_ui_view_delegate_->UpdateTableView();
|
| }
|
|
|
| @@ -215,23 +206,3 @@ void ChooserBubbleUiView::UpdateAnchorPosition() {
|
| chooser_bubble_ui_view_delegate_->UpdateAnchor(GetAnchorView(),
|
| GetAnchorArrow());
|
| }
|
| -
|
| -views::View* ChooserBubbleUiView::GetAnchorView() {
|
| - BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_);
|
| -
|
| - if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
|
| - return browser_view->GetLocationBarView()
|
| - ->location_icon_view()
|
| - ->GetImageView();
|
| -
|
| - if (browser_view->IsFullscreenBubbleVisible())
|
| - return browser_view->exclusive_access_bubble()->GetView();
|
| -
|
| - return browser_view->top_container();
|
| -}
|
| -
|
| -views::BubbleBorder::Arrow ChooserBubbleUiView::GetAnchorArrow() {
|
| - if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
|
| - return views::BubbleBorder::TOP_LEFT;
|
| - return views::BubbleBorder::NONE;
|
| -}
|
|
|