OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/ui/cocoa/html_dialog_window_controller.h" | 5 #import "chrome/browser/ui/cocoa/html_dialog_window_controller.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/scoped_nsobject.h" | 8 #include "base/memory/scoped_nsobject.h" |
9 #include "base/property_bag.h" | 9 #include "base/property_bag.h" |
10 #include "base/sys_string_conversions.h" | 10 #include "base/sys_string_conversions.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 virtual std::string GetDialogArgs() const OVERRIDE; | 54 virtual std::string GetDialogArgs() const OVERRIDE; |
55 virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE; | 55 virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE; |
56 virtual void OnCloseContents(WebContents* source, | 56 virtual void OnCloseContents(WebContents* source, |
57 bool* out_close_dialog) OVERRIDE; | 57 bool* out_close_dialog) OVERRIDE; |
58 virtual bool ShouldShowDialogTitle() const OVERRIDE { return true; } | 58 virtual bool ShouldShowDialogTitle() const OVERRIDE { return true; } |
59 | 59 |
60 // HtmlDialogTabContentsDelegate declarations. | 60 // HtmlDialogTabContentsDelegate declarations. |
61 virtual void MoveContents(WebContents* source, const gfx::Rect& pos); | 61 virtual void MoveContents(WebContents* source, const gfx::Rect& pos); |
62 virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event); | 62 virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event); |
63 virtual void CloseContents(WebContents* source) OVERRIDE; | 63 virtual void CloseContents(WebContents* source) OVERRIDE; |
| 64 virtual content::WebContents* OpenURLFromTab( |
| 65 content::WebContents* source, |
| 66 const content::OpenURLParams& params) OVERRIDE; |
| 67 virtual void AddNewContents(content::WebContents* source, |
| 68 content::WebContents* new_contents, |
| 69 WindowOpenDisposition disposition, |
| 70 const gfx::Rect& initial_pos, |
| 71 bool user_gesture) OVERRIDE; |
64 | 72 |
65 private: | 73 private: |
66 HtmlDialogWindowController* controller_; // weak | 74 HtmlDialogWindowController* controller_; // weak |
67 HtmlDialogUIDelegate* delegate_; // weak, owned by controller_ | 75 HtmlDialogUIDelegate* delegate_; // weak, owned by controller_ |
68 HtmlDialogController* dialog_controller_; | 76 HtmlDialogController* dialog_controller_; |
69 | 77 |
70 // Calls delegate_'s OnDialogClosed() exactly once, nulling it out | 78 // Calls delegate_'s OnDialogClosed() exactly once, nulling it out |
71 // afterwards so that no other HtmlDialogUIDelegate calls are sent | 79 // afterwards so that no other HtmlDialogUIDelegate calls are sent |
72 // to it. Returns whether or not the OnDialogClosed() was actually | 80 // to it. Returns whether or not the OnDialogClosed() was actually |
73 // called on the delegate. | 81 // called on the delegate. |
(...skipping 16 matching lines...) Expand all Loading... |
90 gfx::NativeWindow ShowHtmlDialog(gfx::NativeWindow parent, | 98 gfx::NativeWindow ShowHtmlDialog(gfx::NativeWindow parent, |
91 Profile* profile, | 99 Profile* profile, |
92 Browser* browser, | 100 Browser* browser, |
93 HtmlDialogUIDelegate* delegate, | 101 HtmlDialogUIDelegate* delegate, |
94 DialogStyle style) { | 102 DialogStyle style) { |
95 return [HtmlDialogWindowController showHtmlDialog:delegate | 103 return [HtmlDialogWindowController showHtmlDialog:delegate |
96 profile:profile | 104 profile:profile |
97 browser:browser]; | 105 browser:browser]; |
98 } | 106 } |
99 | 107 |
| 108 void CloseHtmlDialog(gfx::NativeWindow window) { |
| 109 [window performClose:nil]; |
| 110 } |
| 111 |
100 } // namespace html_dialog_window_controller | 112 } // namespace html_dialog_window_controller |
101 | 113 |
102 HtmlDialogWindowDelegateBridge::HtmlDialogWindowDelegateBridge( | 114 HtmlDialogWindowDelegateBridge::HtmlDialogWindowDelegateBridge( |
103 HtmlDialogWindowController* controller, | 115 HtmlDialogWindowController* controller, |
104 Profile* profile, | 116 Profile* profile, |
105 Browser* browser, | 117 Browser* browser, |
106 HtmlDialogUIDelegate* delegate) | 118 HtmlDialogUIDelegate* delegate) |
107 : HtmlDialogTabContentsDelegate(profile), | 119 : HtmlDialogTabContentsDelegate(profile), |
108 controller_(controller), | 120 controller_(controller), |
109 delegate_(delegate), | 121 delegate_(delegate), |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 *out_close_dialog = true; | 205 *out_close_dialog = true; |
194 } | 206 } |
195 | 207 |
196 void HtmlDialogWindowDelegateBridge::CloseContents(WebContents* source) { | 208 void HtmlDialogWindowDelegateBridge::CloseContents(WebContents* source) { |
197 bool close_dialog = false; | 209 bool close_dialog = false; |
198 OnCloseContents(source, &close_dialog); | 210 OnCloseContents(source, &close_dialog); |
199 if (close_dialog) | 211 if (close_dialog) |
200 OnDialogClosed(std::string()); | 212 OnDialogClosed(std::string()); |
201 } | 213 } |
202 | 214 |
| 215 content::WebContents* HtmlDialogWindowDelegateBridge::OpenURLFromTab( |
| 216 content::WebContents* source, |
| 217 const content::OpenURLParams& params) { |
| 218 content::WebContents* new_contents = NULL; |
| 219 if (delegate_ && |
| 220 delegate_->HandleOpenURLFromTab(source, params, &new_contents)) { |
| 221 return new_contents; |
| 222 } |
| 223 return HtmlDialogTabContentsDelegate::OpenURLFromTab(source, params); |
| 224 } |
| 225 |
| 226 void HtmlDialogWindowDelegateBridge::AddNewContents( |
| 227 content::WebContents* source, |
| 228 content::WebContents* new_contents, |
| 229 WindowOpenDisposition disposition, |
| 230 const gfx::Rect& initial_pos, |
| 231 bool user_gesture) { |
| 232 if (delegate_ && delegate_->HandleAddNewContents( |
| 233 source, new_contents, disposition, initial_pos, user_gesture)) { |
| 234 return; |
| 235 } |
| 236 HtmlDialogTabContentsDelegate::AddNewContents( |
| 237 source, new_contents, disposition, initial_pos, user_gesture); |
| 238 } |
| 239 |
203 void HtmlDialogWindowDelegateBridge::MoveContents(WebContents* source, | 240 void HtmlDialogWindowDelegateBridge::MoveContents(WebContents* source, |
204 const gfx::Rect& pos) { | 241 const gfx::Rect& pos) { |
205 // TODO(akalin): Actually set the window bounds. | 242 // TODO(akalin): Actually set the window bounds. |
206 } | 243 } |
207 | 244 |
208 // A simplified version of BrowserWindowCocoa::HandleKeyboardEvent(). | 245 // A simplified version of BrowserWindowCocoa::HandleKeyboardEvent(). |
209 // We don't handle global keyboard shortcuts here, but that's fine since | 246 // We don't handle global keyboard shortcuts here, but that's fine since |
210 // they're all browser-specific. (This may change in the future.) | 247 // they're all browser-specific. (This may change in the future.) |
211 void HtmlDialogWindowDelegateBridge::HandleKeyboardEvent( | 248 void HtmlDialogWindowDelegateBridge::HandleKeyboardEvent( |
212 const NativeWebKeyboardEvent& event) { | 249 const NativeWebKeyboardEvent& event) { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 // TODO(akalin): Figure out why implementing (void)cancel:(id)sender | 357 // TODO(akalin): Figure out why implementing (void)cancel:(id)sender |
321 // to do the above doesn't work. | 358 // to do the above doesn't work. |
322 } | 359 } |
323 | 360 |
324 - (void)windowWillClose:(NSNotification*)notification { | 361 - (void)windowWillClose:(NSNotification*)notification { |
325 delegate_->WindowControllerClosed(); | 362 delegate_->WindowControllerClosed(); |
326 [self autorelease]; | 363 [self autorelease]; |
327 } | 364 } |
328 | 365 |
329 @end | 366 @end |
OLD | NEW |