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..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; |
| +} |