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

Unified Diff: chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view_views.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_views.cc
diff --git a/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view_views.cc b/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view_views.cc
new file mode 100644
index 0000000000000000000000000000000000000000..86acf6b28b45b665c6e90e272ad2141d32394ba1
--- /dev/null
+++ b/chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view_views.cc
@@ -0,0 +1,59 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/macros.h"
+#include "base/memory/ptr_util.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/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 "chrome/browser/ui/views/permission_bubble/chooser_bubble_ui_view.h"
+
+// The Views browser implementation of ChooserBubbleUiView's anchor methods.
+// Views browsers have a native View to anchor the bubble to, which these
+// functions provide.
+
+std::unique_ptr<BubbleUi> ChooserBubbleDelegate::BuildBubbleUi() {
+ return base::MakeUnique<ChooserBubbleUiView>(
+ browser_, std::move(chooser_controller_), gfx::Point());
+}
+
+void ChooserBubbleUiView::CreateAndShow(
+ views::BubbleDialogDelegateView* delegate) {
+ // Set |parent_window| because some valid anchors can become hidden.
+ views::Widget* widget = views::Widget::GetWidgetForNativeWindow(
+ browser_->window()->GetNativeWindow());
+ gfx::NativeView parent = widget->GetNativeView();
+ DCHECK(parent);
+ delegate->set_parent_window(parent);
+ views::BubbleDialogDelegateView::CreateBubble(delegate)->Show();
+}
+
+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();
+}
+
+gfx::Point ChooserBubbleUiView::GetAnchorPoint() {
+ return gfx::Point();
+}
+
+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