Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 #include "chrome/browser/prerender/prerender_origin.h" | 25 #include "chrome/browser/prerender/prerender_origin.h" |
| 26 #include "chrome/common/chrome_switches.h" | 26 #include "chrome/common/chrome_switches.h" |
| 27 #include "chrome/common/pref_names.h" | 27 #include "chrome/common/pref_names.h" |
| 28 #include "chrome/common/prerender_types.h" | 28 #include "chrome/common/prerender_types.h" |
| 29 #include "chrome/test/base/testing_browser_process.h" | 29 #include "chrome/test/base/testing_browser_process.h" |
| 30 #include "chrome/test/base/testing_profile.h" | 30 #include "chrome/test/base/testing_profile.h" |
| 31 #include "components/content_settings/core/common/pref_names.h" | 31 #include "components/content_settings/core/common/pref_names.h" |
| 32 #include "components/prefs/pref_service.h" | 32 #include "components/prefs/pref_service.h" |
| 33 #include "content/public/browser/render_view_host.h" | 33 #include "content/public/browser/render_view_host.h" |
| 34 #include "content/public/test/test_browser_thread.h" | 34 #include "content/public/test/test_browser_thread.h" |
| 35 #include "net/base/network_change_notifier.h" | |
| 35 #include "testing/gtest/include/gtest/gtest.h" | 36 #include "testing/gtest/include/gtest/gtest.h" |
| 36 #include "ui/gfx/geometry/size.h" | 37 #include "ui/gfx/geometry/size.h" |
| 37 #include "url/gurl.h" | 38 #include "url/gurl.h" |
| 38 | 39 |
| 39 using base::Time; | 40 using base::Time; |
| 40 using base::TimeDelta; | 41 using base::TimeDelta; |
| 41 using base::TimeTicks; | 42 using base::TimeTicks; |
| 42 using content::BrowserThread; | 43 using content::BrowserThread; |
| 43 using content::Referrer; | 44 using content::Referrer; |
| 44 | 45 |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 260 class RestorePrerenderMode { | 261 class RestorePrerenderMode { |
| 261 public: | 262 public: |
| 262 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) { | 263 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) { |
| 263 } | 264 } |
| 264 | 265 |
| 265 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); } | 266 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); } |
| 266 private: | 267 private: |
| 267 PrerenderManager::PrerenderManagerMode prev_mode_; | 268 PrerenderManager::PrerenderManagerMode prev_mode_; |
| 268 }; | 269 }; |
| 269 | 270 |
| 271 class MockNetworkChangeNotifier4G : public net::NetworkChangeNotifier { | |
| 272 public: | |
| 273 ConnectionType GetCurrentConnectionType() const override { | |
| 274 return NetworkChangeNotifier::CONNECTION_4G; | |
| 275 } | |
| 276 }; | |
| 277 | |
| 270 DummyPrerenderContents::DummyPrerenderContents( | 278 DummyPrerenderContents::DummyPrerenderContents( |
| 271 UnitTestPrerenderManager* test_prerender_manager, | 279 UnitTestPrerenderManager* test_prerender_manager, |
| 272 const GURL& url, | 280 const GURL& url, |
| 273 Origin origin, | 281 Origin origin, |
| 274 FinalStatus expected_final_status) | 282 FinalStatus expected_final_status) |
| 275 : PrerenderContents(test_prerender_manager, | 283 : PrerenderContents(test_prerender_manager, |
| 276 NULL, url, Referrer(), origin), | 284 NULL, url, Referrer(), origin), |
| 277 route_id_(g_next_route_id_++), | 285 route_id_(g_next_route_id_++), |
| 278 test_prerender_manager_(test_prerender_manager), | 286 test_prerender_manager_(test_prerender_manager), |
| 279 expected_final_status_(expected_final_status) { | 287 expected_final_status_(expected_final_status) { |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 375 content::Referrer(), kSize, kDefaultRenderViewRouteId); | 383 content::Referrer(), kSize, kDefaultRenderViewRouteId); |
| 376 return LauncherHasRunningPrerender(kDefaultChildId, last_prerender_id()); | 384 return LauncherHasRunningPrerender(kDefaultChildId, last_prerender_id()); |
| 377 } | 385 } |
| 378 | 386 |
| 379 void DisablePrerender() { | 387 void DisablePrerender() { |
| 380 profile_.GetPrefs()->SetInteger( | 388 profile_.GetPrefs()->SetInteger( |
| 381 prefs::kNetworkPredictionOptions, | 389 prefs::kNetworkPredictionOptions, |
| 382 chrome_browser_net::NETWORK_PREDICTION_NEVER); | 390 chrome_browser_net::NETWORK_PREDICTION_NEVER); |
| 383 } | 391 } |
| 384 | 392 |
| 393 void EnablePrerender() { | |
| 394 profile_.GetPrefs()->SetInteger( | |
| 395 prefs::kNetworkPredictionOptions, | |
| 396 chrome_browser_net::NETWORK_PREDICTION_ALWAYS); | |
| 397 } | |
| 398 | |
| 385 private: | 399 private: |
| 386 // Needed to pass PrerenderManager's DCHECKs. | 400 // Needed to pass PrerenderManager's DCHECKs. |
| 387 base::MessageLoop message_loop_; | 401 base::MessageLoop message_loop_; |
| 388 TestingProfile profile_; | 402 TestingProfile profile_; |
| 389 content::TestBrowserThread ui_thread_; | 403 content::TestBrowserThread ui_thread_; |
| 390 scoped_ptr<UnitTestPrerenderManager> prerender_manager_; | 404 scoped_ptr<UnitTestPrerenderManager> prerender_manager_; |
| 391 scoped_ptr<PrerenderLinkManager> prerender_link_manager_; | 405 scoped_ptr<PrerenderLinkManager> prerender_link_manager_; |
| 392 int last_prerender_id_; | 406 int last_prerender_id_; |
| 393 base::FieldTrialList field_trial_list_; | 407 base::FieldTrialList field_trial_list_; |
| 394 }; | 408 }; |
| (...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1051 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox( | 1065 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox( |
| 1052 GURL("http://www.example.com"), NULL, gfx::Size())); | 1066 GURL("http://www.example.com"), NULL, gfx::Size())); |
| 1053 } | 1067 } |
| 1054 | 1068 |
| 1055 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { | 1069 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { |
| 1056 DisablePrerender(); | 1070 DisablePrerender(); |
| 1057 EXPECT_FALSE(AddSimplePrerender( | 1071 EXPECT_FALSE(AddSimplePrerender( |
| 1058 GURL("http://www.example.com"))); | 1072 GURL("http://www.example.com"))); |
| 1059 } | 1073 } |
| 1060 | 1074 |
| 1075 TEST_F(PrerenderTest, PrerenderNotAllowedOnCellular) { | |
| 1076 EnablePrerender(); | |
| 1077 scoped_ptr<net::NetworkChangeNotifier> mock( | |
| 1078 new MockNetworkChangeNotifier4G); | |
| 1079 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular( | |
| 1080 net::NetworkChangeNotifier::GetConnectionType())); | |
| 1081 EXPECT_FALSE(AddSimplePrerender( | |
| 1082 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.
| |
| 1083 } | |
| 1084 | |
| 1085 TEST_F(PrerenderTest, PrerenderNotAllowedOnCellularWithExternalOrigin) { | |
| 1086 EnablePrerender(); | |
| 1087 scoped_ptr<net::NetworkChangeNotifier> mock( | |
| 1088 new MockNetworkChangeNotifier4G); | |
| 1089 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular( | |
| 1090 net::NetworkChangeNotifier::GetConnectionType())); | |
| 1091 GURL url("http://www.google.com/"); | |
| 1092 DummyPrerenderContents* prerender_contents = | |
| 1093 prerender_manager()->CreateNextPrerenderContents( | |
| 1094 url, | |
| 1095 ORIGIN_EXTERNAL_REQUEST, | |
| 1096 FINAL_STATUS_MANAGER_SHUTDOWN); | |
| 1097 scoped_ptr<PrerenderHandle> prerender_handle( | |
| 1098 prerender_manager()->AddPrerenderFromExternalRequest( | |
| 1099 url, content::Referrer(), NULL, kSize)); | |
|
mmenke
2016/03/22 15:29:29
nullptr
Yusuf
2016/03/22 19:21:10
Done.
| |
| 1100 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.
| |
| 1101 EXPECT_FALSE(prerender_contents->prerendering_has_started()); | |
| 1102 } | |
| 1103 | |
| 1104 TEST_F(PrerenderTest,PrerenderAllowedOnCellularWithForcedOrigin) { | |
| 1105 EnablePrerender(); | |
| 1106 scoped_ptr<net::NetworkChangeNotifier> mock( | |
| 1107 new MockNetworkChangeNotifier4G); | |
| 1108 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular( | |
| 1109 net::NetworkChangeNotifier::GetConnectionType())); | |
| 1110 GURL url("http://www.google.com/"); | |
| 1111 DummyPrerenderContents* prerender_contents = | |
| 1112 prerender_manager()->CreateNextPrerenderContents( | |
| 1113 url, | |
| 1114 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, | |
| 1115 FINAL_STATUS_USED); | |
| 1116 scoped_ptr<PrerenderHandle> prerender_handle( | |
| 1117 prerender_manager()->AddPrerenderOnCellularFromExternalRequest( | |
| 1118 url, content::Referrer(), NULL, kSize)); | |
|
mmenke
2016/03/22 15:29:28
nullptr
Yusuf
2016/03/22 19:21:11
Done.
| |
| 1119 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.
| |
| 1120 EXPECT_TRUE(prerender_handle->IsPrerendering()); | |
| 1121 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | |
| 1122 EXPECT_EQ(prerender_contents, prerender_handle->contents()); | |
| 1123 EXPECT_EQ(ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, | |
| 1124 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.
| |
| 1125 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | |
| 1126 } | |
| 1127 | |
| 1061 TEST_F(PrerenderTest, LinkManagerCancel) { | 1128 TEST_F(PrerenderTest, LinkManagerCancel) { |
| 1062 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1129 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 1063 GURL url("http://www.myexample.com"); | 1130 GURL url("http://www.myexample.com"); |
| 1064 DummyPrerenderContents* prerender_contents = | 1131 DummyPrerenderContents* prerender_contents = |
| 1065 prerender_manager()->CreateNextPrerenderContents( | 1132 prerender_manager()->CreateNextPrerenderContents( |
| 1066 url, FINAL_STATUS_CANCELLED); | 1133 url, FINAL_STATUS_CANCELLED); |
| 1067 | 1134 |
| 1068 EXPECT_TRUE(AddSimplePrerender(url)); | 1135 EXPECT_TRUE(AddSimplePrerender(url)); |
| 1069 | 1136 |
| 1070 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 1137 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1579 CHECK(prerender_handle.get()); | 1646 CHECK(prerender_handle.get()); |
| 1580 EXPECT_TRUE(prerender_handle->IsPrerendering()); | 1647 EXPECT_TRUE(prerender_handle->IsPrerendering()); |
| 1581 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 1648 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| 1582 EXPECT_EQ(prerender_contents, prerender_handle->contents()); | 1649 EXPECT_EQ(prerender_contents, prerender_handle->contents()); |
| 1583 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); | 1650 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); |
| 1584 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 1651 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
| 1585 EXPECT_FALSE(prerender_handle->IsPrerendering()); | 1652 EXPECT_FALSE(prerender_handle->IsPrerendering()); |
| 1586 } | 1653 } |
| 1587 | 1654 |
| 1588 } // namespace prerender | 1655 } // namespace prerender |
| OLD | NEW |