| Index: chrome/browser/prerender/prerender_browsertest.cc
|
| diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
|
| index 2d412288ab02b42a4b174cf7d86a89c62d5aebfe..7bad826d26633f3890ac377d75e525309d180293 100644
|
| --- a/chrome/browser/prerender/prerender_browsertest.cc
|
| +++ b/chrome/browser/prerender/prerender_browsertest.cc
|
| @@ -95,6 +95,7 @@ bool ShouldRenderPrerenderedPageCorrectly(FinalStatus status) {
|
| case FINAL_STATUS_RENDERER_CRASHED:
|
| case FINAL_STATUS_CANCELLED:
|
| case FINAL_STATUS_DEVTOOLS_ATTACHED:
|
| + case FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH:
|
| return true;
|
| default:
|
| return false;
|
| @@ -112,8 +113,8 @@ class TestPrerenderContents : public PrerenderContents {
|
| const GURL& referrer,
|
| int expected_number_of_loads,
|
| FinalStatus expected_final_status)
|
| - : PrerenderContents(prerender_manager, prerender_tracker, profile,
|
| - url, referrer, ORIGIN_LINK_REL_PRERENDER,
|
| + : PrerenderContents(prerender_manager, prerender_tracker,
|
| + profile, url, referrer, ORIGIN_LINK_REL_PRERENDER,
|
| PrerenderManager::kNoExperiment),
|
| number_of_loads_(0),
|
| expected_number_of_loads_(expected_number_of_loads),
|
| @@ -559,6 +560,23 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
|
| EXPECT_TRUE(original_prerender_page);
|
| }
|
|
|
| + // Goes back to the page that was active before the prerender was swapped
|
| + // in. This must be called when the prerendered page is the current page
|
| + // in the active tab.
|
| + void GoBackToPageBeforePrerender(Browser* browser) {
|
| + ui_test_utils::WindowedNotificationObserver back_nav_observer(
|
| + content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| + content::NotificationService::AllSources());
|
| + browser->GoBack(CURRENT_TAB);
|
| + back_nav_observer.Wait();
|
| + bool js_result;
|
| + ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
|
| + browser->GetSelectedTabContents()->render_view_host(), L"",
|
| + L"window.domAutomationController.send(DidBackToOriginalPagePass())",
|
| + &js_result));
|
| + EXPECT_TRUE(js_result);
|
| + }
|
| +
|
| // Should be const but test_server()->GetURL(...) is not const.
|
| void NavigateToURL(const std::string& dest_html_file) {
|
| GURL dest_url = test_server()->GetURL(dest_html_file);
|
| @@ -808,42 +826,6 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityQuickSwitch) {
|
| NavigateToDestURL();
|
| }
|
|
|
| -// Checks that the visibility API works when opening a page in a new hidden
|
| -// tab.
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityBackgroundTab) {
|
| - PrerenderTestURL("files/prerender/prerender_visibility_hidden.html",
|
| - FINAL_STATUS_USED,
|
| - 1);
|
| - NavigateToDestURLWithDisposition(NEW_BACKGROUND_TAB);
|
| -}
|
| -
|
| -// Checks that the visibility API works when opening a page in a new hidden
|
| -// tab, which is switched to before it stops loading.
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderVisibilityBackgroundTabQuickSwitch) {
|
| - PrerenderTestURL("files/prerender/prerender_visibility_hidden_quick.html",
|
| - FINAL_STATUS_USED, 0);
|
| - NavigateToDestURLWithDisposition(NEW_BACKGROUND_TAB);
|
| -}
|
| -
|
| -// Checks that the visibility API works when opening a page in a new foreground
|
| -// tab.
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityForegroundTab) {
|
| - PrerenderTestURL("files/prerender/prerender_visibility.html",
|
| - FINAL_STATUS_USED,
|
| - 1);
|
| - NavigateToDestURLWithDisposition(NEW_FOREGROUND_TAB);
|
| -}
|
| -
|
| -// Checks that the visibility API works when the prerender is quickly opened
|
| -// in a new tab foreground before it stops loading.
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderVisibilityForegroundTabQuickSwitch) {
|
| - PrerenderTestURL("files/prerender/prerender_visibility_quick.html",
|
| - FINAL_STATUS_USED, 0);
|
| - NavigateToDestURL();
|
| -}
|
| -
|
| // Checks that the prerendering of a page is canceled correctly when a
|
| // Javascript alert is called.
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAlertBeforeOnload) {
|
| @@ -1548,31 +1530,6 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| OpenDestURLViaClickTarget();
|
| }
|
|
|
| -// Checks that if a page is opened in a new window by javascript and both the
|
| -// pages are in different domains, the prerendered page is used.
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderCrossDomainWindowOpenerWindowOpen) {
|
| - PrerenderTestURL(
|
| - GetCrossDomainTestUrl("files/prerender/prerender_page.html"),
|
| - FINAL_STATUS_USED,
|
| - 1);
|
| - OpenDestURLViaWindowOpen();
|
| -}
|
| -
|
| -// Checks that if a page is opened due to click on a href with target="_blank"
|
| -// and both pages are in different domains, the prerendered page is used.
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderCrossDomainWindowOpenerClickTarget) {
|
| - PrerenderTestURL(
|
| - GetCrossDomainTestUrl("files/prerender/prerender_page.html"),
|
| - FINAL_STATUS_USED,
|
| - 1);
|
| - OpenDestURLViaClickTarget();
|
| -}
|
| -
|
| -// TODO(shishir): Add a test for the case when the page having the
|
| -// prerendering link already has an opener set.
|
| -
|
| // Checks that a top-level page which would normally request an SSL client
|
| // certificate will never be seen since it's an https top-level resource.
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) {
|
| @@ -1839,72 +1796,25 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNavigateGoBack) {
|
| GoBackToPrerender(browser());
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderClickNewWindowClickGoBack) {
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewWindow) {
|
| PrerenderTestURL("files/prerender/prerender_page_with_link.html",
|
| - FINAL_STATUS_USED,
|
| + FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH,
|
| 1);
|
| OpenDestURLViaClickNewWindow();
|
| - Browser* new_browser = BrowserList::GetLastActive();
|
| - NavigateToNextPageAfterPrerender(new_browser);
|
| - GoBackToPrerender(new_browser);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderClickNewWindowNavigateGoBack) {
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewForegroundTab) {
|
| PrerenderTestURL("files/prerender/prerender_page_with_link.html",
|
| - FINAL_STATUS_USED,
|
| - 1);
|
| - OpenDestURLViaClickNewWindow();
|
| - Browser* new_browser = BrowserList::GetLastActive();
|
| - ClickToNextPageAfterPrerender(new_browser);
|
| - GoBackToPrerender(new_browser);
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderClickNewForegroundTabClickGoBack) {
|
| - PrerenderTestURL("files/prerender/prerender_page_with_link.html",
|
| - FINAL_STATUS_USED,
|
| + FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH,
|
| 1);
|
| OpenDestURLViaClickNewForegroundTab();
|
| - NavigateToNextPageAfterPrerender(browser());
|
| - GoBackToPrerender(browser());
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderClickNewForegroundTabNavigateGoBack) {
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) {
|
| PrerenderTestURL("files/prerender/prerender_page_with_link.html",
|
| - FINAL_STATUS_USED,
|
| - 1);
|
| - OpenDestURLViaClickNewForegroundTab();
|
| - ClickToNextPageAfterPrerender(browser());
|
| - GoBackToPrerender(browser());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderClickNewBackgroundTabClickGoBack) {
|
| - PrerenderTestURL("files/prerender/prerender_page_with_link.html",
|
| - FINAL_STATUS_USED,
|
| - 1);
|
| - OpenDestURLViaClickNewBackgroundTab();
|
| - // SelectNextTab completes synchronously, in terms of
|
| - // updating the active index.
|
| - browser()->SelectNextTab();
|
| - NavigateToNextPageAfterPrerender(browser());
|
| - GoBackToPrerender(browser());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| - PrerenderClickNewBackgroundTabNavigateGoBack) {
|
| - PrerenderTestURL("files/prerender/prerender_page_with_link.html",
|
| - FINAL_STATUS_USED,
|
| + FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH,
|
| 1);
|
| OpenDestURLViaClickNewBackgroundTab();
|
| - // SelectNextTab completes synchronously, in terms of
|
| - // updating the active index.
|
| - browser()->SelectNextTab();
|
| - ClickToNextPageAfterPrerender(browser());
|
| - GoBackToPrerender(browser());
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| @@ -1920,4 +1830,15 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| NavigateToURL(url);
|
| }
|
|
|
| +// Validate that the sessionStorage namespace remains the same when swapping
|
| +// in a prerendered page.
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorage) {
|
| + set_loader_path("files/prerender/prerender_loader_with_session_storage.html");
|
| + PrerenderTestURL(GetCrossDomainTestUrl("files/prerender/prerender_page.html"),
|
| + FINAL_STATUS_USED,
|
| + 1);
|
| + NavigateToDestURL();
|
| + GoBackToPageBeforePrerender(browser());
|
| +}
|
| +
|
| } // namespace prerender
|
|
|