Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Unified Diff: content/shell/shell_javascript_dialog_win.cc

Issue 9918013: Add JavaScript dialogs functionality to content_shell on Windows (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: more style fix Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/shell/shell_javascript_dialog_creator.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/shell/shell_javascript_dialog_win.cc
diff --git a/content/shell/shell_javascript_dialog_win.cc b/content/shell/shell_javascript_dialog_win.cc
new file mode 100755
index 0000000000000000000000000000000000000000..e932969b84e27742aca626d89de32241548eb6be
--- /dev/null
+++ b/content/shell/shell_javascript_dialog_win.cc
@@ -0,0 +1,111 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/shell/shell_javascript_dialog.h"
+
+#include "content/shell/shell.h"
+#include "content/shell/resource.h"
+#include "content/shell/shell_javascript_dialog_creator.h"
+
+namespace content {
+
+class ShellJavaScriptDialog;
+
+INT_PTR CALLBACK ShellJavaScriptDialog::DialogProc(HWND hDlg, UINT msg,
jam 2012/03/29 15:50:30 nit: per style guide, this should e HWND dialog, U
+ WPARAM wParam,
+ LPARAM lParam) {
+ switch (msg) {
+ case WM_INITDIALOG: {
+ SetWindowLongPtr(hDlg, DWL_USER, (LONG_PTR)lParam);
jam 2012/03/29 15:50:30 nit: here and below, we don't use c style casts pe
+ ShellJavaScriptDialog* owner = (ShellJavaScriptDialog*)lParam;
+ owner->dlg_win_ = hDlg;
+ SetDlgItemText(hDlg, IDC_DIALOGTEXT, owner->message_text_.c_str());
+ if (owner->message_type_ == ui::JAVASCRIPT_MESSAGE_TYPE_PROMPT)
+ SetDlgItemText(hDlg, IDC_PROMPTEDIT,
jam 2012/03/29 15:50:30 nit: this tabbing isn't according to style guide,
+ owner->default_prompt_text_.c_str());
+ break;
+ }
+ case WM_DESTROY: {
+ ShellJavaScriptDialog* owner =
+ (ShellJavaScriptDialog*) GetWindowLongPtr(hDlg, DWL_USER);
+ if (owner->dlg_win_) {
+ owner->dlg_win_ = 0;
+ owner->callback_.Run(false, string16());
+ owner->creator_->DialogClosed(owner);
+ }
+ break;
+ }
+ case WM_COMMAND: {
+ ShellJavaScriptDialog* owner =
+ (ShellJavaScriptDialog*) GetWindowLongPtr(hDlg, DWL_USER);
+ string16 user_input;
+ bool finish = false;
+ bool result;
+ switch (LOWORD(wParam)) {
+ case IDOK:
jam 2012/03/29 15:50:30 nit: need indentation for each case per style guid
+ finish = true;
+ result = true;
+ if (owner->message_type_ == ui::JAVASCRIPT_MESSAGE_TYPE_PROMPT) {
+ size_t length =
+ GetWindowTextLength(GetDlgItem(hDlg, IDC_PROMPTEDIT)) + 1;
+ TCHAR* buf = new TCHAR[length];
jam 2012/03/29 15:50:30 nit: we don't use TCHAR in code. just use string_u
+ memset(buf, 0, length * sizeof(TCHAR));
+ GetDlgItemText(hDlg, IDC_PROMPTEDIT, buf, length);
+ user_input = buf;
+ delete[] buf;
+ }
+ break;
+ case IDCANCEL:
+ finish = true;
+ result = false;
+ break;
+ }
+ if (finish) {
+ owner->dlg_win_ = 0;
+ owner->callback_.Run(result, user_input);
+ DestroyWindow(hDlg);
+ owner->creator_->DialogClosed(owner);
+ }
+ break;
+ }
+ default:
+ return DefWindowProc(hDlg, msg, wParam, lParam);
+ }
+ return 0;
+}
+
+ShellJavaScriptDialog::ShellJavaScriptDialog(
+ ShellJavaScriptDialogCreator* creator,
+ ui::JavascriptMessageType javascript_message_type,
+ const string16& message_text,
+ const string16& default_prompt_text,
+ const JavaScriptDialogCreator::DialogClosedCallback& callback)
+ : creator_(creator),
+ callback_(callback),
+ message_text_(message_text),
+ default_prompt_text_(default_prompt_text),
+ message_type_(javascript_message_type) {
+ int dlgType;
jam 2012/03/29 15:50:30 nit: ditto for variable name
+ if (javascript_message_type == ui::JAVASCRIPT_MESSAGE_TYPE_ALERT)
+ dlgType = IDD_ALERT;
+ else if (javascript_message_type == ui::JAVASCRIPT_MESSAGE_TYPE_CONFIRM)
+ dlgType = IDD_CONFIRM;
+ else // JAVASCRIPT_MESSAGE_TYPE_PROMPT
+ dlgType = IDD_PROMPT;
+
+ dlg_win_ = CreateDialogParam(GetModuleHandle(0), MAKEINTRESOURCE(dlgType), 0,
+ DialogProc, (LPARAM) this);
+ ShowWindow(dlg_win_, SW_SHOWNORMAL);
+}
+
+ShellJavaScriptDialog::~ShellJavaScriptDialog() {
+ Cancel();
+}
+
+void ShellJavaScriptDialog::Cancel() {
+ if (dlg_win_)
+ DestroyWindow(dlg_win_);
+}
+
+} // namespace content
« no previous file with comments | « content/shell/shell_javascript_dialog_creator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698