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 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "chrome/browser/extensions/extension_host.h" | 8 #include "chrome/browser/extensions/extension_host.h" |
9 #include "chrome/browser/tab_contents/tab_contents.h" | 9 #include "chrome/browser/tab_contents/tab_contents.h" |
10 #include "chrome/common/notification_service.h" | 10 #include "chrome/common/notification_service.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 JavaScriptAppModalDialog::JavaScriptAppModalDialog( | 22 JavaScriptAppModalDialog::JavaScriptAppModalDialog( |
23 JavaScriptMessageBoxClient* client, | 23 JavaScriptMessageBoxClient* client, |
24 const std::wstring& title, | 24 const std::wstring& title, |
25 int dialog_flags, | 25 int dialog_flags, |
26 const std::wstring& message_text, | 26 const std::wstring& message_text, |
27 const std::wstring& default_prompt_text, | 27 const std::wstring& default_prompt_text, |
28 bool display_suppress_checkbox, | 28 bool display_suppress_checkbox, |
29 bool is_before_unload_dialog, | 29 bool is_before_unload_dialog, |
30 IPC::Message* reply_msg) | 30 IPC::Message* reply_msg) |
31 : AppModalDialog(client->AsTabContents(), title), | 31 : AppModalDialog(client->AsTabContents(), title), |
| 32 #if defined(OS_MACOSX) |
| 33 dialog_(NULL), |
| 34 #endif |
32 client_(client), | 35 client_(client), |
33 extension_host_(client->AsExtensionHost()), | 36 extension_host_(client->AsExtensionHost()), |
34 dialog_flags_(dialog_flags), | 37 dialog_flags_(dialog_flags), |
35 display_suppress_checkbox_(display_suppress_checkbox), | 38 display_suppress_checkbox_(display_suppress_checkbox), |
36 is_before_unload_dialog_(is_before_unload_dialog), | 39 is_before_unload_dialog_(is_before_unload_dialog), |
37 reply_msg_(reply_msg) { | 40 reply_msg_(reply_msg) { |
38 // We trim the various parts of the message dialog because otherwise we can | 41 // We trim the various parts of the message dialog because otherwise we can |
39 // overflow the message dialog (and crash/hang the GTK+ version). | 42 // overflow the message dialog (and crash/hang the GTK+ version). |
40 ElideString(message_text, kMessageTextMaxSize, &message_text_); | 43 ElideString(message_text, kMessageTextMaxSize, &message_text_); |
41 ElideString(default_prompt_text, kDefaultPromptTextSize, | 44 ElideString(default_prompt_text, kDefaultPromptTextSize, |
(...skipping 15 matching lines...) Expand all Loading... |
57 if (NotificationType::EXTENSION_HOST_DESTROYED == type && | 60 if (NotificationType::EXTENSION_HOST_DESTROYED == type && |
58 Details<ExtensionHost>(extension_host_) != details) | 61 Details<ExtensionHost>(extension_host_) != details) |
59 return; | 62 return; |
60 | 63 |
61 // If we reach here, we know the notification is relevant to us, either | 64 // If we reach here, we know the notification is relevant to us, either |
62 // because we're only observing applicable sources or because we passed the | 65 // because we're only observing applicable sources or because we passed the |
63 // check above. Both of those indicate that we should ignore this dialog. | 66 // check above. Both of those indicate that we should ignore this dialog. |
64 // Also clear the client, since it's now invalid. | 67 // Also clear the client, since it's now invalid. |
65 skip_this_dialog_ = true; | 68 skip_this_dialog_ = true; |
66 client_ = NULL; | 69 client_ = NULL; |
67 CloseModalDialog(); | 70 if (dialog_) |
| 71 CloseModalDialog(); |
68 } | 72 } |
69 | 73 |
70 void JavaScriptAppModalDialog::InitNotifications() { | 74 void JavaScriptAppModalDialog::InitNotifications() { |
71 // Make sure we get relevant navigation notifications so we know when our | 75 // Make sure we get relevant navigation notifications so we know when our |
72 // parent contents will disappear or navigate to a different page. | 76 // parent contents will disappear or navigate to a different page. |
73 if (tab_contents_) { | 77 if (tab_contents_) { |
74 registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, | 78 registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, |
75 Source<NavigationController>(&tab_contents_->controller())); | 79 Source<NavigationController>(&tab_contents_->controller())); |
76 registrar_.Add(this, NotificationType::TAB_CONTENTS_DESTROYED, | 80 registrar_.Add(this, NotificationType::TAB_CONTENTS_DESTROYED, |
77 Source<TabContents>(tab_contents_)); | 81 Source<TabContents>(tab_contents_)); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 // state, destroying the host. http://crbug.com/29355 | 133 // state, destroying the host. http://crbug.com/29355 |
130 #if !defined(OS_MACOSX) | 134 #if !defined(OS_MACOSX) |
131 else if (extension_host_) | 135 else if (extension_host_) |
132 extension_host_->OnMessageBoxClosed(reply_msg_, false, L""); | 136 extension_host_->OnMessageBoxClosed(reply_msg_, false, L""); |
133 else | 137 else |
134 NOTREACHED(); | 138 NOTREACHED(); |
135 #endif | 139 #endif |
136 } | 140 } |
137 AppModalDialog::Cleanup(); | 141 AppModalDialog::Cleanup(); |
138 } | 142 } |
139 | |
OLD | NEW |