Chromium Code Reviews| 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..50d9b18b9a62629cbf6e999a0aa32890ad03d1b1 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,59 @@ 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"))); |
|
mmenke
2016/03/22 15:29:29
nit: Fits on one line.
Yusuf
2016/03/22 19:21:10
Done.
|
| +} |
| + |
| +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(), NULL, kSize)); |
|
mmenke
2016/03/22 15:29:29
nullptr
Yusuf
2016/03/22 19:21:10
Done.
|
| + CHECK(!prerender_handle.get()); |
|
mmenke
2016/03/22 15:29:29
nit: .get() not needed. Since we support leaving
mmenke
2016/03/22 15:29:29
Any reason for not making this an ASSERT_FALSE(...
Yusuf
2016/03/22 19:21:10
Done.
Yusuf
2016/03/22 19:21:11
Done.
|
| + 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(), NULL, kSize)); |
|
mmenke
2016/03/22 15:29:28
nullptr
Yusuf
2016/03/22 19:21:11
Done.
|
| + CHECK(prerender_handle.get()); |
|
mmenke
2016/03/22 15:29:28
ASSERT_TRUE?
mmenke
2016/03/22 15:29:28
nit: .get() not needed.
Yusuf
2016/03/22 19:21:10
Done.
Yusuf
2016/03/22 19:21:11
Done.
|
| + 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()); |
|
mmenke
2016/03/22 15:29:29
Run "git cl format". The indentation here is wron
Yusuf
2016/03/22 19:21:10
Done.
|
| + ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| +} |
| + |
| TEST_F(PrerenderTest, LinkManagerCancel) { |
| EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| GURL url("http://www.myexample.com"); |