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

Unified Diff: chrome/browser/ui/views/website_settings/permissions_bubble_view.cc

Issue 1251633002: Add BubbleManager to manage bubbles and ChromeBubbleManager for events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Partial Feedback Created 5 years, 4 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/website_settings/permissions_bubble_view.cc
diff --git a/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc b/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc
index 8f271647d81fb43f767deede9e07a9bf198e2291..b8b468b741050a3c647d5617c80e5e032c647fd6 100644
--- a/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc
+++ b/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/ui/views/location_bar/location_icon_view.h"
#include "chrome/browser/ui/views/website_settings/permission_selector_view.h"
#include "chrome/browser/ui/views/website_settings/permission_selector_view_observer.h"
+#include "chrome/browser/ui/website_settings/permission_bubble_delegate.h"
#include "chrome/browser/ui/website_settings/permission_bubble_request.h"
#include "chrome/common/pref_names.h"
#include "chrome/grit/generated_resources.h"
@@ -406,55 +407,33 @@ void PermissionsBubbleDelegateView::UpdateAnchor(
//////////////////////////////////////////////////////////////////////////////
// PermissionBubbleViewViews
-PermissionBubbleViewViews::PermissionBubbleViewViews(Browser* browser)
- : browser_(browser),
- delegate_(nullptr),
+PermissionBubbleViewViews::PermissionBubbleViewViews(
+ PermissionBubbleDelegate* delegate, Browser* browser)
+ : delegate_(delegate),
+ browser_(browser),
bubble_delegate_(nullptr) {
- DCHECK(browser);
please use gerrit instead 2015/08/07 23:02:26 let's not remove dcheck of browser.
hcarmona 2015/08/11 02:35:45 Acknowledged.
+ DCHECK(delegate);
}
PermissionBubbleViewViews::~PermissionBubbleViewViews() {
}
// static
-scoped_ptr<PermissionBubbleView> PermissionBubbleView::Create(
+scoped_ptr<BubbleUI> PermissionBubbleView::Create(
+ PermissionBubbleDelegate* delegate,
Browser* browser) {
- return make_scoped_ptr(new PermissionBubbleViewViews(browser));
+ return make_scoped_ptr(new PermissionBubbleViewViews(delegate, browser));
}
-views::View* PermissionBubbleViewViews::GetAnchorView() {
- BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser_);
-
- if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
- return browser_view->GetLocationBarView()->location_icon_view();
-
- if (browser_view->IsFullscreenBubbleVisible())
- return browser_view->exclusive_access_bubble()->GetView();
-
- return browser_view->top_container();
-}
-
-views::BubbleBorder::Arrow PermissionBubbleViewViews::GetAnchorArrow() {
- if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
- return views::BubbleBorder::TOP_LEFT;
- return views::BubbleBorder::NONE;
-}
-
-void PermissionBubbleViewViews::SetDelegate(Delegate* delegate) {
- delegate_ = delegate;
-}
-
-void PermissionBubbleViewViews::Show(
- const std::vector<PermissionBubbleRequest*>& requests,
- const std::vector<bool>& values) {
+void PermissionBubbleViewViews::Show() {
if (bubble_delegate_)
bubble_delegate_->Close();
- bubble_delegate_ =
- new PermissionsBubbleDelegateView(
- GetAnchorView(), GetAnchorArrow(), this,
- browser_->profile()->GetPrefs()->GetString(prefs::kAcceptLanguages),
- requests, values);
+ bubble_delegate_ = new PermissionsBubbleDelegateView(
+ GetAnchorView(), GetAnchorArrow(), this,
+ browser_->profile()->GetPrefs()->GetString(
+ prefs::kAcceptLanguages),
+ delegate_->GetRequests(), delegate_->GetAcceptStates());
// Set |parent_window| because some valid anchors can become hidden.
views::Widget* widget = views::Widget::GetWidgetForNativeWindow(
@@ -465,10 +444,6 @@ void PermissionBubbleViewViews::Show(
bubble_delegate_->SizeToContents();
}
-bool PermissionBubbleViewViews::CanAcceptRequestUpdate() {
- return !(bubble_delegate_ && bubble_delegate_->IsMouseHovered());
-}
-
void PermissionBubbleViewViews::Hide() {
if (bubble_delegate_) {
bubble_delegate_->Close();
@@ -476,19 +451,13 @@ void PermissionBubbleViewViews::Hide() {
}
}
-bool PermissionBubbleViewViews::IsVisible() {
- return bubble_delegate_ != nullptr;
-}
-
void PermissionBubbleViewViews::UpdateAnchorPosition() {
- if (IsVisible())
+ if (bubble_delegate_)
bubble_delegate_->UpdateAnchor(GetAnchorView(), GetAnchorArrow());
}
-gfx::NativeWindow PermissionBubbleViewViews::GetNativeWindow() {
- if (bubble_delegate_ && bubble_delegate_->GetWidget())
- return bubble_delegate_->GetWidget()->GetNativeWindow();
- return nullptr;
+bool PermissionBubbleViewViews::CanAcceptRequestUpdate() {
+ return !(bubble_delegate_ && bubble_delegate_->IsMouseHovered());
}
void PermissionBubbleViewViews::Closing() {
@@ -512,3 +481,22 @@ void PermissionBubbleViewViews::Deny() {
if (delegate_)
delegate_->Deny();
}
+
+views::View* PermissionBubbleViewViews::GetAnchorView() {
+ BrowserView* browser_view =
+ BrowserView::GetBrowserViewForBrowser(browser_);
+
+ if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR))
+ return browser_view->GetLocationBarView()->location_icon_view();
+
+ if (browser_view->IsFullscreenBubbleVisible())
+ return browser_view->exclusive_access_bubble()->GetView();
+
+ return browser_view->top_container();
+}
+
+views::BubbleBorder::Arrow PermissionBubbleViewViews::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