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 c3e1c860191638fb56fcea1e51edffebe6551677..e0ff07d7fdb78dd3d6126b1bac5a457bcfeaaf9f 100644 |
| --- a/chrome/browser/prerender/prerender_browsertest.cc |
| +++ b/chrome/browser/prerender/prerender_browsertest.cc |
| @@ -16,6 +16,8 @@ |
| #include "chrome/browser/favicon/favicon_tab_helper.h" |
| #include "chrome/browser/prefs/pref_service.h" |
| #include "chrome/browser/prerender/prerender_contents.h" |
| +#include "chrome/browser/prerender/prerender_link_manager.h" |
| +#include "chrome/browser/prerender/prerender_link_manager_factory.h" |
| #include "chrome/browser/prerender/prerender_manager.h" |
| #include "chrome/browser/prerender/prerender_manager_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| @@ -222,10 +224,9 @@ class TestPrerenderContents : public PrerenderContents { |
| } |
| } |
| - virtual void AddPendingPrerender(Origin origin, |
| - const GURL& url, |
| + virtual void AddPendingPrerender(const GURL& url, |
| const content::Referrer& referrer) OVERRIDE { |
| - PrerenderContents::AddPendingPrerender(origin, url, referrer); |
| + PrerenderContents::AddPendingPrerender(url, referrer); |
| if (expected_pending_prerenders_ > 0 && |
| pending_prerender_list()->size() == expected_pending_prerenders_) { |
| MessageLoop::current()->Quit(); |
| @@ -624,6 +625,10 @@ class PrerenderBrowserTest : public InProcessBrowserTest { |
| OpenDestURLWithJSImpl("WindowOpen()"); |
| } |
| + void RemoveLinkElementAndNavigate() const { |
| + OpenDestURLWithJSImpl("RemoveLinkElementAndNavigate()"); |
| + } |
| + |
| void ClickToNextPageAfterPrerender(Browser* browser) { |
| ui_test_utils::WindowedNotificationObserver new_page_observer( |
| content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| @@ -727,6 +732,14 @@ class PrerenderBrowserTest : public InProcessBrowserTest { |
| return prerender_manager; |
| } |
| + PrerenderLinkManager* prerender_link_manager() const { |
|
dominich
2012/04/29 18:52:55
nit: should this be GetPrerenderLinkManager?
gavinp
2012/04/30 11:43:16
Done.
|
| + Profile* profile = |
| + current_browser()->GetSelectedTabContentsWrapper()->profile(); |
| + PrerenderLinkManager* prerender_link_manager = |
| + PrerenderLinkManagerFactory::GetForProfile(profile); |
| + return prerender_link_manager; |
| + } |
| + |
| // Returns length of |prerender_manager_|'s history, or -1 on failure. |
| int GetHistoryLength() const { |
| scoped_ptr<DictionaryValue> prerender_dict( |
| @@ -754,6 +767,10 @@ class PrerenderBrowserTest : public InProcessBrowserTest { |
| loader_path_ = path; |
| } |
| + void set_loader_query_and_fragment(const std::string& query_and_fragment) { |
| + loader_query_and_fragment_ = query_and_fragment; |
| + } |
| + |
| GURL GetCrossDomainTestUrl(const std::string& path) { |
| static const std::string secondary_domain = "www.foo.com"; |
| host_resolver()->AddRule(secondary_domain, "127.0.0.1"); |
| @@ -814,7 +831,8 @@ class PrerenderBrowserTest : public InProcessBrowserTest { |
| ASSERT_TRUE(https_src_server->Start()); |
| src_server = https_src_server.get(); |
| } |
| - GURL src_url = src_server->GetURL(replacement_path); |
| + GURL loader_url = src_server->GetURL(replacement_path + |
| + loader_query_and_fragment_); |
| ASSERT_TRUE(prerender_manager()); |
| prerender_manager()->mutable_config().rate_limit_enabled = false; |
| @@ -834,7 +852,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { |
| // loading, rather than the page directly navigated to, need to |
| // handle browser navigation directly. |
| current_browser()->OpenURL(OpenURLParams( |
| - src_url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED, |
| + loader_url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED, |
| false)); |
| ui_test_utils::RunMessageLoop(); |
| @@ -944,6 +962,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { |
| bool use_https_src_server_; |
| bool call_javascript_; |
| std::string loader_path_; |
| + std::string loader_query_and_fragment_; |
| Browser* explicitly_set_browser_; |
| }; |
| @@ -953,6 +972,41 @@ class PrerenderBrowserTest : public InProcessBrowserTest { |
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPage) { |
| PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| NavigateToDestURL(); |
| + ASSERT_TRUE(prerender_link_manager()->IsEmpty()); |
| +} |
| + |
| +// TODO(gavinp): After https://bugs.webkit.org/show_bug.cgi?id=85005 lands, |
| +// enable this test. |
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| + DISABLED_PrerenderPageRemovingLink) { |
| + set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
| + set_loader_query_and_fragment("?links_to_insert=1&links_to_remove=1"); |
| + PrerenderTestURL("files/prerender/prerender_page.html", |
| + FINAL_STATUS_CANCELLED, 1); |
| + RemoveLinkElementAndNavigate(); |
| +} |
| + |
| +// TODO(gavinp): After https://bugs.webkit.org/show_bug.cgi?id=85005 lands, |
| +// enable this test. |
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| + DISABLED_PrerenderPageRemovingLinkWithTwoLinks) { |
| + set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
| + set_loader_query_and_fragment("?links_to_insert=2&links_to_remove=2"); |
| + PrerenderTestURL("files/prerender/prerender_page.html", |
| + FINAL_STATUS_CANCELLED, 1); |
| + RemoveLinkElementAndNavigate(); |
| +} |
| + |
| +// TODO(gavinp): After https://bugs.webkit.org/show_bug.cgi?id=85005 lands, |
| +// enable this test. |
| +IN_PROC_BROWSER_TEST_F( |
| + PrerenderBrowserTest, |
| + DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne) { |
| + set_loader_path("files/prerender/prerender_loader_removing_links.html"); |
| + set_loader_query_and_fragment("?links_to_insert=2&links_to_remove=1"); |
| + PrerenderTestURL("files/prerender/prerender_page.html", |
| + FINAL_STATUS_USED, 1); |
| + RemoveLinkElementAndNavigate(); |
| } |
| // Checks that prerendering works in incognito mode. |