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 #include "content/shell/shell_javascript_dialog.h" | 5 #include "content/shell/shell_javascript_dialog.h" |
6 | 6 |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "content/shell/resource.h" | 8 #include "content/shell/resource.h" |
9 #include "content/shell/shell.h" | 9 #include "content/shell/shell.h" |
10 #include "content/shell/shell_javascript_dialog_creator.h" | 10 #include "content/shell/shell_javascript_dialog_creator.h" |
11 | 11 |
12 namespace content { | 12 namespace content { |
13 | 13 |
14 class ShellJavaScriptDialog; | 14 class ShellJavaScriptDialog; |
15 | 15 |
16 INT_PTR CALLBACK ShellJavaScriptDialog::DialogProc(HWND dialog, UINT message, | 16 INT_PTR CALLBACK ShellJavaScriptDialog::DialogProc(HWND dialog, |
| 17 UINT message, |
17 WPARAM wparam, | 18 WPARAM wparam, |
18 LPARAM lparam) { | 19 LPARAM lparam) { |
19 switch (message) { | 20 switch (message) { |
20 case WM_INITDIALOG: { | 21 case WM_INITDIALOG: { |
21 SetWindowLongPtr(dialog, DWL_USER, static_cast<LONG_PTR>(lparam)); | 22 SetWindowLongPtr(dialog, DWL_USER, static_cast<LONG_PTR>(lparam)); |
22 ShellJavaScriptDialog* owner = | 23 ShellJavaScriptDialog* owner = |
23 reinterpret_cast<ShellJavaScriptDialog*>(lparam); | 24 reinterpret_cast<ShellJavaScriptDialog*>(lparam); |
24 owner->dialog_win_ = dialog; | 25 owner->dialog_win_ = dialog; |
25 SetDlgItemText(dialog, IDC_DIALOGTEXT, owner->message_text_.c_str()); | 26 SetDlgItemText(dialog, IDC_DIALOGTEXT, owner->message_text_.c_str()); |
26 if (owner->message_type_ == ui::JAVASCRIPT_MESSAGE_TYPE_PROMPT) | 27 if (owner->message_type_ == JAVASCRIPT_MESSAGE_TYPE_PROMPT) |
27 SetDlgItemText(dialog, IDC_PROMPTEDIT, | 28 SetDlgItemText(dialog, IDC_PROMPTEDIT, |
28 owner->default_prompt_text_.c_str()); | 29 owner->default_prompt_text_.c_str()); |
29 break; | 30 break; |
30 } | 31 } |
31 case WM_DESTROY: { | 32 case WM_DESTROY: { |
32 ShellJavaScriptDialog* owner = reinterpret_cast<ShellJavaScriptDialog*>( | 33 ShellJavaScriptDialog* owner = reinterpret_cast<ShellJavaScriptDialog*>( |
33 GetWindowLongPtr(dialog, DWL_USER)); | 34 GetWindowLongPtr(dialog, DWL_USER)); |
34 if (owner->dialog_win_) { | 35 if (owner->dialog_win_) { |
35 owner->dialog_win_ = 0; | 36 owner->dialog_win_ = 0; |
36 owner->callback_.Run(false, string16()); | 37 owner->callback_.Run(false, string16()); |
37 owner->creator_->DialogClosed(owner); | 38 owner->creator_->DialogClosed(owner); |
38 } | 39 } |
39 break; | 40 break; |
40 } | 41 } |
41 case WM_COMMAND: { | 42 case WM_COMMAND: { |
42 ShellJavaScriptDialog* owner = reinterpret_cast<ShellJavaScriptDialog*>( | 43 ShellJavaScriptDialog* owner = reinterpret_cast<ShellJavaScriptDialog*>( |
43 GetWindowLongPtr(dialog, DWL_USER)); | 44 GetWindowLongPtr(dialog, DWL_USER)); |
44 string16 user_input; | 45 string16 user_input; |
45 bool finish = false; | 46 bool finish = false; |
46 bool result; | 47 bool result; |
47 switch (LOWORD(wparam)) { | 48 switch (LOWORD(wparam)) { |
48 case IDOK: | 49 case IDOK: |
49 finish = true; | 50 finish = true; |
50 result = true; | 51 result = true; |
51 if (owner->message_type_ == ui::JAVASCRIPT_MESSAGE_TYPE_PROMPT) { | 52 if (owner->message_type_ == JAVASCRIPT_MESSAGE_TYPE_PROMPT) { |
52 size_t length = | 53 size_t length = |
53 GetWindowTextLength(GetDlgItem(dialog, IDC_PROMPTEDIT)) + 1; | 54 GetWindowTextLength(GetDlgItem(dialog, IDC_PROMPTEDIT)) + 1; |
54 GetDlgItemText(dialog, IDC_PROMPTEDIT, | 55 GetDlgItemText(dialog, IDC_PROMPTEDIT, |
55 WriteInto(&user_input, length), length); | 56 WriteInto(&user_input, length), length); |
56 } | 57 } |
57 break; | 58 break; |
58 case IDCANCEL: | 59 case IDCANCEL: |
59 finish = true; | 60 finish = true; |
60 result = false; | 61 result = false; |
61 break; | 62 break; |
62 } | 63 } |
63 if (finish) { | 64 if (finish) { |
64 owner->dialog_win_ = 0; | 65 owner->dialog_win_ = 0; |
65 owner->callback_.Run(result, user_input); | 66 owner->callback_.Run(result, user_input); |
66 DestroyWindow(dialog); | 67 DestroyWindow(dialog); |
67 owner->creator_->DialogClosed(owner); | 68 owner->creator_->DialogClosed(owner); |
68 } | 69 } |
69 break; | 70 break; |
70 } | 71 } |
71 default: | 72 default: |
72 return DefWindowProc(dialog, message, wparam, lparam); | 73 return DefWindowProc(dialog, message, wparam, lparam); |
73 } | 74 } |
74 return 0; | 75 return 0; |
75 } | 76 } |
76 | 77 |
77 ShellJavaScriptDialog::ShellJavaScriptDialog( | 78 ShellJavaScriptDialog::ShellJavaScriptDialog( |
78 ShellJavaScriptDialogCreator* creator, | 79 ShellJavaScriptDialogCreator* creator, |
79 ui::JavascriptMessageType javascript_message_type, | 80 JavaScriptMessageType message_type, |
80 const string16& message_text, | 81 const string16& message_text, |
81 const string16& default_prompt_text, | 82 const string16& default_prompt_text, |
82 const JavaScriptDialogCreator::DialogClosedCallback& callback) | 83 const JavaScriptDialogCreator::DialogClosedCallback& callback) |
83 : creator_(creator), | 84 : creator_(creator), |
84 callback_(callback), | 85 callback_(callback), |
85 message_text_(message_text), | 86 message_text_(message_text), |
86 default_prompt_text_(default_prompt_text), | 87 default_prompt_text_(default_prompt_text), |
87 message_type_(javascript_message_type) { | 88 message_type_(message_type) { |
88 int dialog_type; | 89 int dialog_type; |
89 if (javascript_message_type == ui::JAVASCRIPT_MESSAGE_TYPE_ALERT) | 90 if (message_type == JAVASCRIPT_MESSAGE_TYPE_ALERT) |
90 dialog_type = IDD_ALERT; | 91 dialog_type = IDD_ALERT; |
91 else if (javascript_message_type == ui::JAVASCRIPT_MESSAGE_TYPE_CONFIRM) | 92 else if (message_type == JAVASCRIPT_MESSAGE_TYPE_CONFIRM) |
92 dialog_type = IDD_CONFIRM; | 93 dialog_type = IDD_CONFIRM; |
93 else // JAVASCRIPT_MESSAGE_TYPE_PROMPT | 94 else // JAVASCRIPT_MESSAGE_TYPE_PROMPT |
94 dialog_type = IDD_PROMPT; | 95 dialog_type = IDD_PROMPT; |
95 | 96 |
96 dialog_win_ = CreateDialogParam(GetModuleHandle(0), | 97 dialog_win_ = CreateDialogParam(GetModuleHandle(0), |
97 MAKEINTRESOURCE(dialog_type), 0, DialogProc, | 98 MAKEINTRESOURCE(dialog_type), 0, DialogProc, |
98 reinterpret_cast<LPARAM>(this)); | 99 reinterpret_cast<LPARAM>(this)); |
99 ShowWindow(dialog_win_, SW_SHOWNORMAL); | 100 ShowWindow(dialog_win_, SW_SHOWNORMAL); |
100 } | 101 } |
101 | 102 |
102 ShellJavaScriptDialog::~ShellJavaScriptDialog() { | 103 ShellJavaScriptDialog::~ShellJavaScriptDialog() { |
103 Cancel(); | 104 Cancel(); |
104 } | 105 } |
105 | 106 |
106 void ShellJavaScriptDialog::Cancel() { | 107 void ShellJavaScriptDialog::Cancel() { |
107 if (dialog_win_) | 108 if (dialog_win_) |
108 DestroyWindow(dialog_win_); | 109 DestroyWindow(dialog_win_); |
109 } | 110 } |
110 | 111 |
111 } // namespace content | 112 } // namespace content |
OLD | NEW |