Index: chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.mm |
diff --git a/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.mm b/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.mm |
index 758f7017c70291e7a0cb2e268dd1e9a3ab9f0acb..2dc7bec0c31c28ec5a073e9465a10ed487d35fa7 100644 |
--- a/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.mm |
+++ b/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.mm |
@@ -21,16 +21,15 @@ |
- (instancetype) |
initWithChooserDialogCocoa:(ChooserDialogCocoa*)chooserDialogCocoa |
- chooserController:(ChooserController*)chooserController { |
+ chooserController: |
+ (std::unique_ptr<ChooserController>)chooserController { |
DCHECK(chooserDialogCocoa); |
DCHECK(chooserController); |
- if ((self = [super init])) { |
+ if ((self = [super init])) |
chooserDialogCocoa_ = chooserDialogCocoa; |
- chooserController_ = chooserController; |
- } |
base::string16 chooserTitle; |
- url::Origin origin = chooserController_->GetOrigin(); |
+ url::Origin origin = chooserController->GetOrigin(); |
content::WebContents* web_contents = chooserDialogCocoa_->web_contents(); |
content::BrowserContext* browser_context = web_contents->GetBrowserContext(); |
extensions::ExtensionRegistry* extension_registry = |
@@ -50,12 +49,12 @@ initWithChooserDialogCocoa:(ChooserDialogCocoa*)chooserDialogCocoa |
chooserContentView_.reset([[ChooserContentViewCocoa alloc] |
initWithChooserTitle:l10n_util::GetNSStringF(IDS_DEVICE_CHOOSER_PROMPT, |
- chooserTitle)]); |
+ chooserTitle) |
+ ChooserController:std::move(chooserController)]); |
tableView_ = [chooserContentView_ tableView]; |
connectButton_ = [chooserContentView_ connectButton]; |
cancelButton_ = [chooserContentView_ cancelButton]; |
- helpButton_ = [chooserContentView_ helpButton]; |
[connectButton_ setTarget:self]; |
[connectButton_ setAction:@selector(onConnect:)]; |
@@ -63,35 +62,20 @@ initWithChooserDialogCocoa:(ChooserDialogCocoa*)chooserDialogCocoa |
[cancelButton_ setAction:@selector(onCancel:)]; |
[tableView_ setDelegate:self]; |
[tableView_ setDataSource:self]; |
- [helpButton_ setTarget:self]; |
- [helpButton_ setAction:@selector(onHelpPressed:)]; |
self.view = chooserContentView_; |
- [self updateTableView]; |
+ [chooserContentView_ updateTableView]; |
return self; |
} |
- (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>(chooserController_->NumOptions()), |
- static_cast<NSInteger>(1)); |
+ return [chooserContentView_ numOptions]; |
} |
- (id)tableView:(NSTableView*)tableView |
objectValueForTableColumn:(NSTableColumn*)tableColumn |
row:(NSInteger)rowIndex { |
- NSInteger num_options = |
- static_cast<NSInteger>(chooserController_->NumOptions()); |
- if (num_options == 0) { |
- DCHECK_EQ(0, rowIndex); |
- return l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT); |
- } |
- |
- DCHECK_GE(rowIndex, 0); |
- DCHECK_LT(rowIndex, num_options); |
- return base::SysUTF16ToNSString( |
- chooserController_->GetOption(static_cast<size_t>(rowIndex))); |
+ return [chooserContentView_ getOption:rowIndex]; |
} |
- (BOOL)tableView:(NSTableView*)aTableView |
@@ -100,52 +84,18 @@ initWithChooserDialogCocoa:(ChooserDialogCocoa*)chooserDialogCocoa |
return NO; |
} |
-- (void)onOptionsInitialized { |
- [self updateTableView]; |
-} |
- |
-- (void)onOptionAdded:(NSInteger)index { |
- [self updateTableView]; |
-} |
- |
-- (void)onOptionRemoved:(NSInteger)index { |
- // |tableView_| will automatically select the removed item's next item. |
- // So here it tracks if the removed item is the item that was currently |
- // selected, if so, deselect it. Also if the removed item is before the |
- // currently selected item, the currently selected item's index needs to |
- // be adjusted by one. |
- NSInteger selectedRow = [tableView_ selectedRow]; |
- if (selectedRow == index) |
- [tableView_ deselectRow:index]; |
- else if (selectedRow > index) |
- [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow - 1] |
- byExtendingSelection:NO]; |
- |
- [self updateTableView]; |
-} |
- |
-- (void)updateTableView { |
- [tableView_ setEnabled:chooserController_->NumOptions() > 0]; |
- [tableView_ reloadData]; |
-} |
- |
- (void)tableViewSelectionDidChange:(NSNotification*)aNotification { |
[connectButton_ setEnabled:[tableView_ numberOfSelectedRows] > 0]; |
} |
- (void)onConnect:(id)sender { |
- NSInteger row = [tableView_ selectedRow]; |
+ [chooserContentView_ Accept]; |
chooserDialogCocoa_->Dismissed(); |
- chooserController_->Select(row); |
} |
- (void)onCancel:(id)sender { |
+ [chooserContentView_ Cancel]; |
chooserDialogCocoa_->Dismissed(); |
- chooserController_->Cancel(); |
-} |
- |
-- (void)onHelpPressed:(id)sender { |
- chooserController_->OpenHelpCenterUrl(); |
} |
- (ChooserContentViewCocoa*)chooserContentView { |