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