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

Side by Side Diff: components/precache/core/precache_fetcher_unittest.cc

Issue 1961153003: Add pause/resume functionality to precache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a proto Created 4 years, 7 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/precache/core/precache_fetcher.h" 5 #include "components/precache/core/precache_fetcher.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <cstring> 9 #include <cstring>
10 #include <memory> 10 #include <memory>
11 #include <set> 11 #include <set>
12 #include <string> 12 #include <string>
13 #include <vector> 13 #include <vector>
14 14
15 #include "base/bind.h" 15 #include "base/bind.h"
16 #include "base/callback.h" 16 #include "base/callback.h"
17 #include "base/command_line.h" 17 #include "base/command_line.h"
18 #include "base/compiler_specific.h" 18 #include "base/compiler_specific.h"
19 #include "base/memory/ptr_util.h" 19 #include "base/memory/ptr_util.h"
20 #include "base/memory/ref_counted.h" 20 #include "base/memory/ref_counted.h"
21 #include "base/memory/weak_ptr.h" 21 #include "base/memory/weak_ptr.h"
22 #include "base/run_loop.h" 22 #include "base/run_loop.h"
23 #include "base/test/histogram_tester.h" 23 #include "base/test/histogram_tester.h"
24 #include "base/threading/thread_task_runner_handle.h" 24 #include "base/threading/thread_task_runner_handle.h"
25 #include "components/precache/core/precache_switches.h" 25 #include "components/precache/core/precache_switches.h"
26 #include "components/precache/core/proto/precache.pb.h" 26 #include "components/precache/core/proto/precache.pb.h"
27 #include "components/precache/core/proto/unfinished_work.pb.h"
27 #include "net/base/load_flags.h" 28 #include "net/base/load_flags.h"
28 #include "net/http/http_response_headers.h" 29 #include "net/http/http_response_headers.h"
29 #include "net/http/http_status_code.h" 30 #include "net/http/http_status_code.h"
30 #include "net/url_request/test_url_fetcher_factory.h" 31 #include "net/url_request/test_url_fetcher_factory.h"
31 #include "net/url_request/url_request_status.h" 32 #include "net/url_request/url_request_status.h"
32 #include "net/url_request/url_request_test_util.h" 33 #include "net/url_request/url_request_test_util.h"
33 #include "testing/gmock/include/gmock/gmock.h" 34 #include "testing/gmock/include/gmock/gmock.h"
34 #include "testing/gtest/include/gtest/gtest.h" 35 #include "testing/gtest/include/gtest/gtest.h"
35 #include "url/gurl.h" 36 #include "url/gurl.h"
36 37
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 int total_response_bytes() const { return total_response_bytes_; } 88 int total_response_bytes() const { return total_response_bytes_; }
88 89
89 private: 90 private:
90 // Multiset with one entry for each URL requested. 91 // Multiset with one entry for each URL requested.
91 std::multiset<GURL> requested_urls_; 92 std::multiset<GURL> requested_urls_;
92 int total_response_bytes_; 93 int total_response_bytes_;
93 }; 94 };
94 95
95 class TestPrecacheDelegate : public PrecacheFetcher::PrecacheDelegate { 96 class TestPrecacheDelegate : public PrecacheFetcher::PrecacheDelegate {
96 public: 97 public:
97 TestPrecacheDelegate() : was_on_done_called_(false) {} 98 TestPrecacheDelegate()
99 : on_done_was_called_(false) {}
98 100
99 void OnDone() override { was_on_done_called_ = true; } 101 void OnDone() override { on_done_was_called_ = true; }
100 102
101 bool was_on_done_called() const { 103 bool was_on_done_called() const {
102 return was_on_done_called_; 104 return on_done_was_called_;
103 } 105 }
104 106
105 private: 107 private:
106 bool was_on_done_called_; 108 bool on_done_was_called_;
107 }; 109 };
108 110
109 class MockURLFetcherFactory : public net::URLFetcherFactory { 111 class MockURLFetcherFactory : public net::URLFetcherFactory {
110 public: 112 public:
111 typedef net::URLFetcher* DoURLFetcher( 113 typedef net::URLFetcher* DoURLFetcher(
112 int id, 114 int id,
113 const GURL& url, 115 const GURL& url,
114 net::URLFetcher::RequestType request_type, 116 net::URLFetcher::RequestType request_type,
115 net::URLFetcherDelegate* delegate); 117 net::URLFetcherDelegate* delegate);
116 118
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 } 322 }
321 323
322 class PrecacheFetcherTest : public testing::Test { 324 class PrecacheFetcherTest : public testing::Test {
323 public: 325 public:
324 PrecacheFetcherTest() 326 PrecacheFetcherTest()
325 : request_context_(new net::TestURLRequestContextGetter( 327 : request_context_(new net::TestURLRequestContextGetter(
326 base::ThreadTaskRunnerHandle::Get())), 328 base::ThreadTaskRunnerHandle::Get())),
327 factory_(NULL, 329 factory_(NULL,
328 base::Bind(&TestURLFetcherCallback::CreateURLFetcher, 330 base::Bind(&TestURLFetcherCallback::CreateURLFetcher,
329 base::Unretained(&url_callback_))), 331 base::Unretained(&url_callback_))),
330 expected_total_response_bytes_(0) {} 332 expected_total_response_bytes_(0),
333 empty_unfinished_work_(new PrecacheUnfinishedWork()) {}
331 334
332 protected: 335 protected:
333 void SetDefaultFlags() { 336 void SetDefaultFlags() {
334 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 337 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
335 switches::kPrecacheConfigSettingsURL, kConfigURL); 338 switches::kPrecacheConfigSettingsURL, kConfigURL);
336 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 339 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
337 switches::kPrecacheManifestURLPrefix, kManifestURLPrefix); 340 switches::kPrecacheManifestURLPrefix, kManifestURLPrefix);
338 } 341 }
339 342
340 base::MessageLoopForUI loop_; 343 base::MessageLoopForUI loop_;
341 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 344 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
342 TestURLFetcherCallback url_callback_; 345 TestURLFetcherCallback url_callback_;
343 net::FakeURLFetcherFactory factory_; 346 net::FakeURLFetcherFactory factory_;
344 TestPrecacheDelegate precache_delegate_; 347 TestPrecacheDelegate precache_delegate_;
345 int expected_total_response_bytes_; 348 int expected_total_response_bytes_;
349 std::unique_ptr<PrecacheUnfinishedWork> empty_unfinished_work_;
346 }; 350 };
347 351
348 TEST_F(PrecacheFetcherTest, FullPrecache) { 352 TEST_F(PrecacheFetcherTest, FullPrecache) {
349 SetDefaultFlags(); 353 SetDefaultFlags();
350 354
351 std::vector<std::string> starting_hosts; 355 std::vector<std::string> starting_hosts;
352 starting_hosts.push_back("manifest-fetch-failure.com"); 356 starting_hosts.push_back("manifest-fetch-failure.com");
353 starting_hosts.push_back("bad-manifest.com"); 357 starting_hosts.push_back("bad-manifest.com");
354 starting_hosts.push_back("good-manifest.com"); 358 starting_hosts.push_back("good-manifest.com");
355 starting_hosts.push_back("not-in-top-3.com"); 359 starting_hosts.push_back("not-in-top-3.com");
(...skipping 26 matching lines...) Expand all
382 net::URLRequestStatus::SUCCESS); 386 net::URLRequestStatus::SUCCESS);
383 factory_.SetFakeResponse(GURL(kForcedStartingURLManifestURL), 387 factory_.SetFakeResponse(GURL(kForcedStartingURLManifestURL),
384 PrecacheManifest().SerializeAsString(), net::HTTP_OK, 388 PrecacheManifest().SerializeAsString(), net::HTTP_OK,
385 net::URLRequestStatus::SUCCESS); 389 net::URLRequestStatus::SUCCESS);
386 390
387 base::HistogramTester histogram; 391 base::HistogramTester histogram;
388 392
389 { 393 {
390 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 394 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
391 GURL(), std::string(), 395 GURL(), std::string(),
396 empty_unfinished_work_.get(),
392 &precache_delegate_); 397 &precache_delegate_);
393 precache_fetcher.Start(); 398 precache_fetcher.Start();
394 399
395 loop_.RunUntilIdle(); 400 loop_.RunUntilIdle();
396 401
397 // Destroy the PrecacheFetcher after it has finished, to record metrics. 402 // Destroy the PrecacheFetcher after it has finished, to record metrics.
398 } 403 }
399 404
400 std::multiset<GURL> expected_requested_urls; 405 std::multiset<GURL> expected_requested_urls;
401 expected_requested_urls.insert(GURL(kConfigURL)); 406 expected_requested_urls.insert(GURL(kConfigURL));
402 expected_requested_urls.insert(GURL(kManifestFetchFailureURL)); 407 expected_requested_urls.insert(GURL(kManifestFetchFailureURL));
403 expected_requested_urls.insert(GURL(kBadManifestURL)); 408 expected_requested_urls.insert(GURL(kBadManifestURL));
404 expected_requested_urls.insert(GURL(kGoodManifestURL)); 409 expected_requested_urls.insert(GURL(kGoodManifestURL));
405 expected_requested_urls.insert(GURL(kResourceFetchFailureURL)); 410 expected_requested_urls.insert(GURL(kResourceFetchFailureURL));
406 expected_requested_urls.insert(GURL(kGoodResourceURL)); 411 expected_requested_urls.insert(GURL(kGoodResourceURL));
407 expected_requested_urls.insert(GURL(kForcedStartingURLManifestURL)); 412 expected_requested_urls.insert(GURL(kForcedStartingURLManifestURL));
408 413
409 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 414 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
410 415
411 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 416 EXPECT_TRUE(precache_delegate_.was_on_done_called());
412 417
413 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1); 418 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1);
414 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total", 419 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total",
415 url_callback_.total_response_bytes(), 1); 420 url_callback_.total_response_bytes(), 1);
416 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); 421 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
417 } 422 }
418 423
424 TEST_F(PrecacheFetcherTest, PrecachePauseResume) {
425 SetDefaultFlags();
426
427 PrecacheConfigurationSettings config;
428 config.set_top_sites_count(3);
429 std::vector<std::string> starting_hosts;
430
431 PrecacheFetcher first_fetcher(starting_hosts, request_context_.get(),
432 GURL(), std::string(),
433 empty_unfinished_work_.get(),
434 &precache_delegate_);
435 base::Time then = base::Time::Now() - base::TimeDelta::FromHours(1);
436 std::list<GURL> manifests, resources;
437 manifests.push_back(GURL("http://manifest-url-prefix.com/manifest1.com"));
438 manifests.push_back(GURL("http://manifest-url-prefix.com/manifest2.com"));
439 resources.push_back(GURL(kGoodResourceURL));
440 first_fetcher.AssignWorkForTest(
441 manifests, resources, 271828, 314159, 5, then);
442 loop_.RunUntilIdle();
443
444 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work =
445 first_fetcher.GetUnfinishedWork();
446
447 std::multiset<GURL> expected_requested_urls;
448 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
449
450 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
451 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
452 factory_.SetFakeResponse(GURL(kBadManifestURL), "bad protobuf", net::HTTP_OK,
453 net::URLRequestStatus::SUCCESS);
454 factory_.SetFakeResponse(GURL("http://manifest-url-prefix.com/manifest1.com"),
455 "bad protobuf", net::HTTP_OK,
456 net::URLRequestStatus::SUCCESS);
457 factory_.SetFakeResponse(GURL("http://manifest-url-prefix.com/manifest2.com"),
458 "bad protobuf", net::HTTP_OK,
459 net::URLRequestStatus::SUCCESS);
460 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
461 net::URLRequestStatus::SUCCESS);
462
463 // Starting hosts should not be fetched.
464 starting_hosts.push_back("bad-manifest.com");
465
466 PrecacheFetcher second_fetcher(starting_hosts, request_context_.get(),
467 GURL(), std::string(),
468 unfinished_work.get(),
469 &precache_delegate_);
470 second_fetcher.Start();
471 loop_.RunUntilIdle();
472
473 expected_requested_urls.insert(GURL(kConfigURL));
474 expected_requested_urls.insert(
475 GURL("http://manifest-url-prefix.com/manifest1.com"));
476 expected_requested_urls.insert(
477 GURL("http://manifest-url-prefix.com/manifest2.com"));
478 expected_requested_urls.insert(GURL(kGoodResourceURL));
479
480 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
481 EXPECT_TRUE(precache_delegate_.was_on_done_called());
482 }
483
484 TEST_F(PrecacheFetcherTest, ResumeWithConfigOnly) {
485 SetDefaultFlags();
486 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
487 new PrecacheUnfinishedWork());
488 unfinished_work->mutable_config_settings()->add_forced_site(
489 "good-manifest.com");
490 unfinished_work->set_start_time(base::Time::Now().ToInternalValue());
491 PrecacheManifest good_manifest;
492 good_manifest.add_resource()->set_url(kGoodResourceURL);
493
494 factory_.SetFakeResponse(GURL(kGoodManifestURL),
495 good_manifest.SerializeAsString(), net::HTTP_OK,
496 net::URLRequestStatus::SUCCESS);
497 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
498 net::URLRequestStatus::SUCCESS);
499 {
500 PrecacheFetcher precache_fetcher(std::vector<std::string>(),
501 request_context_.get(),
502 GURL(), std::string(),
503 unfinished_work.get(),
504 &precache_delegate_);
505 precache_fetcher.Start();
506
507 loop_.RunUntilIdle();
508
509 // Destroy the PrecacheFetcher after it has finished, to record metrics.
510 }
511
512 std::multiset<GURL> expected_requested_urls;
513 expected_requested_urls.insert(GURL(kGoodManifestURL));
514 expected_requested_urls.insert(GURL(kGoodResourceURL));
515
516 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
517 EXPECT_TRUE(precache_delegate_.was_on_done_called());
518
519 }
520
521
419 TEST_F(PrecacheFetcherTest, CustomURLs) { 522 TEST_F(PrecacheFetcherTest, CustomURLs) {
420 SetDefaultFlags(); 523 SetDefaultFlags();
421 524
422 std::vector<std::string> starting_hosts; 525 std::vector<std::string> starting_hosts;
423 starting_hosts.push_back("good-manifest.com"); 526 starting_hosts.push_back("good-manifest.com");
424 527
425 PrecacheConfigurationSettings config; 528 PrecacheConfigurationSettings config;
426 529
427 PrecacheManifest good_manifest; 530 PrecacheManifest good_manifest;
428 good_manifest.add_resource()->set_url(kGoodResourceURL); 531 good_manifest.add_resource()->set_url(kGoodResourceURL);
429 532
430 factory_.SetFakeResponse(GURL(kCustomConfigURL), config.SerializeAsString(), 533 factory_.SetFakeResponse(GURL(kCustomConfigURL), config.SerializeAsString(),
431 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 534 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
432 factory_.SetFakeResponse(GURL(kCustomGoodManifestURL), 535 factory_.SetFakeResponse(GURL(kCustomGoodManifestURL),
433 good_manifest.SerializeAsString(), net::HTTP_OK, 536 good_manifest.SerializeAsString(), net::HTTP_OK,
434 net::URLRequestStatus::SUCCESS); 537 net::URLRequestStatus::SUCCESS);
435 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK, 538 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
436 net::URLRequestStatus::SUCCESS); 539 net::URLRequestStatus::SUCCESS);
437 540
438 PrecacheFetcher precache_fetcher( 541 PrecacheFetcher precache_fetcher(
439 starting_hosts, request_context_.get(), GURL(kCustomConfigURL), 542 starting_hosts, request_context_.get(), GURL(kCustomConfigURL),
440 kCustomManifestURLPrefix, &precache_delegate_); 543 kCustomManifestURLPrefix, empty_unfinished_work_.get(),
544 &precache_delegate_);
441 precache_fetcher.Start(); 545 precache_fetcher.Start();
442 546
443 loop_.RunUntilIdle(); 547 loop_.RunUntilIdle();
444 548
445 std::multiset<GURL> expected_requested_urls; 549 std::multiset<GURL> expected_requested_urls;
446 expected_requested_urls.insert(GURL(kCustomConfigURL)); 550 expected_requested_urls.insert(GURL(kCustomConfigURL));
447 expected_requested_urls.insert(GURL(kCustomGoodManifestURL)); 551 expected_requested_urls.insert(GURL(kCustomGoodManifestURL));
448 expected_requested_urls.insert(GURL(kGoodResourceURL)); 552 expected_requested_urls.insert(GURL(kGoodResourceURL));
449 553
450 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 554 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
451 555
452 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 556 EXPECT_TRUE(precache_delegate_.was_on_done_called());
453 } 557 }
454 558
455 TEST_F(PrecacheFetcherTest, ConfigFetchFailure) { 559 TEST_F(PrecacheFetcherTest, ConfigFetchFailure) {
456 SetDefaultFlags(); 560 SetDefaultFlags();
457 561
458 std::vector<std::string> starting_hosts(1, "good-manifest.com"); 562 std::vector<std::string> starting_hosts(1, "good-manifest.com");
459 563
460 factory_.SetFakeResponse(GURL(kConfigURL), "", 564 factory_.SetFakeResponse(GURL(kConfigURL), "",
461 net::HTTP_INTERNAL_SERVER_ERROR, 565 net::HTTP_INTERNAL_SERVER_ERROR,
462 net::URLRequestStatus::FAILED); 566 net::URLRequestStatus::FAILED);
463 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK, 567 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK,
464 net::URLRequestStatus::SUCCESS); 568 net::URLRequestStatus::SUCCESS);
465 569
466 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 570 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
467 GURL(), std::string(), &precache_delegate_); 571 GURL(), std::string(),
572 empty_unfinished_work_.get(),
573 &precache_delegate_);
468 precache_fetcher.Start(); 574 precache_fetcher.Start();
469 575
470 loop_.RunUntilIdle(); 576 loop_.RunUntilIdle();
471 577
472 std::multiset<GURL> expected_requested_urls; 578 std::multiset<GURL> expected_requested_urls;
473 expected_requested_urls.insert(GURL(kConfigURL)); 579 expected_requested_urls.insert(GURL(kConfigURL));
474 expected_requested_urls.insert(GURL(kGoodManifestURL)); 580 expected_requested_urls.insert(GURL(kGoodManifestURL));
475 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 581 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
476 582
477 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 583 EXPECT_TRUE(precache_delegate_.was_on_done_called());
478 } 584 }
479 585
480 TEST_F(PrecacheFetcherTest, BadConfig) { 586 TEST_F(PrecacheFetcherTest, BadConfig) {
481 SetDefaultFlags(); 587 SetDefaultFlags();
482 588
483 std::vector<std::string> starting_hosts(1, "good-manifest.com"); 589 std::vector<std::string> starting_hosts(1, "good-manifest.com");
484 590
485 factory_.SetFakeResponse(GURL(kConfigURL), "bad protobuf", net::HTTP_OK, 591 factory_.SetFakeResponse(GURL(kConfigURL), "bad protobuf", net::HTTP_OK,
486 net::URLRequestStatus::SUCCESS); 592 net::URLRequestStatus::SUCCESS);
487 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK, 593 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK,
488 net::URLRequestStatus::SUCCESS); 594 net::URLRequestStatus::SUCCESS);
489 595
490 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 596 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
491 GURL(), std::string(), &precache_delegate_); 597 GURL(), std::string(),
598 empty_unfinished_work_.get(),
599 &precache_delegate_);
492 precache_fetcher.Start(); 600 precache_fetcher.Start();
493 601
494 loop_.RunUntilIdle(); 602 loop_.RunUntilIdle();
495 603
496 std::multiset<GURL> expected_requested_urls; 604 std::multiset<GURL> expected_requested_urls;
497 expected_requested_urls.insert(GURL(kConfigURL)); 605 expected_requested_urls.insert(GURL(kConfigURL));
498 expected_requested_urls.insert(GURL(kGoodManifestURL)); 606 expected_requested_urls.insert(GURL(kGoodManifestURL));
499 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 607 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
500 608
501 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 609 EXPECT_TRUE(precache_delegate_.was_on_done_called());
502 } 610 }
503 611
504 TEST_F(PrecacheFetcherTest, Cancel) { 612 TEST_F(PrecacheFetcherTest, Cancel) {
505 SetDefaultFlags(); 613 SetDefaultFlags();
506 614
507 std::vector<std::string> starting_hosts(1, "starting-url.com"); 615 std::vector<std::string> starting_hosts(1, "starting-url.com");
508 616
509 PrecacheConfigurationSettings config; 617 PrecacheConfigurationSettings config;
510 config.set_top_sites_count(1); 618 config.set_top_sites_count(1);
511 619
512 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), 620 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
513 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 621 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
514 622
515 base::HistogramTester histogram; 623 base::HistogramTester histogram;
516 624
517 { 625 {
518 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 626 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
519 GURL(), std::string(), 627 GURL(), std::string(),
628 empty_unfinished_work_.get(),
520 &precache_delegate_); 629 &precache_delegate_);
521 precache_fetcher.Start(); 630 precache_fetcher.Start();
522 631
523 // Destroy the PrecacheFetcher, to cancel precaching and record metrics. 632 // Destroy the PrecacheFetcher, to cancel precaching and record metrics.
524 // This should not cause OnDone to be called on the precache delegate. 633 // This should not cause OnDone to be called on the precache delegate.
525 } 634 }
526 635
527 loop_.RunUntilIdle(); 636 loop_.RunUntilIdle();
528 637
529 std::multiset<GURL> expected_requested_urls; 638 std::multiset<GURL> expected_requested_urls;
(...skipping 15 matching lines...) Expand all
545 std::vector<std::string> starting_hosts(1, "starting-url.com"); 654 std::vector<std::string> starting_hosts(1, "starting-url.com");
546 655
547 PrecacheConfigurationSettings config; 656 PrecacheConfigurationSettings config;
548 config.set_top_sites_count(0); 657 config.set_top_sites_count(0);
549 658
550 factory_.SetFakeResponse(GURL(PRECACHE_CONFIG_SETTINGS_URL), 659 factory_.SetFakeResponse(GURL(PRECACHE_CONFIG_SETTINGS_URL),
551 config.SerializeAsString(), net::HTTP_OK, 660 config.SerializeAsString(), net::HTTP_OK,
552 net::URLRequestStatus::SUCCESS); 661 net::URLRequestStatus::SUCCESS);
553 662
554 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 663 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
555 GURL(), std::string(), &precache_delegate_); 664 GURL(), std::string(),
665 empty_unfinished_work_.get(),
666 &precache_delegate_);
556 precache_fetcher.Start(); 667 precache_fetcher.Start();
557 668
558 loop_.RunUntilIdle(); 669 loop_.RunUntilIdle();
559 670
560 std::multiset<GURL> expected_requested_urls; 671 std::multiset<GURL> expected_requested_urls;
561 expected_requested_urls.insert(GURL(PRECACHE_CONFIG_SETTINGS_URL)); 672 expected_requested_urls.insert(GURL(PRECACHE_CONFIG_SETTINGS_URL));
562 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 673 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
563 674
564 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 675 EXPECT_TRUE(precache_delegate_.was_on_done_called());
565 } 676 }
(...skipping 14 matching lines...) Expand all
580 config.set_top_sites_count(1); 691 config.set_top_sites_count(1);
581 692
582 GURL manifest_url(PRECACHE_MANIFEST_URL_PREFIX "starting-url.com"); 693 GURL manifest_url(PRECACHE_MANIFEST_URL_PREFIX "starting-url.com");
583 694
584 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), 695 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
585 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 696 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
586 factory_.SetFakeResponse(manifest_url, PrecacheManifest().SerializeAsString(), 697 factory_.SetFakeResponse(manifest_url, PrecacheManifest().SerializeAsString(),
587 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 698 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
588 699
589 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 700 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
590 GURL(), std::string(), &precache_delegate_); 701 GURL(), std::string(),
702 empty_unfinished_work_.get(),
703 &precache_delegate_);
591 precache_fetcher.Start(); 704 precache_fetcher.Start();
592 705
593 loop_.RunUntilIdle(); 706 loop_.RunUntilIdle();
594 707
595 std::multiset<GURL> expected_requested_urls; 708 std::multiset<GURL> expected_requested_urls;
596 expected_requested_urls.insert(GURL(kConfigURL)); 709 expected_requested_urls.insert(GURL(kConfigURL));
597 expected_requested_urls.insert(manifest_url); 710 expected_requested_urls.insert(manifest_url);
598 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 711 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
599 712
600 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 713 EXPECT_TRUE(precache_delegate_.was_on_done_called());
(...skipping 23 matching lines...) Expand all
624 good_manifest.SerializeAsString(), net::HTTP_OK, 737 good_manifest.SerializeAsString(), net::HTTP_OK,
625 net::URLRequestStatus::SUCCESS); 738 net::URLRequestStatus::SUCCESS);
626 factory_.SetFakeResponse(GURL("http://good-manifest.com/retrieved"), "good", 739 factory_.SetFakeResponse(GURL("http://good-manifest.com/retrieved"), "good",
627 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 740 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
628 741
629 base::HistogramTester histogram; 742 base::HistogramTester histogram;
630 743
631 { 744 {
632 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 745 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
633 GURL(), std::string(), 746 GURL(), std::string(),
747 empty_unfinished_work_.get(),
634 &precache_delegate_); 748 &precache_delegate_);
635 precache_fetcher.Start(); 749 precache_fetcher.Start();
636 750
637 loop_.RunUntilIdle(); 751 loop_.RunUntilIdle();
638 752
639 // Destroy the PrecacheFetcher after it has finished, to record metrics. 753 // Destroy the PrecacheFetcher after it has finished, to record metrics.
640 } 754 }
641 755
642 std::multiset<GURL> expected_requested_urls; 756 std::multiset<GURL> expected_requested_urls;
643 expected_requested_urls.insert(GURL(kConfigURL)); 757 expected_requested_urls.insert(GURL(kConfigURL));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 810
697 factory_.SetFakeResponse(GURL(kGoodManifestURL), 811 factory_.SetFakeResponse(GURL(kGoodManifestURL),
698 good_manifest.SerializeAsString(), net::HTTP_OK, 812 good_manifest.SerializeAsString(), net::HTTP_OK,
699 net::URLRequestStatus::SUCCESS); 813 net::URLRequestStatus::SUCCESS);
700 814
701 base::HistogramTester histogram; 815 base::HistogramTester histogram;
702 816
703 { 817 {
704 PrecacheFetcher precache_fetcher({"good-manifest.com"}, 818 PrecacheFetcher precache_fetcher({"good-manifest.com"},
705 request_context_.get(), GURL(), 819 request_context_.get(), GURL(),
706 std::string(), &precache_delegate_); 820 std::string(),
821 empty_unfinished_work_.get(),
822 &precache_delegate_);
707 precache_fetcher.Start(); 823 precache_fetcher.Start();
708 824
709 loop_.RunUntilIdle(); 825 loop_.RunUntilIdle();
710 826
711 // Destroy the PrecacheFetcher after it has finished, to record metrics. 827 // Destroy the PrecacheFetcher after it has finished, to record metrics.
712 } 828 }
713 829
714 // We don't know which will make it and which won't due to the parallelism in 830 // We don't know which will make it and which won't due to the parallelism in
715 // the pool of Fetchers. 831 // the pool of Fetchers.
716 EXPECT_GT(kNumResources, url_callback_.requested_urls().size()); 832 EXPECT_GT(kNumResources, url_callback_.requested_urls().size());
717 833
718 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 834 EXPECT_TRUE(precache_delegate_.was_on_done_called());
719 835
720 // good-manifest.com will not have been completed. 836 // good-manifest.com will not have been completed.
721 EXPECT_THAT(histogram.GetAllSamples("Precache.Fetch.PercentCompleted"), 837 EXPECT_THAT(histogram.GetAllSamples("Precache.Fetch.PercentCompleted"),
722 ElementsAre(base::Bucket(0, 1))); 838 ElementsAre(base::Bucket(0, 1)));
723 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); 839 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
724 } 840 }
725 841
726 } // namespace 842 } // namespace
727 843
728 } // namespace precache 844 } // namespace precache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698