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 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 |