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..e9b6e2d0fc6db0c62b9656e93321bdd47b25a793 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,35 @@ 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(); |
mmenke
2011/08/09 14:54:03
Maybe run a script here or something, to make sure
cbentzel
2011/08/09 15:42:39
Perhaps. I tried using a title watcher but that hu
mmenke
2011/08/09 15:48:37
I was thinking of calling Javascript, but the titl
mmenke
2011/08/09 15:49:35
Oops...No they don't. That is odd.
|
+ } |
+} |
+ |
} // namespace prerender |