Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5006)

Unified Diff: chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.mm

Issue 2086663003: Change ChooserController ownership model (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address reillyg@'s comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698