Chromium Code Reviews| 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..449fd01071c4c917c4b3dbb0cea214f1f2ad5dc1 100644 |
| --- a/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc |
| +++ b/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc |
| @@ -8,6 +8,7 @@ |
| #include "base/strings/string16.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser.h" |
| +#include "chrome/browser/ui/browser_finder.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" |
| @@ -15,6 +16,8 @@ |
| #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_manager.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 +409,30 @@ void PermissionsBubbleDelegateView::UpdateAnchor( |
| ////////////////////////////////////////////////////////////////////////////// |
| // PermissionBubbleViewViews |
| -PermissionBubbleViewViews::PermissionBubbleViewViews(Browser* browser) |
| - : browser_(browser), |
| - delegate_(nullptr), |
| - bubble_delegate_(nullptr) { |
| - DCHECK(browser); |
| +PermissionBubbleViewViews::PermissionBubbleViewViews( |
| + PermissionBubbleManager* manager) |
| + : manager_(manager), bubble_delegate_(nullptr) { |
| + DCHECK(manager_); |
| + browser_ = chrome::FindBrowserWithWebContents(manager_->web_contents()); |
| } |
| PermissionBubbleViewViews::~PermissionBubbleViewViews() { |
| } |
| // static |
| -scoped_ptr<PermissionBubbleView> PermissionBubbleView::Create( |
| - Browser* browser) { |
| - return make_scoped_ptr(new PermissionBubbleViewViews(browser)); |
| +scoped_ptr<BubbleUI> PermissionBubbleDelegate::CreateBubble( |
| + PermissionBubbleManager* manager) { |
| + return make_scoped_ptr(new PermissionBubbleViewViews(manager)); |
| } |
| -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), |
| + manager_->requests(), manager_->accept_states()); |
| // Set |parent_window| because some valid anchors can become hidden. |
| views::Widget* widget = views::Widget::GetWidgetForNativeWindow( |
| @@ -465,10 +443,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,39 +450,47 @@ 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::CanAcceptUpdate() const { |
| + return !(bubble_delegate_ && bubble_delegate_->IsMouseHovered()); |
|
msw
2015/08/13 03:37:21
It seems odd that the mouse hovering might prevent
groby-ooo-7-16
2015/08/13 18:44:38
That was always the case for permission bubbles, t
msw
2015/08/13 19:18:58
Okay, I hope we have tests that adding a permissio
|
| } |
| void PermissionBubbleViewViews::Closing() { |
| if (bubble_delegate_) |
| bubble_delegate_ = nullptr; |
| - if (delegate_) |
| - delegate_->Closing(); |
| + manager_->Closing(); |
| } |
| void PermissionBubbleViewViews::Toggle(int index, bool value) { |
| - if (delegate_) |
| - delegate_->ToggleAccept(index, value); |
| + manager_->ToggleAccept(index, value); |
| } |
| void PermissionBubbleViewViews::Accept() { |
| - if (delegate_) |
| - delegate_->Accept(); |
| + manager_->Accept(); |
| } |
| void PermissionBubbleViewViews::Deny() { |
| - if (delegate_) |
| - delegate_->Deny(); |
| + manager_->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; |
| } |