| Index: chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm
|
| diff --git a/chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm b/chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm
|
| index 0e2ab295eb6ed9e6803d18fe4a378d1c4ade6158..248fa37ff3da814f9781cbd09b5ec7b06e430ea5 100644
|
| --- a/chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm
|
| +++ b/chrome/browser/ui/cocoa/website_settings/chooser_bubble_ui_cocoa.mm
|
| @@ -14,18 +14,17 @@
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_finder.h"
|
| #include "chrome/browser/ui/browser_window.h"
|
| -#import "chrome/browser/ui/chrome_style.h"
|
| #import "chrome/browser/ui/cocoa/base_bubble_controller.h"
|
| #import "chrome/browser/ui/cocoa/browser_window_controller.h"
|
| #import "chrome/browser/ui/cocoa/browser_window_utils.h"
|
| #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h"
|
| -#import "chrome/browser/ui/cocoa/hover_close_button.h"
|
| #import "chrome/browser/ui/cocoa/info_bubble_view.h"
|
| #import "chrome/browser/ui/cocoa/info_bubble_window.h"
|
| #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h"
|
| +#include "chrome/browser/ui/website_settings/chooser_bubble_delegate.h"
|
| #include "chrome/grit/generated_resources.h"
|
| +#include "components/bubble/bubble_controller.h"
|
| #include "components/url_formatter/elide_url.h"
|
| #include "content/public/browser/native_web_keyboard_event.h"
|
| #import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTweaker.h"
|
| @@ -56,8 +55,9 @@ const CGFloat kVerticalPadding = 10.0f;
|
|
|
| } // namespace
|
|
|
| -std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| - return base::WrapUnique(new ChooserBubbleUiCocoa(browser_, this));
|
| +std::unique_ptr<BubbleUi> ChooserBubbleDelegate::BuildBubbleUi() {
|
| + return base::WrapUnique(
|
| + new ChooserBubbleUiCocoa(browser_, chooser_controller()));
|
| }
|
|
|
| @interface ChooserBubbleUiController
|
| @@ -76,15 +76,15 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| base::scoped_nsobject<NSButton> getHelpButton_;
|
| bool buttonPressed_;
|
|
|
| - Browser* browser_; // Weak.
|
| - ChooserBubbleController* chooserBubbleController_; // Weak.
|
| + Browser* browser_; // Weak.
|
| + ChooserController* chooserController_; // Weak.
|
| }
|
|
|
| // Designated initializer. |browser| and |bridge| must both be non-nil.
|
| - (id)initWithBrowser:(Browser*)browser
|
| - initWithChooserBubbleController:
|
| - (ChooserBubbleController*)chooserBubbleController
|
| - bridge:(ChooserBubbleUiCocoa*)bridge;
|
| + chooserController:(ChooserController*)chooserController
|
| + bubbleReference:(BubbleReference)bubbleReference
|
| + bridge:(ChooserBubbleUiCocoa*)bridge;
|
|
|
| // Makes the bubble visible.
|
| - (void)show;
|
| @@ -151,15 +151,16 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| @implementation ChooserBubbleUiController
|
|
|
| - (id)initWithBrowser:(Browser*)browser
|
| - initWithChooserBubbleController:
|
| - (ChooserBubbleController*)chooserBubbleController
|
| - bridge:(ChooserBubbleUiCocoa*)bridge {
|
| + chooserController:(ChooserController*)chooserController
|
| + bubbleReference:(BubbleReference)bubbleReference
|
| + bridge:(ChooserBubbleUiCocoa*)bridge {
|
| DCHECK(browser);
|
| - DCHECK(chooserBubbleController);
|
| + DCHECK(chooserController);
|
| + DCHECK(bubbleReference);
|
| DCHECK(bridge);
|
|
|
| browser_ = browser;
|
| - chooserBubbleController_ = chooserBubbleController;
|
| + chooserController_ = chooserController;
|
|
|
| base::scoped_nsobject<InfoBubbleWindow> window([[InfoBubbleWindow alloc]
|
| initWithContentRect:ui::kWindowSizeDeterminedLater
|
| @@ -171,6 +172,7 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| if ((self = [super initWithWindow:window
|
| parentWindow:[self getExpectedParentWindow]
|
| anchoredAt:NSZeroPoint])) {
|
| + self.bubbleReference = bubbleReference;
|
| [self setShouldCloseOnResignKey:NO];
|
| [self setShouldOpenAsKeyWindow:YES];
|
| [[self bubble] setArrowLocation:[self getExpectedArrowLocation]];
|
| @@ -190,7 +192,7 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| name:NSWindowDidMoveNotification
|
| object:nil];
|
| if (!buttonPressed_)
|
| - chooserBubbleController_->Close();
|
| + chooserController_->Close();
|
| bridge_->OnBubbleClosing();
|
| [super windowWillClose:notification];
|
| }
|
| @@ -360,16 +362,15 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| - (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView {
|
| // When there are no devices, the table contains a message saying there are
|
| // no devices, so the number of rows is always at least 1.
|
| - return std::max(
|
| - static_cast<NSInteger>(chooserBubbleController_->NumOptions()),
|
| - static_cast<NSInteger>(1));
|
| + return std::max(static_cast<NSInteger>(chooserController_->NumOptions()),
|
| + static_cast<NSInteger>(1));
|
| }
|
|
|
| - (id)tableView:(NSTableView*)tableView
|
| objectValueForTableColumn:(NSTableColumn*)tableColumn
|
| row:(NSInteger)rowIndex {
|
| NSInteger num_options =
|
| - static_cast<NSInteger>(chooserBubbleController_->NumOptions());
|
| + static_cast<NSInteger>(chooserController_->NumOptions());
|
| if (num_options == 0) {
|
| DCHECK_EQ(0, rowIndex);
|
| return l10n_util::GetNSString(IDS_CHOOSER_BUBBLE_NO_DEVICES_FOUND_PROMPT);
|
| @@ -378,7 +379,7 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| DCHECK_GE(rowIndex, 0);
|
| DCHECK_LT(rowIndex, num_options);
|
| return base::SysUTF16ToNSString(
|
| - chooserBubbleController_->GetOption(static_cast<size_t>(rowIndex)));
|
| + chooserController_->GetOption(static_cast<size_t>(rowIndex)));
|
| }
|
|
|
| - (BOOL)tableView:(NSTableView*)aTableView
|
| @@ -406,7 +407,7 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| }
|
|
|
| - (void)updateTableView {
|
| - [tableView_ setEnabled:chooserBubbleController_->NumOptions() > 0];
|
| + [tableView_ setEnabled:chooserController_->NumOptions() > 0];
|
| [tableView_ reloadData];
|
| }
|
|
|
| @@ -459,7 +460,7 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| l10n_util::GetNSStringF(
|
| IDS_CHOOSER_BUBBLE_PROMPT,
|
| url_formatter::FormatOriginForSecurityDisplay(
|
| - chooserBubbleController_->GetOrigin(),
|
| + chooserController_->GetOrigin(),
|
| url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC))];
|
| [titleView setFont:[NSFont systemFontOfSize:[NSFont systemFontSize]]];
|
| // The height is arbitrary as it will be adjusted later.
|
| @@ -540,45 +541,48 @@ std::unique_ptr<BubbleUi> ChooserBubbleController::BuildBubbleUi() {
|
| - (void)onConnect:(id)sender {
|
| buttonPressed_ = true;
|
| NSInteger row = [tableView_ selectedRow];
|
| - chooserBubbleController_->Select(row);
|
| + chooserController_->Select(row);
|
| + self.bubbleReference->CloseBubble(BUBBLE_CLOSE_ACCEPTED);
|
| [self close];
|
| }
|
|
|
| - (void)onCancel:(id)sender {
|
| buttonPressed_ = true;
|
| - chooserBubbleController_->Cancel();
|
| + chooserController_->Cancel();
|
| + self.bubbleReference->CloseBubble(BUBBLE_CLOSE_CANCELED);
|
| [self close];
|
| }
|
|
|
| - (void)onGetHelpPressed:(id)sender {
|
| - chooserBubbleController_->OpenHelpCenterUrl();
|
| + chooserController_->OpenHelpCenterUrl();
|
| }
|
|
|
| @end
|
|
|
| ChooserBubbleUiCocoa::ChooserBubbleUiCocoa(
|
| Browser* browser,
|
| - ChooserBubbleController* chooser_bubble_controller)
|
| + ChooserController* chooser_controller)
|
| : browser_(browser),
|
| - chooser_bubble_controller_(chooser_bubble_controller),
|
| + chooser_controller_(chooser_controller),
|
| chooser_bubble_ui_controller_(nil) {
|
| DCHECK(browser);
|
| - DCHECK(chooser_bubble_controller);
|
| - chooser_bubble_controller_->set_observer(this);
|
| + DCHECK(chooser_controller);
|
| + chooser_controller_->set_observer(this);
|
| }
|
|
|
| ChooserBubbleUiCocoa::~ChooserBubbleUiCocoa() {
|
| - chooser_bubble_controller_->set_observer(nullptr);
|
| + chooser_controller_->set_observer(nullptr);
|
| [chooser_bubble_ui_controller_ close];
|
| chooser_bubble_ui_controller_ = nil;
|
| }
|
|
|
| void ChooserBubbleUiCocoa::Show(BubbleReference bubble_reference) {
|
| if (!chooser_bubble_ui_controller_) {
|
| - chooser_bubble_ui_controller_ = [[ChooserBubbleUiController alloc]
|
| - initWithBrowser:browser_
|
| - initWithChooserBubbleController:chooser_bubble_controller_
|
| - bridge:this];
|
| + chooser_bubble_ui_controller_ =
|
| + [[ChooserBubbleUiController alloc] initWithBrowser:browser_
|
| + chooserController:chooser_controller_
|
| + bubbleReference:bubble_reference
|
| + bridge:this];
|
| }
|
|
|
| [chooser_bubble_ui_controller_ show];
|
|
|