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

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

Issue 2197663002: Prerender: Allow on low end devices for ORIGIN_OFFLINE (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl format 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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 PrerenderContents* prerender_contents) { 209 PrerenderContents* prerender_contents) {
210 prerender_contents_map_[std::make_pair(child_id, route_id)] = 210 prerender_contents_map_[std::make_pair(child_id, route_id)] =
211 prerender_contents; 211 prerender_contents;
212 } 212 }
213 213
214 void DummyPrerenderContentsDestroyed(int child_id, 214 void DummyPrerenderContentsDestroyed(int child_id,
215 int route_id) { 215 int route_id) {
216 prerender_contents_map_.erase(std::make_pair(child_id, route_id)); 216 prerender_contents_map_.erase(std::make_pair(child_id, route_id));
217 } 217 }
218 218
219 void SetIsLowEndDevice(bool is_low_end_device) {
220 is_low_end_device_ = is_low_end_device;
221 }
222
223 protected:
224 bool IsLowEndDevice() override { return is_low_end_device_; }
mmenke 2016/08/03 15:10:58 Doesn't really matter, but this can be private
pasko 2016/08/03 15:30:18 Done.
225
219 private: 226 private:
220 DummyPrerenderContents* SetNextPrerenderContents( 227 DummyPrerenderContents* SetNextPrerenderContents(
221 std::unique_ptr<DummyPrerenderContents> prerender_contents) { 228 std::unique_ptr<DummyPrerenderContents> prerender_contents) {
222 CHECK(!next_prerender_contents_); 229 CHECK(!next_prerender_contents_);
223 DummyPrerenderContents* contents_ptr = prerender_contents.get(); 230 DummyPrerenderContents* contents_ptr = prerender_contents.get();
224 next_prerender_contents_ = std::move(prerender_contents); 231 next_prerender_contents_ = std::move(prerender_contents);
225 return contents_ptr; 232 return contents_ptr;
226 } 233 }
227 234
228 std::unique_ptr<PrerenderContents> CreatePrerenderContents( 235 std::unique_ptr<PrerenderContents> CreatePrerenderContents(
229 const GURL& url, 236 const GURL& url,
230 const Referrer& referrer, 237 const Referrer& referrer,
231 Origin origin) override { 238 Origin origin) override {
232 CHECK(next_prerender_contents_); 239 CHECK(next_prerender_contents_);
233 EXPECT_EQ(url, next_prerender_contents_->prerender_url()); 240 EXPECT_EQ(url, next_prerender_contents_->prerender_url());
234 EXPECT_EQ(origin, next_prerender_contents_->origin()); 241 EXPECT_EQ(origin, next_prerender_contents_->origin());
235 return std::move(next_prerender_contents_); 242 return std::move(next_prerender_contents_);
236 } 243 }
237 244
238 // Maintain a map from route pairs to PrerenderContents for 245 // Maintain a map from route pairs to PrerenderContents for
239 // GetPrerenderContentsForRoute. 246 // GetPrerenderContentsForRoute.
240 using PrerenderContentsMap = 247 using PrerenderContentsMap =
241 std::map<std::pair<int, int>, PrerenderContents*>; 248 std::map<std::pair<int, int>, PrerenderContents*>;
242 PrerenderContentsMap prerender_contents_map_; 249 PrerenderContentsMap prerender_contents_map_;
243 250
244 Time time_; 251 Time time_;
245 TimeTicks time_ticks_; 252 TimeTicks time_ticks_;
246 std::unique_ptr<PrerenderContents> next_prerender_contents_; 253 std::unique_ptr<PrerenderContents> next_prerender_contents_;
254 bool is_low_end_device_;
247 }; 255 };
248 256
249 class RestorePrerenderMode { 257 class RestorePrerenderMode {
250 public: 258 public:
251 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) { 259 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) {
252 } 260 }
253 261
254 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); } 262 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); }
255 263
256 private: 264 private:
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 switches::kPrerenderFromOmnibox, 323 switches::kPrerenderFromOmnibox,
316 switches::kPrerenderFromOmniboxSwitchValueEnabled); 324 switches::kPrerenderFromOmniboxSwitchValueEnabled);
317 } 325 }
318 326
319 ~PrerenderTest() override { 327 ~PrerenderTest() override {
320 prerender_link_manager_->OnChannelClosing(kDefaultChildId); 328 prerender_link_manager_->OnChannelClosing(kDefaultChildId);
321 prerender_link_manager_->Shutdown(); 329 prerender_link_manager_->Shutdown();
322 prerender_manager_->Shutdown(); 330 prerender_manager_->Shutdown();
323 } 331 }
324 332
333 void SetUp() override { prerender_manager()->SetIsLowEndDevice(false); }
mmenke 2016/08/03 15:10:58 Can just put this in the constructor. Each test i
pasko 2016/08/03 15:30:17 Ah, there is some stuff already in the constructor
mmenke 2016/08/03 15:36:43 We aren't doing any virtual calls to the test fixt
334
325 UnitTestPrerenderManager* prerender_manager() { 335 UnitTestPrerenderManager* prerender_manager() {
326 return prerender_manager_.get(); 336 return prerender_manager_.get();
327 } 337 }
328 338
329 PrerenderLinkManager* prerender_link_manager() { 339 PrerenderLinkManager* prerender_link_manager() {
330 return prerender_link_manager_.get(); 340 return prerender_link_manager_.get();
331 } 341 }
332 342
333 Profile* profile() { return &profile_; } 343 Profile* profile() { return &profile_; }
334 344
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN); 440 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
431 std::unique_ptr<PrerenderHandle> prerender_handle( 441 std::unique_ptr<PrerenderHandle> prerender_handle(
432 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize)); 442 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize));
433 EXPECT_TRUE(prerender_handle); 443 EXPECT_TRUE(prerender_handle);
434 EXPECT_TRUE(prerender_handle->IsPrerendering()); 444 EXPECT_TRUE(prerender_handle->IsPrerendering());
435 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 445 EXPECT_TRUE(prerender_contents->prerendering_has_started());
436 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 446 EXPECT_EQ(prerender_contents, prerender_handle->contents());
437 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); 447 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
438 } 448 }
439 449
450 TEST_F(PrerenderTest, PrerenderDisabledOnLowEndDevice) {
451 GURL url("http://www.google.com/");
452 ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible());
453 prerender_manager()->SetIsLowEndDevice(true);
454 EXPECT_FALSE(AddSimplePrerender(url));
455 }
456
457 TEST_F(PrerenderTest, OfflinePrerenderPossibleOnLowEndDevice) {
458 GURL url("http://www.google.com/");
459 ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible());
460
461 prerender_manager()->SetIsLowEndDevice(true);
462
463 DummyPrerenderContents* prerender_contents =
464 prerender_manager()->CreateNextPrerenderContents(
465 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
466 std::unique_ptr<PrerenderHandle> prerender_handle(
467 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize));
468 EXPECT_TRUE(prerender_handle);
469 EXPECT_TRUE(prerender_handle->IsPrerendering());
470 EXPECT_TRUE(prerender_contents->prerendering_has_started());
471 }
472
440 TEST_F(PrerenderTest, FoundTest) { 473 TEST_F(PrerenderTest, FoundTest) {
441 GURL url("http://www.google.com/"); 474 GURL url("http://www.google.com/");
442 DummyPrerenderContents* prerender_contents = 475 DummyPrerenderContents* prerender_contents =
443 prerender_manager()->CreateNextPrerenderContents( 476 prerender_manager()->CreateNextPrerenderContents(
444 url, 477 url,
445 FINAL_STATUS_USED); 478 FINAL_STATUS_USED);
446 EXPECT_TRUE(AddSimplePrerender(url)); 479 EXPECT_TRUE(AddSimplePrerender(url));
447 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 480 EXPECT_TRUE(prerender_contents->prerendering_has_started());
448 std::unique_ptr<PrerenderContents> entry = 481 std::unique_ptr<PrerenderContents> entry =
449 prerender_manager()->FindAndUseEntry(url); 482 prerender_manager()->FindAndUseEntry(url);
(...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1628 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1661 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1629 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1662 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1630 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); 1663 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin());
1631 std::unique_ptr<PrerenderContents> entry = 1664 std::unique_ptr<PrerenderContents> entry =
1632 prerender_manager()->FindAndUseEntry(url); 1665 prerender_manager()->FindAndUseEntry(url);
1633 ASSERT_EQ(prerender_contents, entry.get()); 1666 ASSERT_EQ(prerender_contents, entry.get());
1634 EXPECT_FALSE(prerender_handle->IsPrerendering()); 1667 EXPECT_FALSE(prerender_handle->IsPrerendering());
1635 } 1668 }
1636 1669
1637 } // namespace prerender 1670 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698