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
[email protected]

Review URL: https://codereview.chromium.org/648833004

Cr-Commit-Position: refs/heads/master@{#301095}
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() {}
+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();
+}
 
-  void Start() {
-    observer_.reset(new content::WindowedNotificationObserver(
-        chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
-        content::NotificationService::AllSources()));
-  }
+void AcceptClose() {
+  GetNextDialog()->AcceptAppModalDialog();
+}
 
-  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();
-  }
-
-  scoped_ptr<content::WindowedNotificationObserver> observer_;
-
-  DISALLOW_COPY_AND_ASSIGN(AppModalDialogObserver);
-};
+void CancelClose() {
+  GetNextDialog()->CancelAppModalDialog();
+}
 
 class RepeatedNotificationObserver : public content::NotificationObserver {
  public:
@@ -242,7 +214,6 @@
     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 @@
   }
 
   std::vector<Browser*> browsers_;
-  AppModalDialogObserver dialogs_;
 };
 
 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) {
@@ -283,7 +253,7 @@
   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 @@
   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 @@
       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 @@
       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 @@
   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 @@
                                    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 @@
     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 @@
     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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 @@
       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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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 @@
       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 @@
   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 @@
       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 @@
   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 @@
       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 @@
       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 @@
       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());