summaryrefslogtreecommitdiffstats
path: root/chrome/browser/jsmessage_box_handler_win.h
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-30 19:34:38 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-30 19:34:38 +0000
commit7eb2300f13b081bcd0adcfe28202e82d1310f70d (patch)
tree167a8c0e9d494b1862cf0b575a9f3688f37c4d5f /chrome/browser/jsmessage_box_handler_win.h
parent9660ddd38561758694488c7110a7edbeacb1b305 (diff)
downloadchromium_src-7eb2300f13b081bcd0adcfe28202e82d1310f70d.zip
chromium_src-7eb2300f13b081bcd0adcfe28202e82d1310f70d.tar.gz
chromium_src-7eb2300f13b081bcd0adcfe28202e82d1310f70d.tar.bz2
Allow porting of the JS message boxes. I split out the implementation into
platform-specific files, and have WebContents just use the platform-independent header that declares the creation functions. Review URL: http://codereview.chromium.org/19719 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8978 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/jsmessage_box_handler_win.h')
-rw-r--r--chrome/browser/jsmessage_box_handler_win.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/chrome/browser/jsmessage_box_handler_win.h b/chrome/browser/jsmessage_box_handler_win.h
new file mode 100644
index 0000000..432f59b
--- /dev/null
+++ b/chrome/browser/jsmessage_box_handler_win.h
@@ -0,0 +1,76 @@
+// Copyright (c) 2006-2008 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.
+
+#ifndef CHROME_BROWSER_JSMESSAGE_BOX_HANDLER_WIN_H_
+#define CHROME_BROWSER_JSMESSAGE_BOX_HANDLER_WIN_H_
+
+#include "chrome/browser/jsmessage_box_handler.h"
+#include "chrome/common/ipc_message.h"
+#include "chrome/common/notification_service.h"
+#include "chrome/common/notification_registrar.h"
+#include "chrome/views/app_modal_dialog_delegate.h"
+
+class MessageBoxView;
+class WebContents;
+namespace views {
+class Window;
+}
+
+class JavascriptMessageBoxHandler
+ : public views::AppModalDialogDelegate,
+ public NotificationObserver {
+ public:
+ // Cross-platform code should use RunJavaScriptMessageBox.
+ JavascriptMessageBoxHandler(WebContents* web_contents,
+ int dialog_flags,
+ const std::wstring& message_text,
+ const std::wstring& default_prompt_text,
+ bool display_suppress_checkbox,
+ IPC::Message* reply_msg);
+ virtual ~JavascriptMessageBoxHandler();
+
+ // views::DialogDelegate Methods:
+ virtual int GetDialogButtons() const;
+ virtual std::wstring GetWindowTitle() const;
+ virtual void WindowClosing();
+ virtual bool Cancel();
+ virtual bool Accept();
+
+ // views::AppModalDialogDelegate
+ virtual void ShowModalDialog();
+ virtual void ActivateModalDialog();
+
+ // views::WindowDelegate Methods:
+ virtual bool IsModal() const { return true; }
+ virtual views::View* GetContentsView();
+ virtual views::View* GetInitiallyFocusedView() const;
+
+ private:
+ // NotificationObserver implementation.
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
+ NotificationRegistrar registrar_;
+
+ // The message box view whose commands we handle.
+ MessageBoxView* message_box_view_;
+
+ // The IPC message used to reply to the renderer when the message box
+ // is dismissed.
+ IPC::Message* reply_msg_;
+
+ // The associated WebContents. Used to send IPC messages to the renderer.
+ WebContents* web_contents_;
+
+ // Stores flags defined in message_box_view.h which describe the dialog box.
+ int dialog_flags_;
+
+ // The dialog if it is currently visible.
+ views::Window* dialog_;
+
+ DISALLOW_COPY_AND_ASSIGN(JavascriptMessageBoxHandler);
+};
+
+#endif // CHROME_BROWSER_JSMESSAGE_BOX_HANDLER_WIN_H_