Chromium Code Reviews| Index: chrome/browser/ui/views/extensions/extension_message_bubble_view.cc |
| diff --git a/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc b/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc |
| index 659e9467279918c212e431ec6591da57a4277a15..fd7358ddba4a1aa840211e751e02baa6d1c3e2e5 100644 |
| --- a/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc |
| +++ b/chrome/browser/ui/views/extensions/extension_message_bubble_view.cc |
| @@ -54,10 +54,10 @@ namespace extensions { |
| ExtensionMessageBubbleView::ExtensionMessageBubbleView( |
| views::View* anchor_view, |
| - ExtensionMessageBubbleController::Delegate* delegate) |
| + ExtensionMessageBubbleController* controller) |
| : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), |
| weak_factory_(this), |
| - delegate_(delegate), |
| + controller_(controller), |
| headline_(NULL), |
| learn_more_(NULL), |
| dismiss_button_(NULL), |
| @@ -83,20 +83,22 @@ void ExtensionMessageBubbleView::MaybeShow( |
| // bubble is not as time sensitive so we'll catch the dev mode extensions on |
| // the next startup/next window that opens. That way, we're not too spammy |
| // with the bubbles. |
| - SuspiciousExtensionBubbleController* suspicious_extensions = |
| - extensions::SuspiciousExtensionBubbleController::Get( |
| - browser->profile()); |
| + scoped_ptr<SuspiciousExtensionBubbleController> suspicious_extensions( |
| + new SuspiciousExtensionBubbleController(browser->profile())); |
| if (suspicious_extensions->ShouldShow()) { |
| + // Show the ExtensionMessageBubbleView and pass ownership of |controller| to |
| + // the view. |
|
not at google - send to devlin
2014/01/10 21:28:43
i think this comment, particularly after the scope
Finnur
2014/01/13 15:36:32
Done.
|
| + SuspiciousExtensionBubbleController* controller = |
| + suspicious_extensions.release(); |
|
not at google - send to devlin
2014/01/10 21:28:43
when the View takes a scoped_ptr<controller> this
Finnur
2014/01/13 15:36:32
Done.
|
| ExtensionMessageBubbleView* bubble_delegate = |
| - new ExtensionMessageBubbleView(anchor_view, suspicious_extensions); |
| + new ExtensionMessageBubbleView(anchor_view, controller); |
| views::BubbleDelegateView::CreateBubble(bubble_delegate); |
| - suspicious_extensions->Show(bubble_delegate); |
| + controller->Show(bubble_delegate); |
| return; |
| } |
| - DevModeBubbleController* dev_mode_extensions = |
| - extensions::DevModeBubbleController::Get( |
| - browser->profile()); |
| + scoped_ptr<DevModeBubbleController> dev_mode_extensions( |
| + new DevModeBubbleController(browser->profile())); |
| if (dev_mode_extensions->ShouldShow()) { |
| views::View* reference_view = NULL; |
| BrowserActionsContainer* container = toolbar_view->browser_actions(); |
| @@ -131,11 +133,13 @@ void ExtensionMessageBubbleView::MaybeShow( |
| if (reference_view && reference_view->visible()) |
| anchor_view = reference_view; // Catch-all is the hotdog menu. |
| - // Show the bubble. |
| + // Show the ExtensionMessageBubbleView and pass ownership of |controller| to |
| + // the view. |
|
not at google - send to devlin
2014/01/10 21:28:43
likewise x2
Finnur
2014/01/13 15:36:32
Done.
|
| + DevModeBubbleController* controller = dev_mode_extensions.release(); |
| ExtensionMessageBubbleView* bubble_delegate = |
| - new ExtensionMessageBubbleView(anchor_view, dev_mode_extensions); |
| + new ExtensionMessageBubbleView(anchor_view, controller); |
| views::BubbleDelegateView::CreateBubble(bubble_delegate); |
| - dev_mode_extensions->Show(bubble_delegate); |
| + controller->Show(bubble_delegate); |
| } |
| #endif |
| } |
| @@ -196,6 +200,9 @@ void ExtensionMessageBubbleView::Init() { |
| kInsetBottomRight, kInsetBottomRight); |
| SetLayoutManager(layout); |
| + ExtensionMessageBubbleController::Delegate* delegate = |
| + controller_->delegate(); |
| + |
| const int headline_column_set_id = 0; |
| views::ColumnSet* top_columns = layout->AddColumnSet(headline_column_set_id); |
| top_columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, |
| @@ -203,7 +210,7 @@ void ExtensionMessageBubbleView::Init() { |
| top_columns->AddPaddingColumn(1, 0); |
| layout->StartRow(0, headline_column_set_id); |
| - headline_ = new views::Label(delegate_->GetTitle(), |
| + headline_ = new views::Label(delegate->GetTitle(), |
| rb.GetFontList(ui::ResourceBundle::MediumFont)); |
| layout->AddView(headline_); |
| @@ -219,12 +226,12 @@ void ExtensionMessageBubbleView::Init() { |
| views::Label* message = new views::Label(); |
| message->SetMultiLine(true); |
| message->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| - message->SetText(delegate_->GetMessageBody()); |
| + message->SetText(delegate->GetMessageBody()); |
| message->SizeToFit(views::Widget::GetLocalizedContentsWidth( |
| IDS_EXTENSION_WIPEOUT_BUBBLE_WIDTH_CHARS)); |
| layout->AddView(message); |
| - if (delegate_->ShouldShowExtensionList()) { |
| + if (delegate->ShouldShowExtensionList()) { |
| const int extension_list_column_set_id = 2; |
| views::ColumnSet* middle_columns = |
| layout->AddColumnSet(extension_list_column_set_id); |
| @@ -242,7 +249,7 @@ void ExtensionMessageBubbleView::Init() { |
| std::vector<base::string16> extension_list; |
| base::char16 bullet_point = 0x2022; |
| - std::vector<base::string16> suspicious = delegate_->GetExtensions(); |
| + std::vector<base::string16> suspicious = controller_->GetExtensionList(); |
| size_t i = 0; |
| for (; i < suspicious.size() && i < kMaxExtensionsToShow; ++i) { |
| // Add each extension with bullet point. |
| @@ -253,7 +260,7 @@ void ExtensionMessageBubbleView::Init() { |
| if (i > kMaxExtensionsToShow) { |
| base::string16 difference = base::IntToString16(i - kMaxExtensionsToShow); |
| extension_list.push_back(bullet_point + base::ASCIIToUTF16(" ") + |
| - delegate_->GetOverflowText(difference)); |
| + delegate->GetOverflowText(difference)); |
| } |
| extensions->SetText(JoinString(extension_list, base::ASCIIToUTF16("\n"))); |
| @@ -262,7 +269,7 @@ void ExtensionMessageBubbleView::Init() { |
| layout->AddView(extensions); |
| } |
| - base::string16 action_button = delegate_->GetActionButtonLabel(); |
| + base::string16 action_button = delegate->GetActionButtonLabel(); |
| const int action_row_column_set_id = 3; |
| views::ColumnSet* bottom_columns = |
| @@ -279,7 +286,7 @@ void ExtensionMessageBubbleView::Init() { |
| layout->StartRowWithPadding(0, action_row_column_set_id, |
| 0, kMessageBubblePadding); |
| - learn_more_ = new views::Link(delegate_->GetLearnMoreLabel()); |
| + learn_more_ = new views::Link(delegate->GetLearnMoreLabel()); |
| learn_more_->set_listener(this); |
| layout->AddView(learn_more_); |
| @@ -290,7 +297,7 @@ void ExtensionMessageBubbleView::Init() { |
| } |
| dismiss_button_ = new views::LabelButton(this, |
| - delegate_->GetDismissButtonLabel()); |
| + delegate->GetDismissButtonLabel()); |
| dismiss_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON); |
| layout->AddView(dismiss_button_); |
| } |