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

Unified Diff: chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h

Issue 7096016: Remove JS dialog dependency from content. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: now a tc delegate Created 9 years, 7 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
Index: chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h
diff --git a/chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h b/chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h
index 851b039068d0ef5678623e4fd9906765474eef79..6a05b8e5656c7c4b88c3f4fef0ca846253943ec6 100644
--- a/chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h
+++ b/chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h
@@ -8,12 +8,12 @@
#include <string>
-#include "base/utf_string_conversions.h"
+#include "base/time.h"
#include "build/build_config.h"
#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
+#include "content/browser/javascript_dialogs.h"
#include "content/common/notification_observer.h"
#include "content/common/notification_registrar.h"
-#include "ui/gfx/native_widget_types.h"
class ExtensionHost;
class NativeAppModalDialog;
@@ -23,28 +23,16 @@ namespace IPC {
class Message;
}
-class JavaScriptAppModalDialogDelegate {
+// Extra data for JavaScript dialogs to add Chrome-only features.
+class ChromeJavaScriptDialogExtraData {
public:
- // AppModalDialog calls this when the dialog is closed.
- virtual void OnMessageBoxClosed(IPC::Message* reply_msg,
- bool success,
- const std::wstring& prompt) = 0;
-
- // Indicates whether additional message boxes should be suppressed.
- virtual void SetSuppressMessageBoxes(bool suppress_message_boxes) = 0;
-
- // Returns the root native window with which the message box is associated.
- virtual gfx::NativeWindow GetMessageBoxRootWindow() = 0;
-
- // Returns the TabContents or ExtensionHost associated with this message
- // box -- in practice, the object implementing this interface. Exactly one
- // of these must be non-NULL; behavior is undefined (read: it'll probably
- // crash) if that is not the case.
- virtual TabContents* AsTabContents() = 0;
- virtual ExtensionHost* AsExtensionHost() = 0;
-
- protected:
- virtual ~JavaScriptAppModalDialogDelegate() {}
+ ChromeJavaScriptDialogExtraData();
+
+ // The time that the last JavaScript dialog was dismissed.
+ base::TimeTicks last_javascript_message_dismissal_;
+
+ // True if the user has decided to block future JavaScript dialogs.
+ bool suppress_javascript_messages_;
};
// A controller + model class for JavaScript alert, confirm, prompt, and
@@ -52,11 +40,12 @@ class JavaScriptAppModalDialogDelegate {
class JavaScriptAppModalDialog : public AppModalDialog,
public NotificationObserver {
public:
- JavaScriptAppModalDialog(JavaScriptAppModalDialogDelegate* delegate,
- const std::wstring& title,
+ JavaScriptAppModalDialog(content::JavaScriptDialogDelegate* delegate,
+ ChromeJavaScriptDialogExtraData* extra_data,
+ const string16& title,
int dialog_flags,
- const std::wstring& message_text,
- const std::wstring& default_prompt_text,
+ const string16& message_text,
+ const string16& default_prompt_text,
bool display_suppress_checkbox,
bool is_before_unload_dialog,
IPC::Message* reply_msg);
@@ -66,11 +55,11 @@ class JavaScriptAppModalDialog : public AppModalDialog,
virtual NativeAppModalDialog* CreateNativeDialog();
virtual bool IsJavaScriptModalDialog();
- JavaScriptAppModalDialogDelegate* delegate() const { return delegate_; }
+ content::JavaScriptDialogDelegate* delegate() const { return delegate_; }
// Callbacks from NativeDialog when the user accepts or cancels the dialog.
void OnCancel(bool suppress_js_messages);
- void OnAccept(const std::wstring& prompt_text, bool suppress_js_messages);
+ void OnAccept(const string16& prompt_text, bool suppress_js_messages);
// NOTE: This is only called under Views, and should be removed. Any critical
// work should be done in OnCancel or OnAccept. See crbug.com/63732 for more.
@@ -82,10 +71,8 @@ class JavaScriptAppModalDialog : public AppModalDialog,
// Accessors
int dialog_flags() const { return dialog_flags_; }
- std::wstring message_text() const { return message_text_; }
- std::wstring default_prompt_text() const {
- return UTF16ToWideHack(default_prompt_text_);
- }
+ string16 message_text() const { return message_text_; }
+ string16 default_prompt_text() const { return default_prompt_text_; }
bool display_suppress_checkbox() const { return display_suppress_checkbox_; }
bool is_before_unload_dialog() const { return is_before_unload_dialog_; }
@@ -99,14 +86,17 @@ class JavaScriptAppModalDialog : public AppModalDialog,
void InitNotifications();
// Notifies the delegate with the result of the dialog.
- void NotifyDelegate(bool success, const std::wstring& prompt_text,
+ void NotifyDelegate(bool success, const string16& prompt_text,
bool suppress_js_messages);
NotificationRegistrar registrar_;
// An implementation of the client interface to provide supporting methods
// and receive results.
- JavaScriptAppModalDialogDelegate* delegate_;
+ content::JavaScriptDialogDelegate* delegate_;
+
+ // The extra Chrome-only data associated with the delegate_.
+ ChromeJavaScriptDialogExtraData* extra_data_;
// The client_ as an ExtensionHost, cached for use during notifications that
// may arrive after the client has entered its destructor (and is thus
@@ -116,7 +106,7 @@ class JavaScriptAppModalDialog : public AppModalDialog,
// Information about the message box is held in the following variables.
int dialog_flags_;
- std::wstring message_text_;
+ string16 message_text_;
string16 default_prompt_text_;
bool display_suppress_checkbox_;
bool is_before_unload_dialog_;

Powered by Google App Engine
This is Rietveld 408576698