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

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: Addressed comments by mmenke@ 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
219 private: 223 private:
224 bool IsLowEndDevice() const override { return is_low_end_device_; }
225
220 DummyPrerenderContents* SetNextPrerenderContents( 226 DummyPrerenderContents* SetNextPrerenderContents(
221 std::unique_ptr<DummyPrerenderContents> prerender_contents) { 227 std::unique_ptr<DummyPrerenderContents> prerender_contents) {
222 CHECK(!next_prerender_contents_); 228 CHECK(!next_prerender_contents_);
223 DummyPrerenderContents* contents_ptr = prerender_contents.get(); 229 DummyPrerenderContents* contents_ptr = prerender_contents.get();
224 next_prerender_contents_ = std::move(prerender_contents); 230 next_prerender_contents_ = std::move(prerender_contents);
225 return contents_ptr; 231 return contents_ptr;
226 } 232 }
227 233
228 std::unique_ptr<PrerenderContents> CreatePrerenderContents( 234 std::unique_ptr<PrerenderContents> CreatePrerenderContents(
229 const GURL& url, 235 const GURL& url,
230 const Referrer& referrer, 236 const Referrer& referrer,
231 Origin origin) override { 237 Origin origin) override {
232 CHECK(next_prerender_contents_); 238 CHECK(next_prerender_contents_);
233 EXPECT_EQ(url, next_prerender_contents_->prerender_url()); 239 EXPECT_EQ(url, next_prerender_contents_->prerender_url());
234 EXPECT_EQ(origin, next_prerender_contents_->origin()); 240 EXPECT_EQ(origin, next_prerender_contents_->origin());
235 return std::move(next_prerender_contents_); 241 return std::move(next_prerender_contents_);
236 } 242 }
237 243
238 // Maintain a map from route pairs to PrerenderContents for 244 // Maintain a map from route pairs to PrerenderContents for
239 // GetPrerenderContentsForRoute. 245 // GetPrerenderContentsForRoute.
240 using PrerenderContentsMap = 246 using PrerenderContentsMap =
241 std::map<std::pair<int, int>, PrerenderContents*>; 247 std::map<std::pair<int, int>, PrerenderContents*>;
242 PrerenderContentsMap prerender_contents_map_; 248 PrerenderContentsMap prerender_contents_map_;
243 249
244 Time time_; 250 Time time_;
245 TimeTicks time_ticks_; 251 TimeTicks time_ticks_;
246 std::unique_ptr<PrerenderContents> next_prerender_contents_; 252 std::unique_ptr<PrerenderContents> next_prerender_contents_;
253 bool is_low_end_device_;
247 }; 254 };
248 255
249 class RestorePrerenderMode { 256 class RestorePrerenderMode {
250 public: 257 public:
251 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) { 258 RestorePrerenderMode() : prev_mode_(PrerenderManager::GetMode()) {
252 } 259 }
253 260
254 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); } 261 ~RestorePrerenderMode() { PrerenderManager::SetMode(prev_mode_); }
255 262
256 private: 263 private:
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 static const int kDefaultChildId = -1; 310 static const int kDefaultChildId = -1;
304 static const int kDefaultRenderViewRouteId = -1; 311 static const int kDefaultRenderViewRouteId = -1;
305 312
306 PrerenderTest() 313 PrerenderTest()
307 : ui_thread_(BrowserThread::UI, &message_loop_), 314 : ui_thread_(BrowserThread::UI, &message_loop_),
308 prerender_manager_(new UnitTestPrerenderManager(&profile_)), 315 prerender_manager_(new UnitTestPrerenderManager(&profile_)),
309 prerender_link_manager_( 316 prerender_link_manager_(
310 new PrerenderLinkManager(prerender_manager_.get())), 317 new PrerenderLinkManager(prerender_manager_.get())),
311 last_prerender_id_(0), 318 last_prerender_id_(0),
312 field_trial_list_(nullptr) { 319 field_trial_list_(nullptr) {
320 prerender_manager()->SetIsLowEndDevice(false);
321
313 // Enable omnibox prerendering. 322 // Enable omnibox prerendering.
314 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 323 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
315 switches::kPrerenderFromOmnibox, 324 switches::kPrerenderFromOmnibox,
316 switches::kPrerenderFromOmniboxSwitchValueEnabled); 325 switches::kPrerenderFromOmniboxSwitchValueEnabled);
317 } 326 }
318 327
319 ~PrerenderTest() override { 328 ~PrerenderTest() override {
320 prerender_link_manager_->OnChannelClosing(kDefaultChildId); 329 prerender_link_manager_->OnChannelClosing(kDefaultChildId);
321 prerender_link_manager_->Shutdown(); 330 prerender_link_manager_->Shutdown();
322 prerender_manager_->Shutdown(); 331 prerender_manager_->Shutdown();
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN); 439 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
431 std::unique_ptr<PrerenderHandle> prerender_handle( 440 std::unique_ptr<PrerenderHandle> prerender_handle(
432 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize)); 441 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize));
433 EXPECT_TRUE(prerender_handle); 442 EXPECT_TRUE(prerender_handle);
434 EXPECT_TRUE(prerender_handle->IsPrerendering()); 443 EXPECT_TRUE(prerender_handle->IsPrerendering());
435 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 444 EXPECT_TRUE(prerender_contents->prerendering_has_started());
436 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 445 EXPECT_EQ(prerender_contents, prerender_handle->contents());
437 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); 446 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
438 } 447 }
439 448
449 TEST_F(PrerenderTest, PrerenderDisabledOnLowEndDevice) {
450 GURL url("http://www.google.com/");
451 ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible());
452 prerender_manager()->SetIsLowEndDevice(true);
453 EXPECT_FALSE(AddSimplePrerender(url));
454 }
455
456 TEST_F(PrerenderTest, OfflinePrerenderPossibleOnLowEndDevice) {
457 GURL url("http://www.google.com/");
458 ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible());
459
460 prerender_manager()->SetIsLowEndDevice(true);
461
462 DummyPrerenderContents* prerender_contents =
463 prerender_manager()->CreateNextPrerenderContents(
464 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
465 std::unique_ptr<PrerenderHandle> prerender_handle(
466 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize));
467 EXPECT_TRUE(prerender_handle);
468 EXPECT_TRUE(prerender_handle->IsPrerendering());
469 EXPECT_TRUE(prerender_contents->prerendering_has_started());
470 }
471
440 TEST_F(PrerenderTest, FoundTest) { 472 TEST_F(PrerenderTest, FoundTest) {
441 GURL url("http://www.google.com/"); 473 GURL url("http://www.google.com/");
442 DummyPrerenderContents* prerender_contents = 474 DummyPrerenderContents* prerender_contents =
443 prerender_manager()->CreateNextPrerenderContents( 475 prerender_manager()->CreateNextPrerenderContents(
444 url, 476 url,
445 FINAL_STATUS_USED); 477 FINAL_STATUS_USED);
446 EXPECT_TRUE(AddSimplePrerender(url)); 478 EXPECT_TRUE(AddSimplePrerender(url));
447 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 479 EXPECT_TRUE(prerender_contents->prerendering_has_started());
448 std::unique_ptr<PrerenderContents> entry = 480 std::unique_ptr<PrerenderContents> entry =
449 prerender_manager()->FindAndUseEntry(url); 481 prerender_manager()->FindAndUseEntry(url);
(...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1628 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1660 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1629 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1661 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1630 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); 1662 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin());
1631 std::unique_ptr<PrerenderContents> entry = 1663 std::unique_ptr<PrerenderContents> entry =
1632 prerender_manager()->FindAndUseEntry(url); 1664 prerender_manager()->FindAndUseEntry(url);
1633 ASSERT_EQ(prerender_contents, entry.get()); 1665 ASSERT_EQ(prerender_contents, entry.get());
1634 EXPECT_FALSE(prerender_handle->IsPrerendering()); 1666 EXPECT_FALSE(prerender_handle->IsPrerendering());
1635 } 1667 }
1636 1668
1637 } // namespace prerender 1669 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698