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

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

Issue 1854643002: Implement PrerenderManager::AddPrerenderForOffline() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Makes offline originated prerenders unfindable Created 4 years, 8 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_unittest.cc
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc
index 0db797f291ba7019986ca01ff8a55ce56181f016..f87187abb689e4ff57291256ccb719e314047434 100644
--- a/chrome/browser/prerender/prerender_unittest.cc
+++ b/chrome/browser/prerender/prerender_unittest.cc
@@ -427,6 +427,24 @@ TEST_F(PrerenderTest, PrerenderRespectsThirdPartyCookiesPref) {
EXPECT_FALSE(AddSimplePrerender(url));
}
+TEST_F(PrerenderTest, OfflinePrerenderIgnoresThirdPartyCookiesPref) {
+ GURL url("http://www.google.com/");
+ RestorePrerenderMode restore_prerender_mode;
+ ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible());
+
+ profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true);
+ DummyPrerenderContents* prerender_contents =
+ prerender_manager()->CreateNextPrerenderContents(
+ url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
+ scoped_ptr<PrerenderHandle> prerender_handle(
+ prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize));
+ EXPECT_TRUE(prerender_handle);
+ EXPECT_TRUE(prerender_handle->IsPrerendering());
+ EXPECT_TRUE(prerender_contents->prerendering_has_started());
+ EXPECT_EQ(prerender_contents, prerender_handle->contents());
+ EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
+}
+
TEST_F(PrerenderTest, FoundTest) {
GURL url("http://www.google.com/");
DummyPrerenderContents* prerender_contents =
@@ -438,6 +456,19 @@ TEST_F(PrerenderTest, FoundTest) {
ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
}
+TEST_F(PrerenderTest, UnfindableOfflinePrerenderTest) {
+ GURL url("http://www.google.com/");
+ DummyPrerenderContents* prerender_contents =
+ prerender_manager()->CreateNextPrerenderContents(
+ url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
+ scoped_ptr<PrerenderHandle> prerender_handle(
+ prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize));
+ EXPECT_TRUE(prerender_handle);
+ EXPECT_TRUE(prerender_handle->IsPrerendering());
+ EXPECT_TRUE(prerender_contents->prerendering_has_started());
+ ASSERT_EQ(nullptr, prerender_manager()->FindAndUseEntry(url));
+}
+
// Make sure that if queue a request, and a second prerender request for the
// same URL comes in, that the second request attaches to the first prerender,
// and we don't use the second prerender contents.
@@ -1111,28 +1142,38 @@ TEST_F(PrerenderTest, PrerenderNotAllowedOnCellularWithExternalOrigin) {
EXPECT_FALSE(prerender_contents->prerendering_has_started());
}
-TEST_F(PrerenderTest,PrerenderAllowedOnCellularWithForcedOrigin) {
+TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) {
+ const Origin origins[] = {
+ ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
+ ORIGIN_OFFLINE,
+ };
+
EnablePrerender();
std::unique_ptr<net::NetworkChangeNotifier> mock(
new MockNetworkChangeNotifier4G);
EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular(
net::NetworkChangeNotifier::GetConnectionType()));
GURL url("http://www.google.com/");
- DummyPrerenderContents* prerender_contents =
- prerender_manager()->CreateNextPrerenderContents(
- url,
- ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
- FINAL_STATUS_USED);
- std::unique_ptr<PrerenderHandle> prerender_handle(
- prerender_manager()->AddPrerenderOnCellularFromExternalRequest(
- url, content::Referrer(), nullptr, kSize));
- EXPECT_TRUE(prerender_handle);
- EXPECT_TRUE(prerender_handle->IsPrerendering());
- EXPECT_TRUE(prerender_contents->prerendering_has_started());
- EXPECT_EQ(prerender_contents, prerender_handle->contents());
- EXPECT_EQ(ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
- prerender_handle->contents()->origin());
- ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
+ for (Origin origin: origins) {
+ DummyPrerenderContents* prerender_contents =
+ prerender_manager()->CreateNextPrerenderContents(
+ url, origin, FINAL_STATUS_USED);
+ scoped_ptr<PrerenderHandle> prerender_handle;
+ if (origin == ORIGIN_OFFLINE) {(
+ prerender_handle.reset(prerender_manager()->AddPrerenderForOffline(
+ url, nullptr, kSize)));
+ } else {(
+ prerender_handle.reset(
+ prerender_manager()->AddPrerenderOnCellularFromExternalRequest(
+ url, content::Referrer(), nullptr, kSize)));
+ }
+ EXPECT_TRUE(prerender_handle);
+ EXPECT_TRUE(prerender_handle->IsPrerendering());
+ EXPECT_TRUE(prerender_contents->prerendering_has_started());
+ EXPECT_EQ(prerender_contents, prerender_handle->contents());
+ EXPECT_EQ(origin, prerender_handle->contents()->origin());
+ ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url));
+ }
}
TEST_F(PrerenderTest, LinkManagerCancel) {

Powered by Google App Engine
This is Rietveld 408576698