summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroshima <oshima@chromium.org>2014-10-24 07:14:32 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-24 14:14:55 +0000
commit82f7248c0e48ee71c4b78f9d305caefc7fa9bab2 (patch)
tree9ecd0cbb7fbb60805d3d82a466a969558632093e
parent2a1a687a8175495a41f32df456b03c227059616b (diff)
downloadchromium_src-82f7248c0e48ee71c4b78f9d305caefc7fa9bab2.zip
chromium_src-82f7248c0e48ee71c4b78f9d305caefc7fa9bab2.tar.gz
chromium_src-82f7248c0e48ee71c4b78f9d305caefc7fa9bab2.tar.bz2
Componentize app_modal_dialog
Notable changes (other than just moving code aruond) * kJavaScriptMessageExpectedDelay constant has been moved from chrome_constants to javascript_dialog_manager.cc because that's the only place used. * NOTIFICATION_APP_MODAL_DIALOG_SHOWN notification has been removed and replaced by test only waiter class. (as this notification was used only in tests) * Moved and creates string resource for app_modal_dialog. Next step: move dialog implementations to compoents/app_modal_dialogs (javascript_dialog_manager/ javascript_app_modal_dialogs_views/, javascript_app_modal_dialogs_cocoa ....) BUG=422092 TBR=sky@chromium.org Review URL: https://codereview.chromium.org/648833004 Cr-Commit-Position: refs/heads/master@{#301095}
-rw-r--r--chrome/app/generated_resources.grd45
-rw-r--r--chrome/browser/DEPS1
-rw-r--r--chrome/browser/chrome_notification_types.h6
-rw-r--r--chrome/browser/chromeos/login/signin/oauth2_browsertest.cc4
-rw-r--r--chrome/browser/devtools/devtools_sanity_browsertest.cc4
-rw-r--r--chrome/browser/extensions/alert_apitest.cc2
-rw-r--r--chrome/browser/extensions/lazy_background_page_apitest.cc2
-rw-r--r--chrome/browser/lifetime/browser_close_manager_browsertest.cc146
-rw-r--r--chrome/browser/ui/BUILD.gn1
-rw-r--r--chrome/browser/ui/android/javascript_app_modal_dialog_android.cc4
-rw-r--r--chrome/browser/ui/android/javascript_app_modal_dialog_android.h2
-rw-r--r--chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc23
-rw-r--r--chrome/browser/ui/browser_browsertest.cc8
-rw-r--r--chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.h3
-rw-r--r--chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.mm3
-rw-r--r--chrome/browser/ui/panels/panel_browsertest.cc4
-rw-r--r--chrome/browser/ui/views/frame/browser_view.cc4
-rw-r--r--chrome/browser/ui/views/javascript_app_modal_dialog_views.cc4
-rw-r--r--chrome/browser/ui/views/javascript_app_modal_dialog_views.h2
-rw-r--r--chrome/browser/unload_browsertest.cc4
-rw-r--r--chrome/chrome_browser_ui.gypi8
-rw-r--r--chrome/common/chrome_constants.cc2
-rw-r--r--chrome/common/chrome_constants.h5
-rw-r--r--chrome/test/base/ui_test_utils.cc44
-rw-r--r--components/OWNERS2
-rw-r--r--components/app_modal_dialogs.gypi36
-rw-r--r--components/app_modal_dialogs/BUILD.gn28
-rw-r--r--components/app_modal_dialogs/DEPS7
-rw-r--r--components/app_modal_dialogs/OWNERS1
-rw-r--r--components/app_modal_dialogs/app_modal_dialog.cc (renamed from chrome/browser/ui/app_modal_dialogs/app_modal_dialog.cc)32
-rw-r--r--components/app_modal_dialogs/app_modal_dialog.h (renamed from chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h)19
-rw-r--r--components/app_modal_dialogs/app_modal_dialog_queue.cc (renamed from chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.cc)4
-rw-r--r--components/app_modal_dialogs/app_modal_dialog_queue.h (renamed from chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h)6
-rw-r--r--components/app_modal_dialogs/javascript_app_modal_dialog.cc (renamed from chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc)5
-rw-r--r--components/app_modal_dialogs/javascript_app_modal_dialog.h (renamed from chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h)8
-rw-r--r--components/app_modal_dialogs/native_app_modal_dialog.h (renamed from chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h)7
-rw-r--r--components/app_modal_dialogs_strings.grdp49
-rw-r--r--components/components.gyp1
-rw-r--r--components/components_strings.grd1
39 files changed, 311 insertions, 226 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 2cf6426..95c5903 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -7176,23 +7176,6 @@ Keep your key file in a safe place. You will need it to create new versions of y
About Voice Search
</message>
- <!-- JavaScript Dialog Box strings -->
- <message name="IDS_JAVASCRIPT_ALERT_DEFAULT_TITLE" desc="Title for JavaScript alert originating from a webpage if there is no hostname to display">
- JavaScript Alert
- </message>
- <message name="IDS_JAVASCRIPT_MESSAGEBOX_DEFAULT_TITLE" desc="Title for JavaScript prompt and confirm originating from a webpage if there is no hostname to display">
- JavaScript
- </message>
- <message name="IDS_JAVASCRIPT_ALERT_TITLE" desc="Title for JavaScript alert originating from a webpage">
- The page at <ph name="SITE">$1<ex>http://www.google.com</ex></ph> says:
- </message>
- <message name="IDS_JAVASCRIPT_MESSAGEBOX_TITLE" desc="Title for JavaScript prompt and confirm originating from a webpage">
- The page at <ph name="SITE">$1<ex>http://www.google.com</ex></ph> says:
- </message>
- <message name="IDS_JAVASCRIPT_MESSAGEBOX_SUPPRESS_OPTION" desc="Optional UI shown on the message box, in the form of a checkbox, allowing the user to suppress additional message boxes from the page.">
- Prevent this page from creating additional dialogs.
- </message>
-
<!-- About box strings -->
<if expr="is_win">
<message name="IDS_ABOUT_BOX_ERROR_DURING_UPDATE_CHECK" desc="The error label for errors that occurred while checking for updates in the About box.">
@@ -7203,34 +7186,6 @@ Keep your key file in a safe place. You will need it to create new versions of y
</message>
</if>
- <!-- "Before Unload" Dialog Box strings -->
- <message name="IDS_BEFOREUNLOAD_MESSAGEBOX_TITLE" desc="Title for the 'before unload' dialog.">
- Confirm Navigation
- </message>
- <message name="IDS_BEFOREUNLOAD_MESSAGEBOX_FOOTER" desc="Text shown at the bottom of the dialog, after the message provided by the script.">
- Are you sure you want to leave this page?
- </message>
- <message name="IDS_BEFOREUNLOAD_MESSAGEBOX_OK_BUTTON_LABEL" desc="The text on the button which navigates the user away from the page.">
- Leave this Page
- </message>
- <message name="IDS_BEFOREUNLOAD_MESSAGEBOX_CANCEL_BUTTON_LABEL" desc="The text on the button which cancels the navigation away from the page.">
- Stay on this Page
- </message>
-
- <!-- "Before Reload" Dialog Box strings (same as "Before Unload" but when reloading rather than unloading the page -->
- <message name="IDS_BEFORERELOAD_MESSAGEBOX_TITLE" desc="Title for the 'before reload' dialog.">
- Confirm Reload
- </message>
- <message name="IDS_BEFORERELOAD_MESSAGEBOX_FOOTER" desc="Text shown at the bottom of the dialog, after the message provided by the script.">
- Are you sure you want to reload this page?
- </message>
- <message name="IDS_BEFORERELOAD_MESSAGEBOX_OK_BUTTON_LABEL" desc="The text on the button which reloads the page.">
- Reload this Page
- </message>
- <message name="IDS_BEFORERELOAD_MESSAGEBOX_CANCEL_BUTTON_LABEL" desc="The text on the button which cancels the page reload.">
- Don't Reload
- </message>
-
<!-- Omnibox -->
<if expr="not use_titlecase">
<message name="IDS_PASTE_AND_GO" desc="The text label of the Paste And Go menu item when the clipboard contains a URL">
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 8955447..f9572557 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -10,6 +10,7 @@ include_rules = [
"+chrome_elf/create_file",
"+chrome_elf/dll_hash",
"+chromeos",
+ "+components/app_modal_dialogs",
"+components/autofill/content/browser",
"+components/autofill/content/common",
"+components/autofill/core/browser",
diff --git a/chrome/browser/chrome_notification_types.h b/chrome/browser/chrome_notification_types.h
index 4a94b8b..9765dbc 100644
--- a/chrome/browser/chrome_notification_types.h
+++ b/chrome/browser/chrome_notification_types.h
@@ -124,12 +124,6 @@ enum NotificationType {
// handler. Use APP_TERMINATING for such needs.
NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST,
- // Application-modal dialogs -----------------------------------------------
-
- // Sent after an application-modal dialog has been shown. The source
- // is the dialog.
- NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
-
// This message is sent when a new InfoBar has been added to an
// InfoBarService. The source is a Source<InfoBarService> with a pointer to
// the InfoBarService the InfoBar was added to. The details is a
diff --git a/chrome/browser/chromeos/login/signin/oauth2_browsertest.cc b/chrome/browser/chromeos/login/signin/oauth2_browsertest.cc
index 721db65..5523b00 100644
--- a/chrome/browser/chromeos/login/signin/oauth2_browsertest.cc
+++ b/chrome/browser/chromeos/login/signin/oauth2_browsertest.cc
@@ -17,8 +17,6 @@
#include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
@@ -28,6 +26,8 @@
#include "chrome/test/base/ui_test_utils.h"
#include "chromeos/login/auth/key.h"
#include "chromeos/login/auth/user_context.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "components/user_manager/user.h"
#include "components/user_manager/user_manager.h"
diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc
index eb7d561..64de7c7 100644
--- a/chrome/browser/devtools/devtools_sanity_browsertest.cc
+++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc
@@ -21,8 +21,6 @@
#include "chrome/browser/extensions/unpacked_installer.h"
#include "chrome/browser/lifetime/application_lifetime.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_iterator.h"
@@ -34,6 +32,8 @@
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/test_switches.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "content/public/browser/child_process_data.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/devtools_agent_host.h"
diff --git a/chrome/browser/extensions/alert_apitest.cc b/chrome/browser/extensions/alert_apitest.cc
index 893a9b4..dbd7c55 100644
--- a/chrome/browser/extensions/alert_apitest.cc
+++ b/chrome/browser/extensions/alert_apitest.cc
@@ -5,9 +5,9 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
#include "content/public/browser/render_frame_host.h"
#include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_system.h"
diff --git a/chrome/browser/extensions/lazy_background_page_apitest.cc b/chrome/browser/extensions/lazy_background_page_apitest.cc
index 2438a5e..509db41 100644
--- a/chrome/browser/extensions/lazy_background_page_apitest.cc
+++ b/chrome/browser/extensions/lazy_background_page_apitest.cc
@@ -11,13 +11,13 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/lazy_background_page_test_util.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/location_bar/location_bar.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_utils.h"
#include "components/bookmarks/test/bookmark_test_helpers.h"
diff --git a/chrome/browser/lifetime/browser_close_manager_browsertest.cc b/chrome/browser/lifetime/browser_close_manager_browsertest.cc
index dd5fae9..c0768e7 100644
--- a/chrome/browser/lifetime/browser_close_manager_browsertest.cc
+++ b/chrome/browser/lifetime/browser_close_manager_browsertest.cc
@@ -21,8 +21,6 @@
#include "chrome/browser/prefs/session_startup_pref.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_iterator.h"
@@ -32,6 +30,8 @@
#include "chrome/common/url_constants.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/download_item.h"
#include "content/public/browser/download_manager.h"
@@ -49,50 +49,22 @@
namespace {
-class AppModalDialogObserver {
- public:
- AppModalDialogObserver() {}
-
- void Start() {
- observer_.reset(new content::WindowedNotificationObserver(
- chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
- content::NotificationService::AllSources()));
- }
-
- void AcceptClose() {
- NativeAppModalDialog* dialog = GetNextDialog();
- ASSERT_TRUE(dialog);
- dialog->AcceptAppModalDialog();
- }
-
- void CancelClose() {
- NativeAppModalDialog* dialog = GetNextDialog();
- ASSERT_TRUE(dialog);
- dialog->CancelAppModalDialog();
- }
-
- private:
- NativeAppModalDialog* GetNextDialog() {
- DCHECK(observer_);
- observer_->Wait();
- if (observer_->source() == content::NotificationService::AllSources())
- return NULL;
-
- AppModalDialog* dialog =
- content::Source<AppModalDialog>(observer_->source()).ptr();
- EXPECT_TRUE(dialog->IsJavaScriptModalDialog());
- JavaScriptAppModalDialog* js_dialog =
- static_cast<JavaScriptAppModalDialog*>(dialog);
- observer_.reset(new content::WindowedNotificationObserver(
- chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
- content::NotificationService::AllSources()));
- return js_dialog->native_dialog();
- }
+NativeAppModalDialog* GetNextDialog() {
+ AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
+ EXPECT_TRUE(dialog->IsJavaScriptModalDialog());
+ JavaScriptAppModalDialog* js_dialog =
+ static_cast<JavaScriptAppModalDialog*>(dialog);
+ CHECK(js_dialog->native_dialog());
+ return js_dialog->native_dialog();
+}
- scoped_ptr<content::WindowedNotificationObserver> observer_;
+void AcceptClose() {
+ GetNextDialog()->AcceptAppModalDialog();
+}
- DISALLOW_COPY_AND_ASSIGN(AppModalDialogObserver);
-};
+void CancelClose() {
+ GetNextDialog()->CancelAppModalDialog();
+}
class RepeatedNotificationObserver : public content::NotificationObserver {
public:
@@ -242,7 +214,6 @@ class BrowserCloseManagerBrowserTest
SessionStartupPref::SetStartupPref(
browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
browsers_.push_back(browser());
- dialogs_.Start();
content::BrowserThread::PostTask(
content::BrowserThread::IO,
FROM_HERE,
@@ -273,7 +244,6 @@ class BrowserCloseManagerBrowserTest
}
std::vector<Browser*> browsers_;
- AppModalDialogObserver dialogs_;
};
IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) {
@@ -283,7 +253,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) {
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browser()->tab_strip_model()->count());
@@ -291,7 +261,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) {
RepeatedNotificationObserver close_observer(
chrome::NOTIFICATION_BROWSER_CLOSED, 1);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
@@ -306,7 +276,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit();
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browser()->tab_strip_model()->count());
@@ -315,7 +285,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
chrome::NOTIFICATION_BROWSER_CLOSED, 1);
chrome::CloseAllBrowsersAndQuit();
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
@@ -331,7 +301,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, PRE_TestSessionRestore) {
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
@@ -344,7 +314,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, PRE_TestSessionRestore) {
GURL(chrome::kChromeUIVersionURL),
CURRENT_TAB,
ui_test_utils::BROWSER_TEST_NONE));
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
navigation_observer.Wait();
RepeatedNotificationObserver close_observer(
@@ -381,7 +351,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) {
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
}
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
@@ -393,8 +363,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) {
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
}
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
@@ -405,8 +375,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) {
RepeatedNotificationObserver close_observer(
chrome::NOTIFICATION_BROWSER_CLOSED, 2);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
@@ -438,7 +408,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
// All tabs should still be open.
@@ -447,7 +417,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
RepeatedNotificationObserver close_observer(
chrome::NOTIFICATION_BROWSER_CLOSED, 1);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
@@ -471,7 +441,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
// All windows should still be open.
@@ -482,7 +452,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
RepeatedNotificationObserver close_observer(
chrome::NOTIFICATION_BROWSER_CLOSED, 3);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
@@ -499,7 +469,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
chrome::NOTIFICATION_BROWSER_CLOSED, 2);
chrome::CloseAllBrowsersAndQuit();
browsers_.push_back(CreateBrowser(browser()->profile()));
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
@@ -519,8 +489,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
browsers_.push_back(CreateBrowser(browser()->profile()));
ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
@@ -530,8 +500,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
RepeatedNotificationObserver close_observer(
chrome::NOTIFICATION_BROWSER_CLOSED, 2);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
@@ -550,10 +520,10 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
RepeatedNotificationObserver close_observer(
chrome::NOTIFICATION_BROWSER_CLOSED, 2);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
AddBlankTabAndShow(browsers_[0]);
AddBlankTabAndShow(browsers_[1]);
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
@@ -572,15 +542,15 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
RepeatedNotificationObserver cancel_observer(
chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
AddBlankTabAndShow(browsers_[0]);
ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
AddBlankTabAndShow(browsers_[1]);
ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count());
@@ -589,10 +559,10 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
RepeatedNotificationObserver close_observer(
chrome::NOTIFICATION_BROWSER_CLOSED, 2);
chrome::CloseAllBrowsersAndQuit();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
@@ -612,8 +582,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
browsers_[1]->tab_strip_model()->CloseAllTabs();
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
@@ -623,8 +593,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
chrome::NOTIFICATION_BROWSER_CLOSED, 2);
chrome::CloseAllBrowsersAndQuit();
browsers_[1]->tab_strip_model()->CloseAllTabs();
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
@@ -652,8 +622,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
@@ -663,8 +633,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
chrome::NOTIFICATION_BROWSER_CLOSED, 2);
chrome::CloseAllBrowsersAndQuit();
ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
@@ -684,7 +654,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
chrome::CloseAllBrowsersAndQuit();
ASSERT_FALSE(browsers_[0]->ShouldCloseWindow());
- ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose());
+ ASSERT_NO_FATAL_FAILURE(CancelClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
@@ -694,8 +664,8 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
chrome::NOTIFICATION_BROWSER_CLOSED, 2);
chrome::CloseAllBrowsersAndQuit();
ASSERT_FALSE(browsers_[0]->ShouldCloseWindow());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
@@ -871,7 +841,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest,
content::NotificationService::AllSources());
TestBrowserCloseManager::AttemptClose(
TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE);
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
cancel_observer.Wait();
EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
@@ -879,7 +849,7 @@ IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest,
chrome::NOTIFICATION_BROWSER_CLOSED, 1);
TestBrowserCloseManager::AttemptClose(
TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE);
- ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose());
+ ASSERT_NO_FATAL_FAILURE(AcceptClose());
close_observer.Wait();
EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
EXPECT_TRUE(chrome::BrowserIterator().done());
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 7bb0671d..cb1fa28 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -46,6 +46,7 @@ static_library("ui") {
"//chrome/browser/net:cert_logger_proto",
"//chrome/common",
"//chrome/common/net",
+ "//components/app_modal_dialogs",
"//components/auto_login_parser",
"//components/dom_distiller/webui",
"//components/feedback/proto",
diff --git a/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc b/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc
index 0cdc5f4..3c7331f 100644
--- a/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc
+++ b/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc
@@ -9,8 +9,8 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "components/app_modal_dialogs/app_modal_dialog_queue.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/javascript_message_type.h"
diff --git a/chrome/browser/ui/android/javascript_app_modal_dialog_android.h b/chrome/browser/ui/android/javascript_app_modal_dialog_android.h
index 5a731d1..af2ede5 100644
--- a/chrome/browser/ui/android/javascript_app_modal_dialog_android.h
+++ b/chrome/browser/ui/android/javascript_app_modal_dialog_android.h
@@ -8,7 +8,7 @@
#include "base/android/jni_weak_ref.h"
#include "base/android/scoped_java_ref.h"
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
class JavaScriptAppModalDialog;
diff --git a/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc b/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc
index e807582..d6c74a8 100644
--- a/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc
+++ b/chrome/browser/ui/app_modal_dialogs/javascript_dialog_manager.cc
@@ -9,16 +9,14 @@
#include "base/i18n/rtl.h"
#include "base/memory/singleton.h"
#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
-#include "chrome/common/chrome_constants.h"
-#include "chrome/grit/generated_resources.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
+#include "components/app_modal_dialogs/app_modal_dialog_queue.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_client.h"
#include "content/public/common/javascript_message_type.h"
+#include "grit/components_strings.h"
#include "net/base/net_util.h"
#include "ui/base/l10n/l10n_util.h"
@@ -171,11 +169,14 @@ void ChromeJavaScriptDialogManager::RunJavaScriptDialog(
base::TimeDelta time_since_last_message = base::TimeTicks::Now() -
extra_data->last_javascript_message_dismissal_;
bool display_suppress_checkbox = false;
- // Show a checkbox offering to suppress further messages if this message is
- // being displayed within kJavaScriptMessageExpectedDelay of the last one.
+ // If a WebContents is impolite and displays a second JavaScript
+ // alert within kJavaScriptMessageExpectedDelay of a previous
+ // JavaScript alert being dismissed, show a checkbox offering to
+ // suppress future alerts from this WebContents.
+ const int kJavaScriptMessageExpectedDelay = 1000;
+
if (time_since_last_message <
- base::TimeDelta::FromMilliseconds(
- chrome::kJavaScriptMessageExpectedDelay)) {
+ base::TimeDelta::FromMilliseconds(kJavaScriptMessageExpectedDelay)) {
display_suppress_checkbox = true;
} else {
display_suppress_checkbox = false;
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc
index cbff1c9..54acd9c 100644
--- a/chrome/browser/ui/browser_browsertest.cc
+++ b/chrome/browser/ui/browser_browsertest.cc
@@ -32,10 +32,6 @@
#include "chrome/browser/sessions/session_service_factory.h"
#include "chrome/browser/translate/chrome_translate_client.h"
#include "chrome/browser/translate/cld_data_harness.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/browser_commands.h"
@@ -60,6 +56,10 @@
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/test_switches.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
+#include "components/app_modal_dialogs/app_modal_dialog_queue.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "components/translate/core/browser/language_state.h"
#include "components/translate/core/common/language_detection_details.h"
#include "content/public/browser/favicon_status.h"
diff --git a/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.h b/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.h
index 459dff4..b300180 100644
--- a/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.h
+++ b/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.h
@@ -5,11 +5,10 @@
#ifndef CHROME_BROWSER_UI_COCOA_JAVASCRIPT_APP_MODAL_DIALOG_COCOA_H_
#define CHROME_BROWSER_UI_COCOA_JAVASCRIPT_APP_MODAL_DIALOG_COCOA_H_
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
-
#include "base/logging.h"
#include "base/mac/scoped_nsobject.h"
#include "base/memory/scoped_ptr.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#if __OBJC__
@class NSAlert;
diff --git a/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.mm b/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.mm
index 6ef8729..37c4ad7 100644
--- a/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.mm
+++ b/chrome/browser/ui/cocoa/javascript_app_modal_dialog_cocoa.mm
@@ -11,8 +11,9 @@
#import "base/mac/foundation_util.h"
#include "base/strings/sys_string_conversions.h"
#import "chrome/browser/chrome_browser_application_mac.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
#include "chrome/grit/generated_resources.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "grit/components_strings.h"
#include "ui/base/l10n/l10n_util_mac.h"
#include "ui/base/ui_base_types.h"
#include "ui/gfx/text_elider.h"
diff --git a/chrome/browser/ui/panels/panel_browsertest.cc b/chrome/browser/ui/panels/panel_browsertest.cc
index 24dc3c0..2873a7b 100644
--- a/chrome/browser/ui/panels/panel_browsertest.cc
+++ b/chrome/browser/ui/panels/panel_browsertest.cc
@@ -12,8 +12,6 @@
#include "chrome/browser/net/url_request_mock_util.h"
#include "chrome/browser/prefs/browser_prefs.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -31,6 +29,8 @@
#include "chrome/common/url_constants.h"
#include "chrome/test/base/interactive_test_utils.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index bc84ca9..b6c4a17 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -37,8 +37,6 @@
#include "chrome/browser/themes/theme_properties.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/browser/translate/chrome_translate_client.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
#include "chrome/browser/ui/bookmarks/bookmark_bar_constants.h"
#include "chrome/browser/ui/bookmarks/bookmark_bubble_delegate.h"
#include "chrome/browser/ui/bookmarks/bookmark_bubble_sign_in_delegate.h"
@@ -100,6 +98,8 @@
#include "chrome/grit/chromium_strings.h"
#include "chrome/grit/generated_resources.h"
#include "chrome/grit/locale_settings.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
+#include "components/app_modal_dialogs/app_modal_dialog_queue.h"
#include "components/signin/core/common/profile_management_switches.h"
#include "components/translate/core/browser/language_state.h"
#include "content/app/resources/grit/content_resources.h"
diff --git a/chrome/browser/ui/views/javascript_app_modal_dialog_views.cc b/chrome/browser/ui/views/javascript_app_modal_dialog_views.cc
index adfcac3..a237c54 100644
--- a/chrome/browser/ui/views/javascript_app_modal_dialog_views.cc
+++ b/chrome/browser/ui/views/javascript_app_modal_dialog_views.cc
@@ -5,9 +5,9 @@
#include "chrome/browser/ui/views/javascript_app_modal_dialog_views.h"
#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
#include "chrome/browser/ui/views/constrained_window_views.h"
-#include "chrome/grit/generated_resources.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "grit/components_strings.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/events/keycodes/keyboard_codes.h"
#include "ui/views/controls/message_box_view.h"
diff --git a/chrome/browser/ui/views/javascript_app_modal_dialog_views.h b/chrome/browser/ui/views/javascript_app_modal_dialog_views.h
index b8f86c9..e7efd9f 100644
--- a/chrome/browser/ui/views/javascript_app_modal_dialog_views.h
+++ b/chrome/browser/ui/views/javascript_app_modal_dialog_views.h
@@ -6,7 +6,7 @@
#define CHROME_BROWSER_UI_VIEWS_JAVASCRIPT_APP_MODAL_DIALOG_VIEWS_H_
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "ui/views/window/dialog_delegate.h"
class JavaScriptAppModalDialog;
diff --git a/chrome/browser/unload_browsertest.cc b/chrome/browser/unload_browsertest.cc
index 4481adf..2378f02 100644
--- a/chrome/browser/unload_browsertest.cc
+++ b/chrome/browser/unload_browsertest.cc
@@ -11,8 +11,6 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/net/url_request_mock_util.h"
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_list.h"
@@ -20,6 +18,8 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi
index 67488b9..a2bad5b 100644
--- a/chrome/chrome_browser_ui.gypi
+++ b/chrome/chrome_browser_ui.gypi
@@ -69,15 +69,8 @@
'browser/ui/app_list/app_list_util.cc',
'browser/ui/app_list/app_list_util.h',
# All other browser/ui/app_list files go in chrome_browser_ui_app_list_sources.
- 'browser/ui/app_modal_dialogs/app_modal_dialog.cc',
- 'browser/ui/app_modal_dialogs/app_modal_dialog.h',
- 'browser/ui/app_modal_dialogs/app_modal_dialog_queue.cc',
- 'browser/ui/app_modal_dialogs/app_modal_dialog_queue.h',
- 'browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc',
- 'browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h',
'browser/ui/app_modal_dialogs/javascript_dialog_manager.cc',
'browser/ui/app_modal_dialogs/javascript_dialog_manager.h',
- 'browser/ui/app_modal_dialogs/native_app_modal_dialog.h',
'browser/ui/autofill/autofill_dialog_controller.cc',
'browser/ui/autofill/autofill_dialog_controller.h',
'browser/ui/autofill/autofill_dialog_models.cc',
@@ -2639,6 +2632,7 @@
'chrome_web_ui_mojo_bindings.gyp:web_ui_mojo_bindings',
'debugger',
'installer_util',
+ '../components/components.gyp:app_modal_dialogs',
'../components/components.gyp:autofill_content_risk_proto',
'../components/components.gyp:translate_content_common',
'../content/app/resources/content_resources.gyp:content_resources',
diff --git a/chrome/common/chrome_constants.cc b/chrome/common/chrome_constants.cc
index 1b0b5cc..66501e2 100644
--- a/chrome/common/chrome_constants.cc
+++ b/chrome/common/chrome_constants.cc
@@ -214,8 +214,6 @@ const wchar_t kUserDataDirname[] = L"User Data";
const bool kRecordModeEnabled = true;
-const int kJavaScriptMessageExpectedDelay = 1000;
-
#if defined(OS_ANDROID) || defined(OS_IOS)
const bool kEnableTouchIcon = true;
#else
diff --git a/chrome/common/chrome_constants.h b/chrome/common/chrome_constants.h
index 3d2fd7b5..ca4bc86 100644
--- a/chrome/common/chrome_constants.h
+++ b/chrome/common/chrome_constants.h
@@ -109,11 +109,6 @@ extern const wchar_t kUserDataDirname[];
extern const bool kRecordModeEnabled;
-// If a WebContents is impolite and displays a second JavaScript alert within
-// kJavaScriptMessageExpectedDelay of a previous JavaScript alert being
-// dismissed, display an option to suppress future alerts from this WebContents.
-extern const int kJavaScriptMessageExpectedDelay;
-
// Are touch icons enabled? False by default.
extern const bool kEnableTouchIcon;
diff --git a/chrome/test/base/ui_test_utils.cc b/chrome/test/base/ui_test_utils.cc
index e017345..64f5115 100644
--- a/chrome/test/base/ui_test_utils.cc
+++ b/chrome/test/base/ui_test_utils.cc
@@ -30,8 +30,6 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -48,6 +46,8 @@
#include "chrome/common/chrome_paths.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/find_in_page_observer.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
+#include "components/app_modal_dialogs/app_modal_dialog_queue.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/search_engines/template_url_service.h"
#include "content/public/browser/dom_operation_notification_details.h"
@@ -107,6 +107,38 @@ Browser* WaitForBrowserNotInSet(std::set<Browser*> excluded_browsers) {
return new_browser;
}
+class AppModalDialogWaiter : public AppModalDialogObserver {
+ public:
+ AppModalDialogWaiter()
+ : dialog_(NULL) {
+ }
+ ~AppModalDialogWaiter() override {
+ }
+
+ AppModalDialog* Wait() {
+ if (dialog_)
+ return dialog_;
+ message_loop_runner_ = new content::MessageLoopRunner;
+ message_loop_runner_->Run();
+ EXPECT_TRUE(dialog_);
+ return dialog_;
+ }
+
+ // AppModalDialogWaiter:
+ virtual void Notify(AppModalDialog* dialog) override {
+ DCHECK(!dialog_);
+ dialog_ = dialog;
+ if (message_loop_runner_.get() && message_loop_runner_->loop_running())
+ message_loop_runner_->Quit();
+ }
+
+ private:
+ AppModalDialog* dialog_;
+ scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
+
+ DISALLOW_COPY_AND_ASSIGN(AppModalDialogWaiter);
+};
+
} // namespace
bool GetCurrentTabTitle(const Browser* browser, base::string16* title) {
@@ -296,12 +328,8 @@ AppModalDialog* WaitForAppModalDialog() {
AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance();
if (dialog_queue->HasActiveDialog())
return dialog_queue->active_dialog();
-
- content::WindowedNotificationObserver observer(
- chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
- content::NotificationService::AllSources());
- observer.Wait();
- return content::Source<AppModalDialog>(observer.source()).ptr();
+ AppModalDialogWaiter waiter;
+ return waiter.Wait();
}
int FindInPage(WebContents* tab,
diff --git a/components/OWNERS b/components/OWNERS
index 2c0b9f2..5f683e7 100644
--- a/components/OWNERS
+++ b/components/OWNERS
@@ -3,6 +3,8 @@ caitkp@chromium.org
erikwright@chromium.org
jochen@chromium.org
+per-file app_modal_dialog*=avi@chromium.org
+
# Can not match autofill* due to crbug.com/397984
per-file autofill.gypi=estade@chromium.org
per-file autofill.gypi=isherman@chromium.org
diff --git a/components/app_modal_dialogs.gypi b/components/app_modal_dialogs.gypi
new file mode 100644
index 0000000..df3c3ec7
--- /dev/null
+++ b/components/app_modal_dialogs.gypi
@@ -0,0 +1,36 @@
+# Copyright 2014 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.
+{
+ 'targets': [
+ {
+ 'target_name': 'app_modal_dialogs',
+ 'type': 'static_library',
+ 'dependencies': [
+ '../skia/skia.gyp:skia',
+ '../content/content.gyp:content_browser',
+ 'components_strings.gyp:components_strings',
+ ],
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'app_modal_dialogs/app_modal_dialog.cc',
+ 'app_modal_dialogs/app_modal_dialog.h',
+ 'app_modal_dialogs/app_modal_dialog_test_util.h',
+ 'app_modal_dialogs/app_modal_dialog_queue.cc',
+ 'app_modal_dialogs/app_modal_dialog_queue.h',
+ 'app_modal_dialogs/javascript_app_modal_dialog.cc',
+ 'app_modal_dialogs/javascript_app_modal_dialog.h',
+ 'app_modal_dialogs/native_app_modal_dialog.h'
+ ],
+ 'conditions': [
+ ['use_aura==1',{
+ 'dependencies': [
+ '../ui/aura/aura.gyp:aura',
+ ],
+ }]
+ ],
+ },
+ ],
+}
diff --git a/components/app_modal_dialogs/BUILD.gn b/components/app_modal_dialogs/BUILD.gn
new file mode 100644
index 0000000..34d10af
--- /dev/null
+++ b/components/app_modal_dialogs/BUILD.gn
@@ -0,0 +1,28 @@
+# Copyright 2014 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.
+
+import("//build/config/ui.gni")
+
+static_library("app_modal_dialogs") {
+ sources = [
+ "app_modal_dialog.cc",
+ "app_modal_dialog.h",
+ "app_modal_dialog_test_util.h",
+ "app_modal_dialog_queue.cc",
+ "app_modal_dialog_queue.h",
+ "javascript_app_modal_dialog.cc",
+ "javascript_app_modal_dialog.h",
+ "native_app_modal_dialog.h"
+ ]
+
+ deps = [
+ "//components/strings",
+ "//content/public/browser",
+ "//skia",
+ ]
+
+ if (use_aura) {
+ deps += [ "//ui/aura" ]
+ }
+}
diff --git a/components/app_modal_dialogs/DEPS b/components/app_modal_dialogs/DEPS
new file mode 100644
index 0000000..9faf2b4
--- /dev/null
+++ b/components/app_modal_dialogs/DEPS
@@ -0,0 +1,7 @@
+include_rules = [
+ "+content/public/browser",
+ "+grit/components_strings.h",
+ "+net/base",
+ "+ui/aura",
+ "+ui/gfx",
+]
diff --git a/components/app_modal_dialogs/OWNERS b/components/app_modal_dialogs/OWNERS
new file mode 100644
index 0000000..704db9f
--- /dev/null
+++ b/components/app_modal_dialogs/OWNERS
@@ -0,0 +1 @@
+avi@chromium.org
diff --git a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog.cc b/components/app_modal_dialogs/app_modal_dialog.cc
index edd9457..7156520 100644
--- a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog.cc
+++ b/components/app_modal_dialogs/app_modal_dialog.cc
@@ -2,18 +2,33 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
#include "base/logging.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
-#include "content/public/browser/notification_service.h"
+#include "base/run_loop.h"
+#include "components/app_modal_dialogs/app_modal_dialog_queue.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
using content::WebContents;
+namespace {
+
+AppModalDialogObserver* app_modal_dialog_observer = NULL;
+
+} // namespace
+
+AppModalDialogObserver::AppModalDialogObserver() {
+ DCHECK(!app_modal_dialog_observer);
+ app_modal_dialog_observer = this;
+}
+
+AppModalDialogObserver::~AppModalDialogObserver() {
+ DCHECK(app_modal_dialog_observer);
+ app_modal_dialog_observer = NULL;
+}
+
AppModalDialog::AppModalDialog(WebContents* web_contents,
const base::string16& title)
: title_(title),
@@ -30,11 +45,8 @@ AppModalDialog::~AppModalDialog() {
void AppModalDialog::ShowModalDialog() {
web_contents_->GetDelegate()->ActivateContents(web_contents_);
CreateAndShowDialog();
-
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
- content::Source<AppModalDialog>(this),
- content::NotificationService::NoDetails());
+ if (app_modal_dialog_observer)
+ app_modal_dialog_observer->Notify(this);
}
void AppModalDialog::CreateAndShowDialog() {
diff --git a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h b/components/app_modal_dialogs/app_modal_dialog.h
index 28cf584..12d7f5c 100644
--- a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h
+++ b/components/app_modal_dialogs/app_modal_dialog.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_UI_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_H_
-#define CHROME_BROWSER_UI_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_H_
+#ifndef COMPONENTS_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_H_
+#define COMPONENTS_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_H_
#include <string>
@@ -89,4 +89,17 @@ class AppModalDialog {
DISALLOW_COPY_AND_ASSIGN(AppModalDialog);
};
-#endif // CHROME_BROWSER_UI_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_H_
+// An interface to observe that a modal dialog is shown.
+class AppModalDialogObserver {
+ public:
+ AppModalDialogObserver();
+ virtual ~AppModalDialogObserver();
+
+ // Called when the modal dialog is shown.
+ virtual void Notify(AppModalDialog* dialog) = 0;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(AppModalDialogObserver);
+};
+
+#endif // COMPONENTS_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_H_
diff --git a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.cc b/components/app_modal_dialogs/app_modal_dialog_queue.cc
index 99af7ad..effacb9 100644
--- a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.cc
+++ b/components/app_modal_dialogs/app_modal_dialog_queue.cc
@@ -2,10 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
+#include "components/app_modal_dialogs/app_modal_dialog_queue.h"
#include "base/memory/singleton.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
// static
AppModalDialogQueue* AppModalDialogQueue::GetInstance() {
diff --git a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h b/components/app_modal_dialogs/app_modal_dialog_queue.h
index 5f4eb9a..aca8a23a 100644
--- a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h
+++ b/components/app_modal_dialogs/app_modal_dialog_queue.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_UI_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_QUEUE_H_
-#define CHROME_BROWSER_UI_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_QUEUE_H_
+#ifndef COMPONENTS_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_QUEUE_H_
+#define COMPONENTS_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_QUEUE_H_
#include <deque>
@@ -86,4 +86,4 @@ class AppModalDialogQueue {
DISALLOW_COPY_AND_ASSIGN(AppModalDialogQueue);
};
-#endif // CHROME_BROWSER_UI_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_QUEUE_H_
+#endif // COMPONENTS_APP_MODAL_DIALOGS_APP_MODAL_DIALOG_QUEUE_H_
diff --git a/chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc b/components/app_modal_dialogs/javascript_app_modal_dialog.cc
index a037376..99adc4b 100644
--- a/chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc
+++ b/components/app_modal_dialogs/javascript_app_modal_dialog.cc
@@ -2,10 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
+#include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
-#include "chrome/browser/browser_shutdown.h"
-#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
+#include "components/app_modal_dialogs/native_app_modal_dialog.h"
#include "content/public/browser/web_contents.h"
#include "ui/gfx/text_elider.h"
diff --git a/chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h b/components/app_modal_dialogs/javascript_app_modal_dialog.h
index 87dd203..6fb0777 100644
--- a/chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h
+++ b/components/app_modal_dialogs/javascript_app_modal_dialog.h
@@ -2,15 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_UI_APP_MODAL_DIALOGS_JAVASCRIPT_APP_MODAL_DIALOG_H_
-#define CHROME_BROWSER_UI_APP_MODAL_DIALOGS_JAVASCRIPT_APP_MODAL_DIALOG_H_
+#ifndef COMPONENTS_APP_MODAL_DIALOGS_JAVASCRIPT_APP_MODAL_DIALOG_H_
+#define COMPONENTS_APP_MODAL_DIALOGS_JAVASCRIPT_APP_MODAL_DIALOG_H_
#include <map>
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/time/time.h"
-#include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
+#include "components/app_modal_dialogs/app_modal_dialog.h"
#include "content/public/browser/javascript_dialog_manager.h"
// Extra data for JavaScript dialogs to add Chrome-only features.
@@ -98,4 +98,4 @@ class JavaScriptAppModalDialog : public AppModalDialog {
DISALLOW_COPY_AND_ASSIGN(JavaScriptAppModalDialog);
};
-#endif // CHROME_BROWSER_UI_APP_MODAL_DIALOGS_JAVASCRIPT_APP_MODAL_DIALOG_H_
+#endif // COMPONENTS_APP_MODAL_DIALOGS_JAVASCRIPT_APP_MODAL_DIALOG_H_
diff --git a/chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h b/components/app_modal_dialogs/native_app_modal_dialog.h
index 6fe82f8..88db763 100644
--- a/chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h
+++ b/components/app_modal_dialogs/native_app_modal_dialog.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_UI_APP_MODAL_DIALOGS_NATIVE_APP_MODAL_DIALOG_H_
-#define CHROME_BROWSER_UI_APP_MODAL_DIALOGS_NATIVE_APP_MODAL_DIALOG_H_
+#ifndef COMPONENTS_APP_MODAL_DIALOGS_NATIVE_APP_MODAL_DIALOG_H_
+#define COMPONENTS_APP_MODAL_DIALOGS_NATIVE_APP_MODAL_DIALOG_H_
#include "ui/gfx/native_widget_types.h"
@@ -34,5 +34,4 @@ class NativeAppModalDialog {
gfx::NativeWindow parent_window);
};
-#endif // CHROME_BROWSER_UI_APP_MODAL_DIALOGS_NATIVE_APP_MODAL_DIALOG_H_
-
+#endif // COMPONENTS_APP_MODAL_DIALOGS_NATIVE_APP_MODAL_DIALOG_H_
diff --git a/components/app_modal_dialogs_strings.grdp b/components/app_modal_dialogs_strings.grdp
new file mode 100644
index 0000000..f1e413c
--- /dev/null
+++ b/components/app_modal_dialogs_strings.grdp
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+
+ <!-- JavaScript Dialog Box strings -->
+ <message name="IDS_JAVASCRIPT_ALERT_DEFAULT_TITLE" desc="Title for JavaScript alert originating from a webpage if there is no hostname to display">
+ JavaScript Alert
+ </message>
+ <message name="IDS_JAVASCRIPT_MESSAGEBOX_DEFAULT_TITLE" desc="Title for JavaScript prompt and confirm originating from a webpage if there is no hostname to display">
+ JavaScript
+ </message>
+ <message name="IDS_JAVASCRIPT_ALERT_TITLE" desc="Title for JavaScript alert originating from a webpage">
+ The page at <ph name="SITE">$1<ex>http://www.google.com</ex></ph> says:
+ </message>
+ <message name="IDS_JAVASCRIPT_MESSAGEBOX_TITLE" desc="Title for JavaScript prompt and confirm originating from a webpage">
+ The page at <ph name="SITE">$1<ex>http://www.google.com</ex></ph> says:
+ </message>
+ <message name="IDS_JAVASCRIPT_MESSAGEBOX_SUPPRESS_OPTION" desc="Optional UI shown on the message box, in the form of a checkbox, allowing the user to suppress additional message boxes from the page.">
+ Prevent this page from creating additional dialogs.
+ </message>
+
+ <!-- "Before Unload" Dialog Box strings -->
+ <message name="IDS_BEFOREUNLOAD_MESSAGEBOX_TITLE" desc="Title for the 'before unload' dialog.">
+ Confirm Navigation
+ </message>
+ <message name="IDS_BEFOREUNLOAD_MESSAGEBOX_FOOTER" desc="Text shown at the bottom of the dialog, after the message provided by the script.">
+ Are you sure you want to leave this page?
+ </message>
+ <message name="IDS_BEFOREUNLOAD_MESSAGEBOX_OK_BUTTON_LABEL" desc="The text on the button which navigates the user away from the page.">
+ Leave this Page
+ </message>
+ <message name="IDS_BEFOREUNLOAD_MESSAGEBOX_CANCEL_BUTTON_LABEL" desc="The text on the button which cancels the navigation away from the page.">
+ Stay on this Page
+ </message>
+
+ <!-- "Before Reload" Dialog Box strings (same as "Before Unload" but when reloading rather than unloading the page -->
+ <message name="IDS_BEFORERELOAD_MESSAGEBOX_TITLE" desc="Title for the 'before reload' dialog.">
+ Confirm Reload
+ </message>
+ <message name="IDS_BEFORERELOAD_MESSAGEBOX_FOOTER" desc="Text shown at the bottom of the dialog, after the message provided by the script.">
+ Are you sure you want to reload this page?
+ </message>
+ <message name="IDS_BEFORERELOAD_MESSAGEBOX_OK_BUTTON_LABEL" desc="The text on the button which reloads the page.">
+ Reload this Page
+ </message>
+ <message name="IDS_BEFORERELOAD_MESSAGEBOX_CANCEL_BUTTON_LABEL" desc="The text on the button which cancels the page reload.">
+ Don't Reload
+ </message>
+
+</grit-part>
diff --git a/components/components.gyp b/components/components.gyp
index 8f1dba5..a468b7c 100644
--- a/components/components.gyp
+++ b/components/components.gyp
@@ -62,6 +62,7 @@
'conditions': [
['OS != "ios"', {
'includes': [
+ 'app_modal_dialogs.gypi',
'cdm.gypi',
'copresence_sockets.gypi',
'navigation_interception.gypi',
diff --git a/components/components_strings.grd b/components/components_strings.grd
index 3c8437c..7cc8583 100644
--- a/components/components_strings.grd
+++ b/components/components_strings.grd
@@ -167,6 +167,7 @@
</translations>
<release seq="1" allow_pseudo="false">
<messages fallback_to_english="true">
+ <part file="app_modal_dialogs_strings.grdp" />
<part file="autofill_strings.grdp" />
<part file="bookmark_bar_strings.grdp" />
<part file="dom_distiller_strings.grdp" />