| Index: chrome/browser/app_modal_dialog.h
|
| ===================================================================
|
| --- chrome/browser/app_modal_dialog.h (revision 38222)
|
| +++ chrome/browser/app_modal_dialog.h (working copy)
|
| @@ -11,9 +11,10 @@
|
| #include "chrome/common/notification_observer.h"
|
| #include "chrome/common/notification_registrar.h"
|
|
|
| +// Define NativeDialog type as platform specific dialog view.
|
| #if defined(OS_WIN)
|
| -class JavascriptMessageBoxDialog;
|
| -typedef JavascriptMessageBoxDialog* NativeDialog;
|
| +class ModalDialogDelegate;
|
| +typedef ModalDialogDelegate* NativeDialog;
|
| #elif defined(OS_MACOSX)
|
| #if __OBJC__
|
| @class NSAlert;
|
| @@ -22,33 +23,25 @@
|
| #endif
|
| typedef NSAlert* NativeDialog;
|
| #elif defined(OS_POSIX)
|
| +typedef struct _GtkDialog GtkDialog;
|
| typedef struct _GtkWidget GtkWidget;
|
| +typedef int gint;
|
| typedef GtkWidget* NativeDialog;
|
| #endif
|
|
|
| -class ExtensionHost;
|
| -class JavaScriptMessageBoxClient;
|
| class TabContents;
|
| namespace IPC {
|
| class Message;
|
| }
|
|
|
| -// A controller+model class for javascript alert, confirm, prompt, and
|
| -// onbeforeunload dialog boxes. |NativeDialog| is a platform specific
|
| -// view.
|
| -class AppModalDialog : public NotificationObserver {
|
| +// A controller+model base class for modal dialogs.
|
| +class AppModalDialog {
|
| public:
|
| // A union of data necessary to determine the type of message box to
|
| - // show. |dialog_flags| is a MessageBox flag.
|
| - AppModalDialog(JavaScriptMessageBoxClient* client,
|
| - const std::wstring& title,
|
| - int dialog_flags,
|
| - const std::wstring& message_text,
|
| - const std::wstring& default_prompt_text,
|
| - bool display_suppress_checkbox,
|
| - bool is_before_unload_dialog,
|
| - IPC::Message* reply_msg);
|
| - ~AppModalDialog();
|
| + // show. |tab_contents| parameter is optional, if provided that tab will be
|
| + // activated before the modal dialog is displayed.
|
| + AppModalDialog(TabContents* tab_contents, const std::wstring& title);
|
| + virtual ~AppModalDialog();
|
|
|
| // Called by the app modal window queue when it is time to show this window.
|
| void ShowModalDialog();
|
| @@ -60,80 +53,54 @@
|
| // NativeDialog is closed, it should call OnAccept or OnCancel to notify the
|
| // renderer of the user's action. The NativeDialog is also expected to
|
| // delete the AppModalDialog associated with it.
|
| - void CreateAndShowDialog();
|
| + virtual void CreateAndShowDialog();
|
|
|
| +#if defined(OS_LINUX)
|
| + virtual void HandleDialogResponse(GtkDialog* dialog, gint response_id) = 0;
|
| + // Callback for dialog response calls, passes results to specialized
|
| + // HandleDialogResponse() implementation.
|
| + static void OnDialogResponse(GtkDialog* dialog, gint response_id,
|
| + AppModalDialog* app_modal_dialog);
|
| +#endif
|
| +
|
| // Close the dialog if it is showing.
|
| void CloseModalDialog();
|
|
|
| // Called by the app modal window queue to activate the window.
|
| void ActivateModalDialog();
|
|
|
| - /////////////////////////////////////////////////////////////////////////////
|
| - // Getters so NativeDialog can get information about the message box.
|
| - JavaScriptMessageBoxClient* client() {
|
| - return client_;
|
| - }
|
| - int dialog_flags() {
|
| - return dialog_flags_;
|
| - }
|
| + // Completes dialog handling, shows next modal dialog from the queue.
|
| + void CompleteDialog();
|
| +
|
| + // Dialog window title.
|
| std::wstring title() {
|
| return title_;
|
| }
|
| - bool is_before_unload_dialog() {
|
| - return is_before_unload_dialog_;
|
| - }
|
|
|
| - // Callbacks from NativeDialog when the user accepts or cancels the dialog.
|
| - void OnCancel();
|
| - void OnAccept(const std::wstring& prompt_text, bool suppress_js_messages);
|
| - void OnClose();
|
| -
|
| // Helper methods used to query or control the dialog. This is used by
|
| // automation.
|
| - int GetDialogButtons();
|
| - void AcceptWindow();
|
| - void CancelWindow();
|
| + virtual int GetDialogButtons() = 0;
|
| + virtual void AcceptWindow() = 0;
|
| + virtual void CancelWindow() = 0;
|
|
|
| - private:
|
| - void InitNotifications();
|
| + protected:
|
| + // Cleans up the dialog class.
|
| + virtual void Cleanup();
|
| + // Creates the actual platform specific dialog view class.
|
| + virtual NativeDialog CreateNativeDialog() = 0;
|
|
|
| - // NotificationObserver implementation.
|
| - virtual void Observe(NotificationType type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details);
|
| -
|
| - // Cleans up after the dialog closes for any reason: sends close
|
| - // notification and re-enables input events.
|
| - void Cleanup();
|
| -
|
| - NotificationRegistrar registrar_;
|
| -
|
| // A reference to the platform native dialog box.
|
| NativeDialog dialog_;
|
|
|
| - // An implementation of the client interface to provide supporting methods
|
| - // and receive results.
|
| - JavaScriptMessageBoxClient* client_;
|
| -
|
| - // The client_ as an ExtensionHost, cached for use during notifications that
|
| - // may arrive after the client has entered its destructor (and is thus
|
| - // treated as a base JavaScriptMessageBoxClient). This will be NULL if the
|
| - // client is not an ExtensionHost.
|
| + // Parent tab contents.
|
| TabContents* tab_contents_;
|
| - ExtensionHost* extension_host_;
|
|
|
| + // Information about the message box is held in the following variables.
|
| + std::wstring title_;
|
| +
|
| // True if the dialog should no longer be shown, e.g. because the underlying
|
| // tab navigated away while the dialog was queued.
|
| bool skip_this_dialog_;
|
| -
|
| - // Information about the message box is held in the following variables.
|
| - std::wstring title_;
|
| - int dialog_flags_;
|
| - std::wstring message_text_;
|
| - std::wstring default_prompt_text_;
|
| - bool display_suppress_checkbox_;
|
| - bool is_before_unload_dialog_;
|
| - IPC::Message* reply_msg_;
|
| };
|
|
|
| #endif // CHROME_BROWSER_APP_MODAL_DIALOG_H_
|
|
|