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

Side by Side Diff: chrome/browser/prerender/prerender_unittest.cc

Issue 2259533003: Use bounds instead of size for prerender requests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Compile Created 4 years, 4 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 16 matching lines...) Expand all
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 "net/base/network_change_notifier.h"
36 #include "testing/gtest/include/gtest/gtest.h" 36 #include "testing/gtest/include/gtest/gtest.h"
37 #include "ui/gfx/geometry/size.h" 37 #include "ui/gfx/geometry/size.h"
mmenke 2016/08/19 15:22:29 Need rect.h, too.
Yusuf 2016/08/19 17:20:33 Done.
38 #include "url/gurl.h" 38 #include "url/gurl.h"
39 39
40 using base::Time; 40 using base::Time;
41 using base::TimeDelta; 41 using base::TimeDelta;
42 using base::TimeTicks; 42 using base::TimeTicks;
43 using content::BrowserThread; 43 using content::BrowserThread;
44 using content::Referrer; 44 using content::Referrer;
45 45
46 namespace prerender { 46 namespace prerender {
47 47
48 class UnitTestPrerenderManager; 48 class UnitTestPrerenderManager;
49 49
50 namespace { 50 namespace {
51 51
52 class DummyPrerenderContents : public PrerenderContents { 52 class DummyPrerenderContents : public PrerenderContents {
53 public: 53 public:
54 DummyPrerenderContents(UnitTestPrerenderManager* test_prerender_manager, 54 DummyPrerenderContents(UnitTestPrerenderManager* test_prerender_manager,
55 const GURL& url, 55 const GURL& url,
56 Origin origin, 56 Origin origin,
57 FinalStatus expected_final_status); 57 FinalStatus expected_final_status);
58 58
59 ~DummyPrerenderContents() override; 59 ~DummyPrerenderContents() override;
60 60
61 void StartPrerendering( 61 void StartPrerendering(
62 const gfx::Size& size, 62 const gfx::Rect& bounds,
63 content::SessionStorageNamespace* session_storage_namespace) override; 63 content::SessionStorageNamespace* session_storage_namespace) override;
64 64
65 bool GetChildId(int* child_id) const override { 65 bool GetChildId(int* child_id) const override {
66 // Having a default child_id of -1 forces pending prerenders not to fail 66 // Having a default child_id of -1 forces pending prerenders not to fail
67 // on session storage and cross domain checking. 67 // on session storage and cross domain checking.
68 *child_id = -1; 68 *child_id = -1;
69 return true; 69 return true;
70 } 70 }
71 71
72 bool GetRouteId(int* route_id) const override { 72 bool GetRouteId(int* route_id) const override {
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 route_id_(g_next_route_id_++), 284 route_id_(g_next_route_id_++),
285 test_prerender_manager_(test_prerender_manager), 285 test_prerender_manager_(test_prerender_manager),
286 expected_final_status_(expected_final_status) {} 286 expected_final_status_(expected_final_status) {}
287 287
288 DummyPrerenderContents::~DummyPrerenderContents() { 288 DummyPrerenderContents::~DummyPrerenderContents() {
289 EXPECT_EQ(expected_final_status_, final_status()); 289 EXPECT_EQ(expected_final_status_, final_status());
290 test_prerender_manager_->DummyPrerenderContentsDestroyed(-1, route_id_); 290 test_prerender_manager_->DummyPrerenderContentsDestroyed(-1, route_id_);
291 } 291 }
292 292
293 void DummyPrerenderContents::StartPrerendering( 293 void DummyPrerenderContents::StartPrerendering(
294 const gfx::Size& size, 294 const gfx::Rect& bounds,
295 content::SessionStorageNamespace* session_storage_namespace) { 295 content::SessionStorageNamespace* session_storage_namespace) {
296 // In the base PrerenderContents implementation, StartPrerendering will 296 // In the base PrerenderContents implementation, StartPrerendering will
297 // be called even when the PrerenderManager is part of the control group, 297 // be called even when the PrerenderManager is part of the control group,
298 // but it will early exit before actually creating a new RenderView if 298 // but it will early exit before actually creating a new RenderView if
299 // |is_control_group| is true; 299 // |is_control_group| is true;
300 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks(); 300 load_start_time_ = test_prerender_manager_->GetCurrentTimeTicks();
301 if (!test_prerender_manager_->IsControlGroup()) { 301 if (!test_prerender_manager_->IsControlGroup()) {
302 prerendering_has_started_ = true; 302 prerendering_has_started_ = true;
303 test_prerender_manager_->DummyPrerenderContentsStarted(-1, route_id_, this); 303 test_prerender_manager_->DummyPrerenderContentsStarted(-1, route_id_, this);
304 NotifyPrerenderStart(); 304 NotifyPrerenderStart();
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
1091 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular( 1091 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular(
1092 net::NetworkChangeNotifier::GetConnectionType())); 1092 net::NetworkChangeNotifier::GetConnectionType()));
1093 GURL url("http://www.google.com/"); 1093 GURL url("http://www.google.com/");
1094 DummyPrerenderContents* prerender_contents = 1094 DummyPrerenderContents* prerender_contents =
1095 prerender_manager()->CreateNextPrerenderContents( 1095 prerender_manager()->CreateNextPrerenderContents(
1096 url, 1096 url,
1097 ORIGIN_EXTERNAL_REQUEST, 1097 ORIGIN_EXTERNAL_REQUEST,
1098 FINAL_STATUS_MANAGER_SHUTDOWN); 1098 FINAL_STATUS_MANAGER_SHUTDOWN);
1099 std::unique_ptr<PrerenderHandle> prerender_handle( 1099 std::unique_ptr<PrerenderHandle> prerender_handle(
1100 prerender_manager()->AddPrerenderFromExternalRequest( 1100 prerender_manager()->AddPrerenderFromExternalRequest(
1101 url, content::Referrer(), nullptr, kSize)); 1101 url, content::Referrer(), nullptr, gfx::Rect(kSize)));
1102 EXPECT_FALSE(prerender_handle); 1102 EXPECT_FALSE(prerender_handle);
1103 EXPECT_FALSE(prerender_contents->prerendering_has_started()); 1103 EXPECT_FALSE(prerender_contents->prerendering_has_started());
1104 } 1104 }
1105 1105
1106 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) { 1106 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) {
1107 const Origin origins[] = { 1107 const Origin origins[] = {
1108 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, 1108 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1109 ORIGIN_OFFLINE, 1109 ORIGIN_OFFLINE,
1110 }; 1110 };
1111 1111
1112 EnablePrerender(); 1112 EnablePrerender();
1113 std::unique_ptr<net::NetworkChangeNotifier> mock( 1113 std::unique_ptr<net::NetworkChangeNotifier> mock(
1114 new MockNetworkChangeNotifier4G); 1114 new MockNetworkChangeNotifier4G);
1115 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular( 1115 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular(
1116 net::NetworkChangeNotifier::GetConnectionType())); 1116 net::NetworkChangeNotifier::GetConnectionType()));
1117 GURL url("http://www.google.com/"); 1117 GURL url("http://www.google.com/");
1118 for (const Origin& origin : origins) { 1118 for (const Origin& origin : origins) {
1119 DummyPrerenderContents* prerender_contents = nullptr; 1119 DummyPrerenderContents* prerender_contents = nullptr;
1120 std::unique_ptr<PrerenderHandle> prerender_handle; 1120 std::unique_ptr<PrerenderHandle> prerender_handle;
1121 if (origin == ORIGIN_OFFLINE) { 1121 if (origin == ORIGIN_OFFLINE) {
1122 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 1122 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
1123 url, origin, FINAL_STATUS_MANAGER_SHUTDOWN); 1123 url, origin, FINAL_STATUS_MANAGER_SHUTDOWN);
1124 prerender_handle = 1124 prerender_handle =
1125 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize); 1125 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize);
1126 } else { 1126 } else {
1127 prerender_contents = prerender_manager()->CreateNextPrerenderContents( 1127 prerender_contents = prerender_manager()->CreateNextPrerenderContents(
1128 url, origin, FINAL_STATUS_USED); 1128 url, origin, FINAL_STATUS_USED);
1129 prerender_handle = 1129 prerender_handle =
1130 prerender_manager()->AddPrerenderOnCellularFromExternalRequest( 1130 prerender_manager()->AddPrerenderOnCellularFromExternalRequest(
1131 url, content::Referrer(), nullptr, kSize); 1131 url, content::Referrer(), nullptr, gfx::Rect(kSize));
1132 } 1132 }
1133 EXPECT_TRUE(prerender_handle); 1133 EXPECT_TRUE(prerender_handle);
1134 EXPECT_TRUE(prerender_handle->IsPrerendering()); 1134 EXPECT_TRUE(prerender_handle->IsPrerendering());
1135 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1135 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1136 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1136 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1137 EXPECT_EQ(origin, prerender_handle->contents()->origin()); 1137 EXPECT_EQ(origin, prerender_handle->contents()->origin());
1138 if (origin != ORIGIN_OFFLINE) { 1138 if (origin != ORIGIN_OFFLINE) {
1139 std::unique_ptr<PrerenderContents> entry = 1139 std::unique_ptr<PrerenderContents> entry =
1140 prerender_manager()->FindAndUseEntry(url); 1140 prerender_manager()->FindAndUseEntry(url);
1141 ASSERT_EQ(prerender_contents, entry.get()); 1141 ASSERT_EQ(prerender_contents, entry.get());
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
1660 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1660 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1661 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1661 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1662 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); 1662 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin());
1663 std::unique_ptr<PrerenderContents> entry = 1663 std::unique_ptr<PrerenderContents> entry =
1664 prerender_manager()->FindAndUseEntry(url); 1664 prerender_manager()->FindAndUseEntry(url);
1665 ASSERT_EQ(prerender_contents, entry.get()); 1665 ASSERT_EQ(prerender_contents, entry.get());
1666 EXPECT_FALSE(prerender_handle->IsPrerendering()); 1666 EXPECT_FALSE(prerender_handle->IsPrerendering());
1667 } 1667 }
1668 1668
1669 } // namespace prerender 1669 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698