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

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

Issue 10553029: Handle interface to prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remediated, and cleaned up in prep for uploading for review Created 8 years, 6 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
Index: chrome/browser/prerender/prerender_browsertest.cc
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index fffe4ed0df9e2e114203bb166954e28ec5da10a4..6b2063326885d6282ef9206d1eabe30d22f31329 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -17,6 +17,7 @@
#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_handle.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"
@@ -110,13 +111,11 @@ bool ShouldRenderPrerenderedPageCorrectly(FinalStatus status) {
case FINAL_STATUS_USED:
case FINAL_STATUS_WINDOW_OPENER:
case FINAL_STATUS_APP_TERMINATING:
- case FINAL_STATUS_FRAGMENT_MISMATCH:
case FINAL_STATUS_CACHE_OR_HISTORY_CLEARED:
// We'll crash the renderer after it's loaded.
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;
@@ -126,6 +125,10 @@ bool ShouldRenderPrerenderedPageCorrectly(FinalStatus status) {
// PrerenderContents that stops the UI message loop on DidStopLoading().
class TestPrerenderContents : public PrerenderContents {
public:
+ using PrerenderContents::PendingPrerenderInfo;
dominich 2012/06/28 00:34:32 Do you really need these as a derived class of Pre
gavinp 2012/07/02 18:19:29 They are, but TestPrerenderManager calls them, and
+ using PrerenderContents::PendingPrerenderList;
+ using PrerenderContents::pending_prerender_list;
+
TestPrerenderContents(
PrerenderManager* prerender_manager,
PrerenderTracker* prerender_tracker,
@@ -226,14 +229,16 @@ class TestPrerenderContents : public PrerenderContents {
}
}
- virtual void AddPendingPrerender(const GURL& url,
- const content::Referrer& referrer,
- const gfx::Size& size) OVERRIDE {
- PrerenderContents::AddPendingPrerender(url, referrer, size);
+ virtual PrerenderHandle AddPendingPrerender(const GURL& url,
+ const content::Referrer& referrer,
+ const gfx::Size& size) OVERRIDE {
+ PrerenderHandle handle =
+ PrerenderContents::AddPendingPrerender(url, referrer, size);
if (expected_pending_prerenders_ > 0 &&
pending_prerender_list()->size() == expected_pending_prerenders_) {
MessageLoop::current()->Quit();
}
+ return handle;
}
virtual WebContents* CreateWebContents(
@@ -273,6 +278,8 @@ class TestPrerenderContents : public PrerenderContents {
int number_of_loads() const { return number_of_loads_; }
+ FinalStatus expected_final_status() const { return expected_final_status_; }
+
private:
virtual void OnRenderViewHostCreated(
RenderViewHost* new_render_view_host) OVERRIDE {
@@ -489,6 +496,11 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
virtual ~PrerenderBrowserTest() {}
+ content::SessionStorageNamespace* GetSessionStorageNamespace() const {
+ return current_browser()->GetActiveTabContents()->web_contents()->
+ GetRenderViewHost()->GetSessionStorageNamespace();
+ }
+
virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
#if defined(ENABLE_SAFE_BROWSING)
SafeBrowsingService::RegisterFactory(safe_browsing_factory_.get());
@@ -702,17 +714,35 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
}
bool UrlIsInPrerenderManager(const std::string& html_file) const {
- GURL dest_url = test_server()->GetURL(html_file);
- return (GetPrerenderManager()->FindEntry(dest_url) != NULL);
+ return UrlIsInPrerenderManager(test_server()->GetURL(html_file));
}
- bool UrlIsInPrerenderManager(const GURL& url) {
- return (GetPrerenderManager()->FindEntry(url) != NULL);
+ bool UrlIsInPrerenderManager(const GURL& url) const {
+ return
dominich 2012/06/28 00:34:32 nit: return GetPrerenderManager()->FindEntry(
+ GetPrerenderManager()->FindEntry(url,
+ GetSessionStorageNamespace()) != NULL;
}
bool UrlIsPendingInPrerenderManager(const std::string& html_file) const {
+ TestPrerenderContents* test_prerender_contents = GetPrerenderContents();
+ if (!test_prerender_contents)
+ return false;
GURL dest_url = test_server()->GetURL(html_file);
- return GetPrerenderManager()->IsPendingEntry(dest_url);
+ for (TestPrerenderContents::PendingPrerenderList::const_iterator
+ it = test_prerender_contents->pending_prerender_list()->begin(),
+ end = test_prerender_contents->pending_prerender_list()->end();
+ it != end;
+ ++it) {
+ if (it->url == dest_url) {
+ EXPECT_FALSE(GetPrerenderManager()->FindHandle(
+ dest_url, GetSessionStorageNamespace()));
+ EXPECT_TRUE(test_prerender_contents->IsPendingEntry(
+ it->prerender_handle_impl->AsWeakPtr()));
+ EXPECT_TRUE(it->prerender_handle_impl->IsPending());
+ return true;
+ }
+ }
+ return false;
}
void set_use_https_src(bool use_https_src_server) {
@@ -765,7 +795,8 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
TestPrerenderContents* GetPrerenderContents() const {
return static_cast<TestPrerenderContents*>(
- GetPrerenderManager()->FindEntry(dest_url_));
+ GetPrerenderManager()->FindEntry(dest_url_,
+ GetSessionStorageNamespace()));
}
void set_loader_path(const std::string& path) {
@@ -882,9 +913,12 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
} else {
// In the failure case, we should have removed |dest_url_| from the
// prerender_manager. We ignore dummy PrerenderContents (as indicated
- // by not having started).
+ // by not having started), and PrerenderContents that are expected to
+ // be left in the manager until the test finishes.
EXPECT_TRUE(prerender_contents == NULL ||
- !prerender_contents->prerendering_has_started());
+ !prerender_contents->prerendering_has_started() ||
+ prerender_contents->expected_final_status() ==
+ FINAL_STATUS_MANAGER_SHUTDOWN);
}
}
@@ -953,8 +987,11 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
string16(),
ASCIIToUTF16(javascript_function_name));
- // Run message loop until the prerender contents is destroyed.
- ui_test_utils::RunMessageLoop();
+ if (prerender_contents->expected_final_status() !=
+ FINAL_STATUS_APP_TERMINATING) {
+ // Run message loop until the prerender contents is destroyed.
+ ui_test_utils::RunMessageLoop();
+ }
}
WaitForLoadPrerenderContentsFactory* prerender_contents_factory_;
@@ -1638,7 +1675,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderRendererCrash) {
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
DISABLED_PrerenderPageNavigateFragment) {
PrerenderTestURL("files/prerender/prerender_fragment.html",
- FINAL_STATUS_FRAGMENT_MISMATCH,
+ FINAL_STATUS_APP_TERMINATING,
1);
NavigateToURL("files/prerender/prerender_fragment.html#fragment");
}
@@ -1649,7 +1686,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
dominich 2012/06/28 00:34:32 shouldn't be disabled any more?
DISABLED_PrerenderFragmentNavigatePage) {
PrerenderTestURL("files/prerender/prerender_fragment.html#fragment",
- FINAL_STATUS_FRAGMENT_MISMATCH,
+ FINAL_STATUS_APP_TERMINATING,
1);
NavigateToURL("files/prerender/prerender_fragment.html");
}
@@ -1660,7 +1697,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
dominich 2012/06/28 00:34:32 shouldn't be disabled any more?
DISABLED_PrerenderFragmentNavigateFragment) {
PrerenderTestURL("files/prerender/prerender_fragment.html#other_fragment",
- FINAL_STATUS_FRAGMENT_MISMATCH,
+ FINAL_STATUS_APP_TERMINATING,
1);
NavigateToURL("files/prerender/prerender_fragment.html#fragment");
}
@@ -1672,7 +1709,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
DISABLED_PrerenderClientRedirectFromFragment) {
PrerenderTestURL(
CreateClientRedirect("files/prerender/prerender_fragment.html#fragment"),
- FINAL_STATUS_FRAGMENT_MISMATCH,
+ FINAL_STATUS_APP_TERMINATING,
2);
NavigateToURL("files/prerender/prerender_fragment.html");
}
@@ -1684,7 +1721,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
DISABLED_PrerenderClientRedirectToFragment) {
PrerenderTestURL(
CreateClientRedirect("files/prerender/prerender_fragment.html"),
- FINAL_STATUS_FRAGMENT_MISMATCH,
+ FINAL_STATUS_APP_TERMINATING,
2);
NavigateToURL("files/prerender/prerender_fragment.html#fragment");
}
@@ -1699,7 +1736,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
NavigateToURL("files/prerender/prerender_fragment_location_hash.html");
}
-// Checks that prerendering a PNG works correctly.
+// Checks that preren a PNG works correctly.
dominich 2012/06/28 00:34:32 an accidental s/dering//g ?
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderImagePng) {
DisableJavascriptCalls();
PrerenderTestURL("files/prerender/image.png", FINAL_STATUS_USED, 1);
@@ -1846,7 +1883,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) {
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
PrerenderSameDomainWindowOpenerWindowOpen) {
PrerenderTestURL("files/prerender/prerender_page.html",
- FINAL_STATUS_WINDOW_OPENER,
+ FINAL_STATUS_APP_TERMINATING,
dominich 2012/06/28 00:34:32 this is surprising. we still want to cancel on WIN
1);
OpenDestURLViaWindowOpen();
}
@@ -1856,7 +1893,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
PrerenderSameDomainWindowOpenerClickTarget) {
PrerenderTestURL("files/prerender/prerender_page.html",
- FINAL_STATUS_WINDOW_OPENER,
+ FINAL_STATUS_APP_TERMINATING,
dominich 2012/06/28 00:34:32 ditto
1);
OpenDestURLViaClickTarget();
}
@@ -2139,21 +2176,21 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewWindow) {
PrerenderTestURL("files/prerender/prerender_page_with_link.html",
- FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH,
+ FINAL_STATUS_APP_TERMINATING,
1);
OpenDestURLViaClickNewWindow();
}
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewForegroundTab) {
PrerenderTestURL("files/prerender/prerender_page_with_link.html",
- FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH,
+ FINAL_STATUS_APP_TERMINATING,
1);
OpenDestURLViaClickNewForegroundTab();
}
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) {
PrerenderTestURL("files/prerender/prerender_page_with_link.html",
- FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH,
+ FINAL_STATUS_APP_TERMINATING,
1);
OpenDestURLViaClickNewBackgroundTab();
}

Powered by Google App Engine
This is Rietveld 408576698