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..e8027a68e84734e6da4f2459aab13accba20278f 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" |
| @@ -227,6 +228,7 @@ class UnitTestPrerenderManager : public PrerenderManager { |
| prerender_contents_map_.erase(std::make_pair(child_id, route_id)); |
| } |
| + |
|
pasko
2016/03/21 12:00:58
nit: don't we use only one vertical whitespace in
Yusuf
2016/03/21 16:59:56
Done.
|
| private: |
| void SetNextPrerenderContents(DummyPrerenderContents* prerender_contents) { |
| CHECK(!next_prerender_contents_.get()); |
| @@ -251,6 +253,7 @@ class UnitTestPrerenderManager : public PrerenderManager { |
| Time time_; |
| TimeTicks time_ticks_; |
| + |
| scoped_ptr<PrerenderContents> next_prerender_contents_; |
| // PrerenderContents with an |expected_final_status| of FINAL_STATUS_USED, |
| // tracked so they will be automatically deleted. |
| @@ -267,6 +270,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 +392,12 @@ class PrerenderTest : public testing::Test { |
| chrome_browser_net::NETWORK_PREDICTION_NEVER); |
| } |
| + void EnablePrerender() { |
| + profile_.GetPrefs()->SetInteger( |
| + prefs::kNetworkPredictionOptions, |
| + chrome_browser_net::NETWORK_PREDICTION_WIFI_ONLY); |
|
pasko
2016/03/21 12:00:58
since NETWORK_PREDICTION_WIFI_ONLY is deprecated,
Yusuf
2016/03/21 16:59:56
Done.
|
| + } |
| + |
| private: |
| // Needed to pass PrerenderManager's DCHECKs. |
| base::MessageLoop message_loop_; |
| @@ -1058,6 +1074,59 @@ TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { |
| GURL("http://www.example.com"))); |
| } |
| +TEST_F(PrerenderTest,PrerenderNotAllowedOnCellular) { |
|
pasko
2016/03/21 12:00:58
nit: s/,/, /
same below
Yusuf
2016/03/21 16:59:57
Done.
pasko
2016/03/31 15:30:44
Thank you. I just noticed it was not done for test
|
| + 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(), NULL, kSize)); |
| + CHECK(!prerender_handle.get()); |
| + 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)); |
| + CHECK(prerender_handle.get()); |
| + 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"); |