Index: chrome/browser/ui/browser_browsertest.cc |
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc |
index ae598c91b3b8a0d5022b25ffad707a625fb0ce46..5e918de0ecbecddc25683fd6b217b58aefe5c55c 100644 |
--- a/chrome/browser/ui/browser_browsertest.cc |
+++ b/chrome/browser/ui/browser_browsertest.cc |
@@ -620,6 +620,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, SadTabCancelsDialogs) { |
GURL beforeunload_url(embedded_test_server()->GetURL("/beforeunload.html")); |
ui_test_utils::NavigateToURL(browser(), beforeunload_url); |
+ // JavaScript onbeforeunload dialogs require a user gesture. |
+ for (auto* frame : |
+ browser()->tab_strip_model()->GetActiveWebContents()->GetAllFrames()) { |
+ frame->ExecuteJavaScriptWithUserGestureForTests(base::string16()); |
+ } |
+ |
// Start a navigation to trigger the beforeunload dialog. |
WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); |
contents->GetMainFrame()->ExecuteJavaScriptForTests( |
@@ -706,6 +712,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, ReloadThenCancelBeforeUnload) { |
GURL url(std::string("data:text/html,") + kBeforeUnloadHTML); |
ui_test_utils::NavigateToURL(browser(), url); |
+ // JavaScript onbeforeunload dialogs require a user gesture. |
+ for (auto* frame : |
+ browser()->tab_strip_model()->GetActiveWebContents()->GetAllFrames()) { |
+ frame->ExecuteJavaScriptWithUserGestureForTests(base::string16()); |
+ } |
+ |
// Navigate to another page, but click cancel in the dialog. Make sure that |
// the throbber stops spinning. |
chrome::Reload(browser(), WindowOpenDisposition::CURRENT_TAB); |
@@ -828,6 +840,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, SingleBeforeUnloadAfterRedirect) { |
GURL url(embedded_test_server()->GetURL("/beforeunload.html")); |
ui_test_utils::NavigateToURL(browser(), url); |
+ // JavaScript onbeforeunload dialogs require a user gesture. |
+ for (auto* frame : |
+ browser()->tab_strip_model()->GetActiveWebContents()->GetAllFrames()) { |
+ frame->ExecuteJavaScriptWithUserGestureForTests(base::string16()); |
+ } |
+ |
// Navigate to a URL that redirects to another process and approve the |
// beforeunload dialog that pops up. |
content::WindowedNotificationObserver nav_observer( |
@@ -856,6 +874,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, CancelBeforeUnloadResetsURL) { |
base::FilePath::kCurrentDirectory), base::FilePath(kBeforeUnloadFile))); |
ui_test_utils::NavigateToURL(browser(), url); |
+ // JavaScript onbeforeunload dialogs require a user gesture. |
+ for (auto* frame : |
+ browser()->tab_strip_model()->GetActiveWebContents()->GetAllFrames()) { |
+ frame->ExecuteJavaScriptWithUserGestureForTests(base::string16()); |
+ } |
+ |
// Navigate to a page that triggers a cross-site transition. |
ASSERT_TRUE(embedded_test_server()->Start()); |
GURL url2(embedded_test_server()->GetURL("/title1.html")); |
@@ -937,6 +961,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, MAYBE_BeforeUnloadVsBeforeReload) { |
GURL url(std::string("data:text/html,") + kBeforeUnloadHTML); |
ui_test_utils::NavigateToURL(browser(), url); |
+ // JavaScript onbeforeunload dialogs require a user gesture. |
+ for (auto* frame : |
+ browser()->tab_strip_model()->GetActiveWebContents()->GetAllFrames()) { |
+ frame->ExecuteJavaScriptWithUserGestureForTests(base::string16()); |
+ } |
+ |
// Reload the page, and check that we get a "before reload" dialog. |
chrome::Reload(browser(), WindowOpenDisposition::CURRENT_TAB); |
AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); |
@@ -1008,6 +1038,12 @@ IN_PROC_BROWSER_TEST_F(BeforeUnloadAtQuitWithTwoWindows, |
GURL url(std::string("data:text/html,") + kBeforeUnloadHTML); |
ui_test_utils::NavigateToURL(browser(), url); |
+ // JavaScript onbeforeunload dialogs require a user gesture. |
+ for (auto* frame : |
+ browser()->tab_strip_model()->GetActiveWebContents()->GetAllFrames()) { |
+ frame->ExecuteJavaScriptWithUserGestureForTests(base::string16()); |
+ } |
+ |
// Open a second browser window at about:blank. |
ui_test_utils::BrowserAddedObserver browser_added_observer; |
chrome::NewEmptyWindow(browser()->profile()); |