Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: content/browser/web_contents/web_contents_impl_browsertest.cc

Issue 2783723002: Keep track in the browser of which frames have onunload and onbeforeunload handlers. (Closed)
Patch Set: fix content_browsertests with plznavigate and also remove now unnecessary unloadcontroller change Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/web_contents/web_contents_impl_browsertest.cc
diff --git a/content/browser/web_contents/web_contents_impl_browsertest.cc b/content/browser/web_contents/web_contents_impl_browsertest.cc
index bf807ff9339efa73103a3370a6e8e8c4abd39114..924873625295deb322cde30e702c5bd3ffef35a5 100644
--- a/content/browser/web_contents/web_contents_impl_browsertest.cc
+++ b/content/browser/web_contents/web_contents_impl_browsertest.cc
@@ -1020,6 +1020,29 @@ IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
}
namespace {
+void NavigateToDataURLAndExpectBeforeUnload(Shell* shell,
+ const std::string& html,
+ bool expect_onbeforeunload) {
+ NavigateToURL(shell, GURL("data:text/html," + html));
+ RenderFrameHostImpl* rfh =
+ static_cast<RenderFrameHostImpl*>(shell->web_contents()->GetMainFrame());
+ EXPECT_EQ(expect_onbeforeunload, rfh->ShouldDispatchBeforeUnload());
+}
+} // namespace
+
+IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, NoOnBeforeUnload) {
+ const std::string NO_BEFORE_UNLOAD_HTML = "<html><body>foo</body></html>";
+ NavigateToDataURLAndExpectBeforeUnload(shell(), NO_BEFORE_UNLOAD_HTML, false);
+}
+
+IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, OnBeforeUnload) {
+ const std::string BEFORE_UNLOAD_HTML =
+ "<html><body><script>window.onbeforeunload=function(e) {}</script>"
+ "</body></html>";
+ NavigateToDataURLAndExpectBeforeUnload(shell(), BEFORE_UNLOAD_HTML, true);
+}
+
+namespace {
class TestJavaScriptDialogManager : public JavaScriptDialogManager,
public WebContentsDelegate {

Powered by Google App Engine
This is Rietveld 408576698