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 |