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

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

Issue 7491096: Fix regression with back-button not working on prerendered and instant pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add a swap Created 9 years, 4 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.html » ('j') | content/common/view_messages.h » ('J')
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 8f1a9ac0836619651031d3f3bd317fa1f3ddc1a9..a692751888857b870546eeccb1a11194f13fbd3f 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -473,6 +473,26 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
}
}
+ void OpenDestUrlViaClick() const {
+ // Make sure in navigating we have a URL to use in the PrerenderManager.
+ TestPrerenderContents* prerender_contents = GetPrerenderContents();
+ ASSERT_TRUE(prerender_contents != NULL);
+ prerender_contents->set_quit_message_loop_on_destruction(false);
+
+ bool click_prerendered_link_result = false;
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
+ browser()->GetSelectedTabContents()->render_view_host(), L"",
+ L"window.domAutomationController.send(ClickOpenLink())",
+ &click_prerendered_link_result));
+ EXPECT_TRUE(click_prerendered_link_result);
+
+ // If the prerender contents has not been destroyed, run message loop.
+ if (GetPrerenderContents() != NULL) {
+ prerender_contents->set_quit_message_loop_on_destruction(true);
+ ui_test_utils::RunMessageLoop();
+ }
+ }
+
// 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);
@@ -1612,4 +1632,41 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderCancelAll) {
EXPECT_TRUE(GetPrerenderContents() == NULL);
}
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, BackToPrerenderedPage) {
+ PrerenderTestURL("files/prerender/prerender_page_with_link.html",
+ FINAL_STATUS_USED,
+ 1);
+
+ OpenDestUrlViaClick();
+
+ // Click on the link in the page and wait for it to commit
+ {
+ ui_test_utils::WindowedNotificationObserver new_page_observer(
+ content::NOTIFICATION_NAV_ENTRY_COMMITTED,
+ NotificationService::AllSources());
+ bool click_link_result = false;
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
+ browser()->GetSelectedTabContents()->render_view_host(), L"",
+ L"window.domAutomationController.send(ClickOpenLink())",
+ &click_link_result));
+ EXPECT_TRUE(click_link_result);
+ new_page_observer.Wait();
+ }
+
+ // Now, go back to the prerendered page.
+ {
+ ui_test_utils::WindowedNotificationObserver back_nav_observer(
+ content::NOTIFICATION_NAV_ENTRY_COMMITTED,
+ NotificationService::AllSources());
+ browser()->GoBack(CURRENT_TAB);
+ back_nav_observer.Wait();
+ bool original_prerender_page = false;
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
+ browser()->GetSelectedTabContents()->render_view_host(), L"",
+ L"window.domAutomationController.send(IsOriginalPrerenderPage())",
+ &original_prerender_page));
+ EXPECT_TRUE(original_prerender_page);
+ }
+}
+
} // namespace prerender
« no previous file with comments | « no previous file | chrome/test/data/prerender/prerender_loader.html » ('j') | content/common/view_messages.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698