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

Side by Side 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: pasko@ nits 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 unified diff | Download patch
OLDNEW
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698