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

Unified Diff: chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.cc

Issue 2853143003: MacViews: Allows the toolkit-views Device Chooser bubble to be used (Closed)
Patch Set: MacViews: Allows the toolkit-views Device Chooser bubble to be used (separated Mac specifics) Created 3 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/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;
-}

Powered by Google App Engine
This is Rietveld 408576698