Index: chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.cc |
diff --git a/chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.cc b/chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.cc |
index f0e9ca699e909f970ced84ba33d7bce1752253ca..c60ae660302f7e754dfe68a13d893652d7b42a68 100644 |
--- a/chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.cc |
+++ b/chrome/browser/ui/views/website_settings/chooser_bubble_ui_view.cc |
@@ -6,6 +6,8 @@ |
#include <stddef.h> |
+#include <memory> |
+ |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "base/strings/string16.h" |
@@ -31,7 +33,7 @@ |
std::unique_ptr<BubbleUi> ChooserBubbleDelegate::BuildBubbleUi() { |
return base::WrapUnique( |
- new ChooserBubbleUiView(browser_, chooser_controller())); |
+ new ChooserBubbleUiView(browser_, std::move(chooser_controller_))); |
} |
/////////////////////////////////////////////////////////////////////////////// |
@@ -40,10 +42,10 @@ class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView, |
public views::StyledLabelListener, |
public views::TableViewObserver { |
public: |
- ChooserBubbleUiViewDelegate(views::View* anchor_view, |
- views::BubbleBorder::Arrow anchor_arrow, |
- ChooserController* chooser_controller, |
- BubbleReference bubble_reference); |
+ ChooserBubbleUiViewDelegate( |
+ views::View* anchor_view, |
+ views::BubbleBorder::Arrow anchor_arrow, |
+ std::unique_ptr<ChooserController> chooser_controller); |
~ChooserBubbleUiViewDelegate() override; |
// views::WidgetDelegate: |
@@ -75,12 +77,12 @@ class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView, |
void UpdateAnchor(views::View* anchor_view, |
views::BubbleBorder::Arrow anchor_arrow); |
+ void set_bubble_reference(BubbleReference bubble_reference); |
void UpdateTableModel() const; |
private: |
+ url::Origin origin_; |
ChooserContentView* chooser_content_view_; |
- |
- ChooserController* chooser_controller_; |
BubbleReference bubble_reference_; |
DISALLOW_COPY_AND_ASSIGN(ChooserBubbleUiViewDelegate); |
@@ -89,12 +91,9 @@ class ChooserBubbleUiViewDelegate : public views::BubbleDialogDelegateView, |
ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate( |
views::View* anchor_view, |
views::BubbleBorder::Arrow anchor_arrow, |
- ChooserController* chooser_controller, |
- BubbleReference bubble_reference) |
+ std::unique_ptr<ChooserController> chooser_controller) |
: views::BubbleDialogDelegateView(anchor_view, anchor_arrow), |
- chooser_content_view_(nullptr), |
- chooser_controller_(chooser_controller), |
- bubble_reference_(bubble_reference) { |
+ chooser_content_view_(nullptr) { |
// ------------------------------------ |
// | Chooser bubble title | |
// | -------------------------------- | |
@@ -110,9 +109,9 @@ ChooserBubbleUiViewDelegate::ChooserBubbleUiViewDelegate( |
// | Not seeing your device? Get help | |
// ------------------------------------ |
- DCHECK(bubble_reference_); |
- |
- chooser_content_view_ = new ChooserContentView(this, chooser_controller_); |
+ origin_ = chooser_controller->GetOrigin(); |
+ chooser_content_view_ = |
+ new ChooserContentView(this, std::move(chooser_controller)); |
} |
ChooserBubbleUiViewDelegate::~ChooserBubbleUiViewDelegate() {} |
@@ -121,8 +120,7 @@ base::string16 ChooserBubbleUiViewDelegate::GetWindowTitle() const { |
return l10n_util::GetStringFUTF16( |
IDS_DEVICE_CHOOSER_PROMPT, |
url_formatter::FormatOriginForSecurityDisplay( |
- chooser_controller_->GetOrigin(), |
- url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC)); |
+ origin_, url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC)); |
} |
base::string16 ChooserBubbleUiViewDelegate::GetDialogButtonLabel( |
@@ -191,26 +189,32 @@ void ChooserBubbleUiViewDelegate::UpdateAnchor( |
SetAnchorView(anchor_view); |
} |
+void ChooserBubbleUiViewDelegate::set_bubble_reference( |
+ BubbleReference bubble_reference) { |
+ bubble_reference_ = bubble_reference; |
+ DCHECK(bubble_reference_); |
+} |
+ |
void ChooserBubbleUiViewDelegate::UpdateTableModel() const { |
chooser_content_view_->UpdateTableModel(); |
} |
////////////////////////////////////////////////////////////////////////////// |
// ChooserBubbleUiView |
-ChooserBubbleUiView::ChooserBubbleUiView(Browser* browser, |
- ChooserController* chooser_controller) |
- : browser_(browser), |
- chooser_controller_(chooser_controller), |
- chooser_bubble_ui_view_delegate_(nullptr) { |
+ChooserBubbleUiView::ChooserBubbleUiView( |
+ Browser* browser, |
+ std::unique_ptr<ChooserController> chooser_controller) |
+ : browser_(browser), chooser_bubble_ui_view_delegate_(nullptr) { |
DCHECK(browser_); |
- DCHECK(chooser_controller_); |
+ DCHECK(chooser_controller); |
+ chooser_bubble_ui_view_delegate_ = new ChooserBubbleUiViewDelegate( |
+ GetAnchorView(), GetAnchorArrow(), std::move(chooser_controller)); |
} |
ChooserBubbleUiView::~ChooserBubbleUiView() {} |
void ChooserBubbleUiView::Show(BubbleReference bubble_reference) { |
- chooser_bubble_ui_view_delegate_ = new ChooserBubbleUiViewDelegate( |
- GetAnchorView(), GetAnchorArrow(), chooser_controller_, 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( |