Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h" | |
| 6 | |
| 7 #include "base/bind.h" | |
| 8 #include "base/location.h" | |
| 9 #include "base/single_thread_task_runner.h" | |
| 10 #include "base/threading/thread_task_runner_handle.h" | |
| 11 #include "chrome/browser/extensions/chrome_extension_chooser_dialog.h" | |
| 12 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sh eet.h" | |
| 13 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_wi ndow.h" | |
| 14 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.h" | |
| 15 #include "components/web_modal/web_contents_modal_dialog_manager.h" | |
| 16 | |
| 17 ChooserDialogCocoa::ChooserDialogCocoa(content::WebContents* web_contents, | |
| 18 ChooserController* chooser_controller) | |
| 19 : web_contents_(web_contents), chooser_controller_(chooser_controller) { | |
| 20 DCHECK(web_contents_); | |
| 21 DCHECK(chooser_controller_); | |
| 22 chooser_controller_->set_observer(this); | |
| 23 chooser_dialog_cocoa_controller_.reset([[ChooserDialogCocoaController alloc] | |
| 24 initWithChooserDialogCocoa:this | |
| 25 initWithChooserController:chooser_controller_]); | |
| 26 base::scoped_nsobject<NSWindow> window([[ConstrainedWindowCustomWindow alloc] | |
| 27 initWithContentRect:[[chooser_dialog_cocoa_controller_ view] bounds]]); | |
| 28 [[window contentView] addSubview:[chooser_dialog_cocoa_controller_ view]]; | |
| 29 base::scoped_nsobject<CustomConstrainedWindowSheet> sheet( | |
| 30 [[CustomConstrainedWindowSheet alloc] initWithCustomWindow:window]); | |
| 31 constrained_window_ = | |
| 32 CreateAndShowWebModalDialogMac(this, web_contents, sheet); | |
| 33 } | |
| 34 | |
| 35 ChooserDialogCocoa::~ChooserDialogCocoa() {} | |
| 36 | |
| 37 void ChooserDialogCocoa::OnConstrainedWindowClosed( | |
| 38 ConstrainedWindowMac* window) { | |
| 39 base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this); | |
| 40 } | |
| 41 | |
| 42 void ChooserDialogCocoa::OnOptionsInitialized() { | |
| 43 [chooser_dialog_cocoa_controller_ onOptionsInitialized]; | |
| 44 } | |
| 45 | |
| 46 void ChooserDialogCocoa::OnOptionAdded(size_t index) { | |
| 47 [chooser_dialog_cocoa_controller_ | |
| 48 onOptionAdded:static_cast<NSInteger>(index)]; | |
|
Robert Sesek
2016/05/23 20:13:53
NSUInteger is an unsigned version that should be i
juncai
2016/05/27 21:30:37
Done.
| |
| 49 } | |
| 50 | |
| 51 void ChooserDialogCocoa::OnOptionRemoved(size_t index) { | |
| 52 [chooser_dialog_cocoa_controller_ | |
| 53 onOptionRemoved:static_cast<NSInteger>(index)]; | |
| 54 } | |
| 55 | |
| 56 void ChooserDialogCocoa::Dismissed() { | |
| 57 constrained_window_->CloseWebContentsModalDialog(); | |
| 58 } | |
| 59 | |
| 60 void ChromeExtensionChooserDialog::ShowDialog( | |
| 61 ChooserController* chooser_controller) const { | |
| 62 web_modal::WebContentsModalDialogManager* manager = | |
| 63 web_modal::WebContentsModalDialogManager::FromWebContents(web_contents()); | |
| 64 if (manager) { | |
| 65 // These objects will delete themselves when the dialog closes. | |
| 66 new ChooserDialogCocoa(web_contents(), chooser_controller); | |
| 67 } | |
| 68 } | |
| OLD | NEW |