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

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

Issue 1767243002: Update prerender policy for custom tabs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mmenke@'s comments Created 4 years, 9 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 dcad32f785a2e78632dea703e118f627d10017be..b384559aef9cdf15f37691f03f0ecd0b12dd7586 100644
--- a/chrome/browser/prerender/prerender_unittest.cc
+++ b/chrome/browser/prerender/prerender_unittest.cc
@@ -32,6 +32,7 @@
#include "components/prefs/pref_service.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/test/test_browser_thread.h"
+#include "net/base/network_change_notifier.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/size.h"
#include "url/gurl.h"
@@ -267,6 +268,13 @@ class RestorePrerenderMode {
PrerenderManager::PrerenderManagerMode prev_mode_;
};
+class MockNetworkChangeNotifier4G : public net::NetworkChangeNotifier {
+ public:
+ ConnectionType GetCurrentConnectionType() const override {
+ return NetworkChangeNotifier::CONNECTION_4G;
+ }
+};
+
DummyPrerenderContents::DummyPrerenderContents(
UnitTestPrerenderManager* test_prerender_manager,
const GURL& url,
@@ -382,6 +390,12 @@ class PrerenderTest : public testing::Test {
chrome_browser_net::NETWORK_PREDICTION_NEVER);
}
+ void EnablePrerender() {
+ profile_.GetPrefs()->SetInteger(
+ prefs::kNetworkPredictionOptions,
+ chrome_browser_net::NETWORK_PREDICTION_ALWAYS);
+ }
+
private:
// Needed to pass PrerenderManager's DCHECKs.
base::MessageLoop message_loop_;
@@ -1058,6 +1072,58 @@ TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) {
GURL("http://www.example.com")));
}
+TEST_F(PrerenderTest, PrerenderNotAllowedOnCellular) {
+ EnablePrerender();
+ scoped_ptr<net::NetworkChangeNotifier> mock(
+ new MockNetworkChangeNotifier4G);
+ EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular(
+ net::NetworkChangeNotifier::GetConnectionType()));
+ EXPECT_FALSE(AddSimplePrerender(GURL("http://www.example.com")));
+}
+
+TEST_F(PrerenderTest, PrerenderNotAllowedOnCellularWithExternalOrigin) {
+ EnablePrerender();
+ scoped_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,
+ FINAL_STATUS_MANAGER_SHUTDOWN);
+ scoped_ptr<PrerenderHandle> prerender_handle(
+ prerender_manager()->AddPrerenderFromExternalRequest(
+ url, content::Referrer(), nullptr, kSize));
+ EXPECT_FALSE(prerender_handle);
+ EXPECT_FALSE(prerender_contents->prerendering_has_started());
+}
+
+TEST_F(PrerenderTest,PrerenderAllowedOnCellularWithForcedOrigin) {
+ EnablePrerender();
+ scoped_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);
+ scoped_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));
+}
+
TEST_F(PrerenderTest, LinkManagerCancel) {
EXPECT_TRUE(IsEmptyPrerenderLinkManager());
GURL url("http://www.myexample.com");

Powered by Google App Engine
This is Rietveld 408576698