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

Unified Diff: chrome/browser/ui/views/permission_bubble/chooser_bubble_ui.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 (nits) Created 3 years, 7 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.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.cc
similarity index 76%
rename from chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.cc
rename to chrome/browser/ui/views/permission_bubble/chooser_bubble_ui.cc
index ef305f76e095f2b9d912a9f160f8df57cbeb55f4..6a857657587c62844d0cdf779e878ebdc32f104c 100644
--- a/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.cc
+++ b/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.h"
+#include "chrome/browser/ui/views/permission_bubble/chooser_bubble_ui.h"
#include <stddef.h>
@@ -16,23 +16,13 @@
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/permission_bubble/chooser_bubble_delegate.h"
#include "chrome/browser/ui/views/device_chooser_content_view.h"
-#include "chrome/browser/ui/views/exclusive_access_bubble_views.h"
-#include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/browser/ui/views/frame/top_container_view.h"
-#include "chrome/browser/ui/views/location_bar/location_bar_view.h"
-#include "chrome/browser/ui/views/location_bar/location_icon_view.h"
#include "components/bubble/bubble_controller.h"
-#include "ui/views/controls/image_view.h"
+#include "ui/views/bubble/bubble_dialog_delegate.h"
#include "ui/views/controls/link.h"
#include "ui/views/controls/styled_label.h"
#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 +30,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 +71,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 +93,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() {}
@@ -181,57 +175,29 @@ void ChooserBubbleUiViewDelegate::UpdateTableView() const {
}
//////////////////////////////////////////////////////////////////////////////
-// ChooserBubbleUiView
-ChooserBubbleUiView::ChooserBubbleUiView(
+// ChooserBubbleUi
+ChooserBubbleUi::ChooserBubbleUi(
Browser* browser,
std::unique_ptr<ChooserController> chooser_controller)
: browser_(browser), chooser_bubble_ui_view_delegate_(nullptr) {
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() {}
+ChooserBubbleUi::~ChooserBubbleUi() {}
-void ChooserBubbleUiView::Show(BubbleReference bubble_reference) {
+void ChooserBubbleUi::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();
}
-void ChooserBubbleUiView::Close() {}
+void ChooserBubbleUi::Close() {}
-void ChooserBubbleUiView::UpdateAnchorPosition() {
+void ChooserBubbleUi::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