Chromium Code Reviews| 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) { |