OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #include "chrome/browser/js_modal_dialog.h" | 5 #include "chrome/browser/js_modal_dialog.h" |
6 | 6 |
7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
8 | 8 |
9 #include "app/l10n_util_mac.h" | 9 #include "app/l10n_util_mac.h" |
10 #include "app/message_box_flags.h" | 10 #include "app/message_box_flags.h" |
11 #import "base/cocoa_protocols_mac.h" | 11 #import "base/cocoa_protocols_mac.h" |
12 #include "base/sys_string_conversions.h" | 12 #include "base/sys_string_conversions.h" |
| 13 #import "chrome/browser/chrome_browser_application_mac.h" |
13 #include "grit/app_strings.h" | 14 #include "grit/app_strings.h" |
14 #include "grit/generated_resources.h" | 15 #include "grit/generated_resources.h" |
15 | 16 |
16 // Helper object that receives the notification that the dialog/sheet is | 17 // Helper object that receives the notification that the dialog/sheet is |
17 // going away. Is responsible for cleaning itself up. | 18 // going away. Is responsible for cleaning itself up. |
18 @interface JavaScriptAppModalDialogHelper : NSObject<NSAlertDelegate> { | 19 @interface JavaScriptAppModalDialogHelper : NSObject<NSAlertDelegate> { |
19 @private | 20 @private |
20 NSAlert* alert_; | 21 NSAlert* alert_; |
21 NSTextField* textField_; // WEAK; owned by alert_ | 22 NSTextField* textField_; // WEAK; owned by alert_ |
22 } | 23 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 input = base::SysNSStringToWide([textField_ stringValue]); | 62 input = base::SysNSStringToWide([textField_ stringValue]); |
62 switch (returnCode) { | 63 switch (returnCode) { |
63 case NSAlertFirstButtonReturn: { // OK | 64 case NSAlertFirstButtonReturn: { // OK |
64 bool shouldSuppress = false; | 65 bool shouldSuppress = false; |
65 if ([alert showsSuppressionButton]) | 66 if ([alert showsSuppressionButton]) |
66 shouldSuppress = [[alert suppressionButton] state] == NSOnState; | 67 shouldSuppress = [[alert suppressionButton] state] == NSOnState; |
67 bridge->OnAccept(input, shouldSuppress); | 68 bridge->OnAccept(input, shouldSuppress); |
68 break; | 69 break; |
69 } | 70 } |
70 case NSAlertSecondButtonReturn: { // Cancel | 71 case NSAlertSecondButtonReturn: { // Cancel |
| 72 // If the user wants to stay on this page, stop quitting (if a quit is in |
| 73 // progress). |
| 74 if (bridge->is_before_unload_dialog()) |
| 75 chrome_browser_application_mac::CancelTerminate(); |
| 76 |
71 bridge->OnCancel(); | 77 bridge->OnCancel(); |
72 break; | 78 break; |
73 } | 79 } |
74 case NSRunStoppedResponse: { // Window was closed underneath us | 80 case NSRunStoppedResponse: { // Window was closed underneath us |
75 // Need to call OnCancel() because there is some cleanup that needs | 81 // Need to call OnCancel() because there is some cleanup that needs |
76 // to be done. It won't call back to the javascript since the | 82 // to be done. It won't call back to the javascript since the |
77 // JavaScriptAppModalDialog knows that the TabContents was destroyed. | 83 // JavaScriptAppModalDialog knows that the TabContents was destroyed. |
78 bridge->OnCancel(); | 84 bridge->OnCancel(); |
79 break; | 85 break; |
80 } | 86 } |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 NOTIMPLEMENTED(); | 178 NOTIMPLEMENTED(); |
173 return nil; | 179 return nil; |
174 } | 180 } |
175 | 181 |
176 void JavaScriptAppModalDialog::CloseModalDialog() { | 182 void JavaScriptAppModalDialog::CloseModalDialog() { |
177 NSAlert* alert = dialog_; | 183 NSAlert* alert = dialog_; |
178 DCHECK([alert isKindOfClass:[NSAlert class]]); | 184 DCHECK([alert isKindOfClass:[NSAlert class]]); |
179 [NSApp endSheet:[alert window]]; | 185 [NSApp endSheet:[alert window]]; |
180 dialog_ = nil; | 186 dialog_ = nil; |
181 } | 187 } |
OLD | NEW |