diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-30 19:34:38 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-30 19:34:38 +0000 |
commit | 7eb2300f13b081bcd0adcfe28202e82d1310f70d (patch) | |
tree | 167a8c0e9d494b1862cf0b575a9f3688f37c4d5f /chrome/browser/jsmessage_box_handler_win.h | |
parent | 9660ddd38561758694488c7110a7edbeacb1b305 (diff) | |
download | chromium_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.h | 76 |
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_ |