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

Unified Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 1940363002: Add two tests to ensure WebContents does not leak on prerender swap in (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « no previous file | chrome/test/data/prerender/prerender_loader_with_beforeunload.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_browsertest.cc
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index 9eec60fa294f02a3d36490018784ad8e1cc5b9c2..565ca4eddb408dd1b0d544fdf5e203ea2dbaf2fd 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -3094,10 +3094,19 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderFavicon) {
EXPECT_TRUE(favicon_driver->FaviconIsValid());
}
+// Checks that when prerendered page is swapped in and the referring page
+// neither had set an unload nor it had set a beforeunload handler, the old
+// WebContents would not leak.
mmenke 2016/05/04 17:54:32 nit: would - does or will
pasko 2016/05/09 13:34:59 Done.
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderOldWebContentsDeleted) {
+ PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
+ WebContentsDestructionObserver destruction_observer(GetActiveWebContents());
+ NavigateToDestURL();
+ destruction_observer.Wait();
+}
+
// Checks that when a prerendered page is swapped in to a referring page, the
// unload handlers on the referring page are executed and its WebContents is
// destroyed.
-// TODO(pasko): A similar test for BeforeUnload. See http://crbug.com/600693
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderUnload) {
// Matches URL in prerender_loader_with_unload.html.
const GURL unload_url("http://unload-url.test");
@@ -3117,6 +3126,28 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderUnload) {
destruction_observer.Wait();
}
+// Checks that a beforeunload handler is executed on the referring page when a
+// prerendered page is swapped in. Also checks that its WebContents of the
mmenke 2016/05/04 17:54:32 nit: its -> the
pasko 2016/05/09 13:34:59 Done.
+// referring page is destroyed.
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderBeforeUnload) {
+ // This URL is requested from prerender_loader_with_beforeunload.html.
+ const GURL beforeunload_url("http://unload-url.test");
+ base::FilePath empty_file = ui_test_utils::GetTestFilePath(
+ base::FilePath(), base::FilePath(FILE_PATH_LITERAL("empty.html")));
+ RequestCounter request_counter;
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&CreateCountingInterceptorOnIO,
+ beforeunload_url, empty_file, request_counter.AsWeakPtr()));
+
+ set_loader_path("/prerender/prerender_loader_with_beforeunload.html");
+ PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
+ WebContentsDestructionObserver destruction_observer(GetActiveWebContents());
+ NavigateToDestURL();
+ request_counter.WaitForCount(1);
+ destruction_observer.Wait();
+}
+
// Checks that a hanging unload on the referring page of a prerender swap does
// not crash the browser on exit.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHangingUnload) {
« no previous file with comments | « no previous file | chrome/test/data/prerender/prerender_loader_with_beforeunload.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698