Added browser test for interactively invoking the form repost warning dialog.

Bug: 683356
Change-Id: I290f7329f202285c0ed413472ca0e82d4c55754f
Reviewed-on: https://chromium-review.googlesource.com/829975
Commit-Queue: Allen Bauer <[email protected]>
Reviewed-by: Trent Apted <[email protected]>
Reviewed-by: Lei Zhang <[email protected]>
Cr-Commit-Position: refs/heads/master@{#527750}
diff --git a/chrome/browser/repost_form_warning_browsertest.cc b/chrome/browser/repost_form_warning_browsertest.cc
index b6c7468..d7566ad 100644
--- a/chrome/browser/repost_form_warning_browsertest.cc
+++ b/chrome/browser/repost_form_warning_browsertest.cc
@@ -2,10 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "build/build_config.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/test/test_browser_dialog.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
@@ -17,10 +19,26 @@
 
 using web_modal::WebContentsModalDialogManager;
 
-typedef InProcessBrowserTest RepostFormWarningTest;
+class RepostFormWarningTest : public DialogBrowserTest {
+ public:
+  RepostFormWarningTest() {}
+  ~RepostFormWarningTest() override {}
 
-// If becomes flaky, disable on Windows and use http://crbug.com/47228
-IN_PROC_BROWSER_TEST_F(RepostFormWarningTest, TestDoubleReload) {
+  // BrowserTestBase:
+  void SetUpOnMainThread() override;
+
+  // DialogBrowserTest:
+  void ShowUi(const std::string& name) override;
+
+ protected:
+  content::WebContents* TryReload();
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(RepostFormWarningTest);
+};
+
+void RepostFormWarningTest::SetUpOnMainThread() {
+  DialogBrowserTest::SetUpOnMainThread();
   ASSERT_TRUE(embedded_test_server()->Start());
 
   // Load a form.
@@ -28,14 +46,26 @@
                                embedded_test_server()->GetURL("/form.html"));
   // Submit it.
   ui_test_utils::NavigateToURL(
-      browser(),
-      GURL("javascript:document.getElementById('form').submit()"));
+      browser(), GURL("javascript:document.getElementById('form').submit()"));
+}
 
-  // Try to reload it twice, checking for repost.
+void RepostFormWarningTest::ShowUi(const std::string& name) {
+  TryReload();
+}
+
+content::WebContents* RepostFormWarningTest::TryReload() {
+  // Try to reload it, checking for repost.
   content::WebContents* web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
   web_contents->GetController().Reload(content::ReloadType::NORMAL, true);
-  web_contents->GetController().Reload(content::ReloadType::NORMAL, true);
+  return web_contents;
+}
+
+// If becomes flaky, disable on Windows and use http://crbug.com/47228
+IN_PROC_BROWSER_TEST_F(RepostFormWarningTest, TestDoubleReload) {
+  // Try to reload it twice, checking for repost.
+  content::WebContents* web_contents = TryReload();
+  TryReload();
 
   // There should only be one dialog open.
   WebContentsModalDialogManager* web_contents_modal_dialog_manager =
@@ -52,20 +82,8 @@
 
 // If becomes flaky, disable on Windows and use http://crbug.com/47228
 IN_PROC_BROWSER_TEST_F(RepostFormWarningTest, TestLoginAfterRepost) {
-  ASSERT_TRUE(embedded_test_server()->Start());
-
-  // Load a form.
-  ui_test_utils::NavigateToURL(browser(),
-                               embedded_test_server()->GetURL("/form.html"));
-  // Submit it.
-  ui_test_utils::NavigateToURL(
-      browser(),
-      GURL("javascript:document.getElementById('form').submit()"));
-
   // Try to reload it, checking for repost.
-  content::WebContents* web_contents =
-      browser()->tab_strip_model()->GetActiveWebContents();
-  web_contents->GetController().Reload(content::ReloadType::NORMAL, true);
+  content::WebContents* web_contents = TryReload();
 
   // Navigate to a page that requires authentication, bringing up another
   // tab-modal sheet.
@@ -90,3 +108,11 @@
       WindowOpenDisposition::CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false));
   navigation_observer.Wait();
 }
+
+// Disable on Mac OS until dialogs are using toolkit-views for MacViews project.
+// https://crbug.com/683356
+#if !defined(OS_MACOSX)
+IN_PROC_BROWSER_TEST_F(RepostFormWarningTest, InvokeUi_TestRepostWarning) {
+  ShowAndVerifyUi();
+}
+#endif