| Index: chrome/browser/prerender/prerender_browsertest.cc
|
| diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
|
| index 4b830e7abdcb9cf5c526a9846059ba17ac7ed8fc..03f33270100c2e82f58c37cf56cfe6c27dbf6e80 100644
|
| --- a/chrome/browser/prerender/prerender_browsertest.cc
|
| +++ b/chrome/browser/prerender/prerender_browsertest.cc
|
| @@ -2823,6 +2823,39 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| PrerenderTestURL(replacement_path, FINAL_STATUS_UNSUPPORTED_SCHEME, 0);
|
| }
|
|
|
| +// Checks that non-http/https/chrome-extension subresource does not cancel the
|
| +// prerender.
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| + PrerenderSubresourceUnsupportedSchemeForOffline) {
|
| + // Set up a page with unsupported subresource.
|
| + GURL image_url = GURL("invalidscheme://www.google.com/test.jpg");
|
| + base::StringPairs replacement_text;
|
| + replacement_text.push_back(
|
| + std::make_pair("REPLACE_WITH_IMAGE_URL", image_url.spec()));
|
| + std::string replacement_path;
|
| + net::test_server::GetFilePathWithReplacements(
|
| + "/prerender/prerender_with_image.html", replacement_text,
|
| + &replacement_path);
|
| + const GURL url = src_server()->GetURL(MakeAbsolute(replacement_path));
|
| +
|
| + // Navigate to about:blank to get the session storage namespace.
|
| + ui_test_utils::NavigateToURL(current_browser(), GURL(url::kAboutBlankURL));
|
| + content::SessionStorageNamespace* storage_namespace =
|
| + GetActiveWebContents()
|
| + ->GetController()
|
| + .GetDefaultSessionStorageNamespace();
|
| +
|
| + std::unique_ptr<TestPrerender> test_prerender =
|
| + prerender_contents_factory()->ExpectPrerenderContents(
|
| + FINAL_STATUS_APP_TERMINATING);
|
| +
|
| + std::unique_ptr<PrerenderHandle> prerender_handle(
|
| + GetPrerenderManager()->AddPrerenderForOffline(url, storage_namespace,
|
| + gfx::Size(640, 480)));
|
| + ASSERT_EQ(prerender_handle->contents(), test_prerender->contents());
|
| + test_prerender->WaitForLoads(1);
|
| +}
|
| +
|
| // Ensure that about:blank is permitted for any subresource.
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| PrerenderAllowAboutBlankSubresource) {
|
| @@ -3110,6 +3143,31 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNewNavigationEntry) {
|
| FINAL_STATUS_NEW_NAVIGATION_ENTRY, 1);
|
| }
|
|
|
| +// Checks that the prerendering of a page for ORIGIN_OFFLINE is not canceled
|
| +// when the prerendered page tries to make a second navigation entry.
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| + PrerenderNewNavigationEntryForOffline) {
|
| + // Navigate to about:blank to get the session storage namespace.
|
| + ui_test_utils::NavigateToURL(current_browser(), GURL(url::kAboutBlankURL));
|
| + content::SessionStorageNamespace* storage_namespace =
|
| + GetActiveWebContents()
|
| + ->GetController()
|
| + .GetDefaultSessionStorageNamespace();
|
| +
|
| + std::unique_ptr<TestPrerender> test_prerender =
|
| + prerender_contents_factory()->ExpectPrerenderContents(
|
| + FINAL_STATUS_APP_TERMINATING);
|
| +
|
| + const GURL url =
|
| + src_server()->GetURL(MakeAbsolute("/prerender/prerender_new_entry.html"));
|
| + std::unique_ptr<PrerenderHandle> prerender_handle(
|
| + GetPrerenderManager()->AddPrerenderForOffline(url, storage_namespace,
|
| + gfx::Size(640, 480)));
|
| + ASSERT_EQ(prerender_handle->contents(), test_prerender->contents());
|
| + test_prerender->WaitForLoads(2);
|
| + ASSERT_EQ(1, GetActiveWebContents()->GetController().GetEntryCount());
|
| +}
|
| +
|
| // Attempt a swap-in in a new tab. The session storage doesn't match, so it
|
| // should not swap.
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNewTab) {
|
|
|