Chromium Code Reviews| Index: chrome/browser/ui/browser_browsertest.cc |
| diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc |
| index 639da6e2daafaf56a8a96c6ae14a6c110451f378..257c1d410a98f43737db40841ce44f13907223a1 100644 |
| --- a/chrome/browser/ui/browser_browsertest.cc |
| +++ b/chrome/browser/ui/browser_browsertest.cc |
| @@ -624,6 +624,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, SadTabCancelsDialogs) { |
| // beforeunload dialog and the beforeunload hang timer. |
| contents->GetMainFrame()->DisableBeforeUnloadHangMonitorForTesting(); |
| + // JavaScript onbeforeunload dialogs require a user gesture. |
|
Nico
2017/04/07 20:05:28
You're adding this exactly in the tests where you
Charlie Reis
2017/04/10 06:20:11
It does seem like the majority of cases would bene
Avi (use Gerrit)
2017/05/05 15:30:04
Done.
|
| + for (auto* frame : |
| + browser()->tab_strip_model()->GetActiveWebContents()->GetAllFrames()) { |
| + frame->ExecuteJavaScriptWithUserGestureForTests(base::string16()); |
| + } |
| + |
| // Start a navigation to trigger the beforeunload dialog. |
| contents->GetMainFrame()->ExecuteJavaScriptForTests( |
| ASCIIToUTF16("window.location.href = 'about:blank'")); |
| @@ -713,6 +719,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, ReloadThenCancelBeforeUnload) { |
| // beforeunload dialog and the beforeunload hang timer. |
| contents->GetMainFrame()->DisableBeforeUnloadHangMonitorForTesting(); |
| + // 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); |
| @@ -837,6 +849,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, SingleBeforeUnloadAfterRedirect) { |
| // beforeunload dialog and the beforeunload hang timer. |
| contents->GetMainFrame()->DisableBeforeUnloadHangMonitorForTesting(); |
| + // 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( |
| @@ -869,6 +887,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, CancelBeforeUnloadResetsURL) { |
| // beforeunload dialog and the beforeunload hang timer. |
| contents->GetMainFrame()->DisableBeforeUnloadHangMonitorForTesting(); |
| + // 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")); |
| @@ -943,6 +967,12 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, BeforeUnloadVsBeforeReload) { |
| // beforeunload dialog and the beforeunload hang timer. |
| contents->GetMainFrame()->DisableBeforeUnloadHangMonitorForTesting(); |
| + // 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(); |
| @@ -1013,6 +1043,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()); |