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

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: 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/files/file_path.h"
20 #include "base/files/scoped_temp_dir.h"
19 #include "base/memory/ptr_util.h" 21 #include "base/memory/ptr_util.h"
20 #include "base/memory/ref_counted.h" 22 #include "base/memory/ref_counted.h"
21 #include "base/memory/weak_ptr.h" 23 #include "base/memory/weak_ptr.h"
22 #include "base/run_loop.h" 24 #include "base/run_loop.h"
23 #include "base/test/histogram_tester.h" 25 #include "base/test/histogram_tester.h"
24 #include "base/thread_task_runner_handle.h" 26 #include "base/thread_task_runner_handle.h"
27 #include "components/precache/core/precache_database.h"
25 #include "components/precache/core/precache_switches.h" 28 #include "components/precache/core/precache_switches.h"
26 #include "components/precache/core/proto/precache.pb.h" 29 #include "components/precache/core/proto/precache.pb.h"
27 #include "net/base/load_flags.h" 30 #include "net/base/load_flags.h"
28 #include "net/http/http_response_headers.h" 31 #include "net/http/http_response_headers.h"
29 #include "net/http/http_status_code.h" 32 #include "net/http/http_status_code.h"
30 #include "net/url_request/test_url_fetcher_factory.h" 33 #include "net/url_request/test_url_fetcher_factory.h"
31 #include "net/url_request/url_request_status.h" 34 #include "net/url_request/url_request_status.h"
32 #include "net/url_request/url_request_test_util.h" 35 #include "net/url_request/url_request_test_util.h"
33 #include "testing/gmock/include/gmock/gmock.h" 36 #include "testing/gmock/include/gmock/gmock.h"
34 #include "testing/gtest/include/gtest/gtest.h" 37 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 int total_response_bytes() const { return total_response_bytes_; } 90 int total_response_bytes() const { return total_response_bytes_; }
88 91
89 private: 92 private:
90 // Multiset with one entry for each URL requested. 93 // Multiset with one entry for each URL requested.
91 std::multiset<GURL> requested_urls_; 94 std::multiset<GURL> requested_urls_;
92 int total_response_bytes_; 95 int total_response_bytes_;
93 }; 96 };
94 97
95 class TestPrecacheDelegate : public PrecacheFetcher::PrecacheDelegate { 98 class TestPrecacheDelegate : public PrecacheFetcher::PrecacheDelegate {
96 public: 99 public:
97 TestPrecacheDelegate() : was_on_done_called_(false) {} 100 TestPrecacheDelegate()
101 : on_done_was_called_(false),
102 on_init_done_was_called_(false),
103 on_shutdown_done_was_called_(false) {}
98 104
99 void OnDone() override { was_on_done_called_ = true; } 105 void OnDone() override { on_done_was_called_ = true; }
106 void OnInitDone() override { on_init_done_was_called_ = true; }
107 void OnShutdownDone() override { on_shutdown_done_was_called_ = true; }
108
100 109
101 bool was_on_done_called() const { 110 bool was_on_done_called() const {
102 return was_on_done_called_; 111 return on_done_was_called_;
112 }
113
114 bool on_init_done_was_called() const {
115 return on_init_done_was_called_;
116 }
117
118 bool on_shutdown_done_was_called() const {
119 return on_shutdown_done_was_called_;
103 } 120 }
104 121
105 private: 122 private:
106 bool was_on_done_called_; 123 bool on_done_was_called_;
124 bool on_init_done_was_called_;
125 bool on_shutdown_done_was_called_;
107 }; 126 };
108 127
109 class MockURLFetcherFactory : public net::URLFetcherFactory { 128 class MockURLFetcherFactory : public net::URLFetcherFactory {
110 public: 129 public:
111 typedef net::URLFetcher* DoURLFetcher( 130 typedef net::URLFetcher* DoURLFetcher(
112 int id, 131 int id,
113 const GURL& url, 132 const GURL& url,
114 net::URLFetcher::RequestType request_type, 133 net::URLFetcher::RequestType request_type,
115 net::URLFetcherDelegate* delegate); 134 net::URLFetcherDelegate* delegate);
116 135
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 class PrecacheFetcherTest : public testing::Test { 341 class PrecacheFetcherTest : public testing::Test {
323 public: 342 public:
324 PrecacheFetcherTest() 343 PrecacheFetcherTest()
325 : request_context_(new net::TestURLRequestContextGetter( 344 : request_context_(new net::TestURLRequestContextGetter(
326 base::ThreadTaskRunnerHandle::Get())), 345 base::ThreadTaskRunnerHandle::Get())),
327 factory_(NULL, 346 factory_(NULL,
328 base::Bind(&TestURLFetcherCallback::CreateURLFetcher, 347 base::Bind(&TestURLFetcherCallback::CreateURLFetcher,
329 base::Unretained(&url_callback_))), 348 base::Unretained(&url_callback_))),
330 expected_total_response_bytes_(0) {} 349 expected_total_response_bytes_(0) {}
331 350
351 void SetUp() override {
352 precache_database_.reset(new PrecacheDatabase());
353
354 ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir());
355 base::FilePath db_path = scoped_temp_dir_.path().Append(
356 base::FilePath(FILE_PATH_LITERAL("precache_database")));
357 precache_database_->Init(db_path);
358 }
359
332 protected: 360 protected:
333 void SetDefaultFlags() { 361 void SetDefaultFlags() {
334 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 362 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
335 switches::kPrecacheConfigSettingsURL, kConfigURL); 363 switches::kPrecacheConfigSettingsURL, kConfigURL);
336 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 364 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
337 switches::kPrecacheManifestURLPrefix, kManifestURLPrefix); 365 switches::kPrecacheManifestURLPrefix, kManifestURLPrefix);
338 } 366 }
339 367
368 // Must be declared first so that it is destroyed last.
369 base::ScopedTempDir scoped_temp_dir_;
370 std::unique_ptr<PrecacheDatabase> precache_database_;
340 base::MessageLoopForUI loop_; 371 base::MessageLoopForUI loop_;
341 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 372 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
342 TestURLFetcherCallback url_callback_; 373 TestURLFetcherCallback url_callback_;
343 net::FakeURLFetcherFactory factory_; 374 net::FakeURLFetcherFactory factory_;
344 TestPrecacheDelegate precache_delegate_; 375 TestPrecacheDelegate precache_delegate_;
345 int expected_total_response_bytes_; 376 int expected_total_response_bytes_;
346 }; 377 };
347 378
348 TEST_F(PrecacheFetcherTest, FullPrecache) { 379 TEST_F(PrecacheFetcherTest, FullPrecache) {
349 SetDefaultFlags(); 380 SetDefaultFlags();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 net::URLRequestStatus::SUCCESS); 413 net::URLRequestStatus::SUCCESS);
383 factory_.SetFakeResponse(GURL(kForcedStartingURLManifestURL), 414 factory_.SetFakeResponse(GURL(kForcedStartingURLManifestURL),
384 PrecacheManifest().SerializeAsString(), net::HTTP_OK, 415 PrecacheManifest().SerializeAsString(), net::HTTP_OK,
385 net::URLRequestStatus::SUCCESS); 416 net::URLRequestStatus::SUCCESS);
386 417
387 base::HistogramTester histogram; 418 base::HistogramTester histogram;
388 419
389 { 420 {
390 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 421 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
391 GURL(), std::string(), 422 GURL(), std::string(),
392 &precache_delegate_); 423 &precache_delegate_,
424 precache_database_->GetWeakPtr(),
425 base::ThreadTaskRunnerHandle::Get());
393 precache_fetcher.Start(); 426 precache_fetcher.Start();
394 427
395 loop_.RunUntilIdle(); 428 loop_.RunUntilIdle();
396 429
397 // Destroy the PrecacheFetcher after it has finished, to record metrics. 430 // Destroy the PrecacheFetcher after it has finished, to record metrics.
398 } 431 }
399 432
400 std::multiset<GURL> expected_requested_urls; 433 std::multiset<GURL> expected_requested_urls;
401 expected_requested_urls.insert(GURL(kConfigURL)); 434 expected_requested_urls.insert(GURL(kConfigURL));
402 expected_requested_urls.insert(GURL(kManifestFetchFailureURL)); 435 expected_requested_urls.insert(GURL(kManifestFetchFailureURL));
403 expected_requested_urls.insert(GURL(kBadManifestURL)); 436 expected_requested_urls.insert(GURL(kBadManifestURL));
404 expected_requested_urls.insert(GURL(kGoodManifestURL)); 437 expected_requested_urls.insert(GURL(kGoodManifestURL));
405 expected_requested_urls.insert(GURL(kResourceFetchFailureURL)); 438 expected_requested_urls.insert(GURL(kResourceFetchFailureURL));
406 expected_requested_urls.insert(GURL(kGoodResourceURL)); 439 expected_requested_urls.insert(GURL(kGoodResourceURL));
407 expected_requested_urls.insert(GURL(kForcedStartingURLManifestURL)); 440 expected_requested_urls.insert(GURL(kForcedStartingURLManifestURL));
408 441
409 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 442 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
410 443
411 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 444 EXPECT_TRUE(precache_delegate_.was_on_done_called());
412 445
413 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1); 446 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1);
414 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total", 447 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total",
415 url_callback_.total_response_bytes(), 1); 448 url_callback_.total_response_bytes(), 1);
416 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); 449 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
417 } 450 }
418 451
452 TEST_F(PrecacheFetcherTest, PrecachePauseResume) {
453 SetDefaultFlags();
454
455 PrecacheConfigurationSettings config;
456 config.set_top_sites_count(3);
457 std::vector<std::string> starting_hosts;
458
459 PrecacheFetcher first_fetcher(starting_hosts, request_context_.get(),
460 GURL(), std::string(),
461 &precache_delegate_,
462 precache_database_->GetWeakPtr(),
463 base::ThreadTaskRunnerHandle::Get());
464 base::TimeTicks then = base::TimeTicks::Now() - base::TimeDelta::FromHours(1);
465 std::list<GURL> manifests, resources;
466 manifests.push_back(GURL("http://manifest-url-prefix.com/manifest1.com"));
467 manifests.push_back(GURL("http://manifest-url-prefix.com/manifest2.com"));
468 resources.push_back(GURL(kGoodResourceURL));
469 first_fetcher.AssignWorkForTest(
470 manifests, resources, 271828, 314159, 5, then);
471 first_fetcher.Shutdown();
472 loop_.RunUntilIdle();
473
474 std::multiset<GURL> expected_requested_urls;
475 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
476
477 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
478 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
479 factory_.SetFakeResponse(GURL(kBadManifestURL), "bad protobuf", net::HTTP_OK,
480 net::URLRequestStatus::SUCCESS);
481 factory_.SetFakeResponse(GURL("http://manifest-url-prefix.com/manifest1.com"),
482 "bad protobuf", net::HTTP_OK,
483 net::URLRequestStatus::SUCCESS);
484 factory_.SetFakeResponse(GURL("http://manifest-url-prefix.com/manifest2.com"),
485 "bad protobuf", net::HTTP_OK,
486 net::URLRequestStatus::SUCCESS);
487 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
488 net::URLRequestStatus::SUCCESS);
489
490 // Starting hosts should not be fetched.
491 starting_hosts.push_back("bad-manifest.com");
492
493 PrecacheFetcher second_fetcher(starting_hosts, request_context_.get(),
494 GURL(), std::string(),
495 &precache_delegate_,
496 precache_database_->GetWeakPtr(),
497 base::ThreadTaskRunnerHandle::Get());
498 second_fetcher.Init(base::TimeDelta::FromHours(2));
499 loop_.RunUntilIdle();
500 second_fetcher.Start();
501 loop_.RunUntilIdle();
502
503 expected_requested_urls.insert(GURL(kConfigURL));
504 expected_requested_urls.insert(
505 GURL("http://manifest-url-prefix.com/manifest1.com"));
506 expected_requested_urls.insert(
507 GURL("http://manifest-url-prefix.com/manifest2.com"));
508 expected_requested_urls.insert(GURL(kGoodResourceURL));
509
510 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
511 EXPECT_TRUE(precache_delegate_.was_on_done_called());
512 }
513
419 TEST_F(PrecacheFetcherTest, CustomURLs) { 514 TEST_F(PrecacheFetcherTest, CustomURLs) {
420 SetDefaultFlags(); 515 SetDefaultFlags();
421 516
422 std::vector<std::string> starting_hosts; 517 std::vector<std::string> starting_hosts;
423 starting_hosts.push_back("good-manifest.com"); 518 starting_hosts.push_back("good-manifest.com");
424 519
425 PrecacheConfigurationSettings config; 520 PrecacheConfigurationSettings config;
426 521
427 PrecacheManifest good_manifest; 522 PrecacheManifest good_manifest;
428 good_manifest.add_resource()->set_url(kGoodResourceURL); 523 good_manifest.add_resource()->set_url(kGoodResourceURL);
429 524
430 factory_.SetFakeResponse(GURL(kCustomConfigURL), config.SerializeAsString(), 525 factory_.SetFakeResponse(GURL(kCustomConfigURL), config.SerializeAsString(),
431 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 526 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
432 factory_.SetFakeResponse(GURL(kCustomGoodManifestURL), 527 factory_.SetFakeResponse(GURL(kCustomGoodManifestURL),
433 good_manifest.SerializeAsString(), net::HTTP_OK, 528 good_manifest.SerializeAsString(), net::HTTP_OK,
434 net::URLRequestStatus::SUCCESS); 529 net::URLRequestStatus::SUCCESS);
435 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK, 530 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
436 net::URLRequestStatus::SUCCESS); 531 net::URLRequestStatus::SUCCESS);
437 532
438 PrecacheFetcher precache_fetcher( 533 PrecacheFetcher precache_fetcher(
439 starting_hosts, request_context_.get(), GURL(kCustomConfigURL), 534 starting_hosts, request_context_.get(), GURL(kCustomConfigURL),
440 kCustomManifestURLPrefix, &precache_delegate_); 535 kCustomManifestURLPrefix, &precache_delegate_,
536 precache_database_->GetWeakPtr(), base::ThreadTaskRunnerHandle::Get());
441 precache_fetcher.Start(); 537 precache_fetcher.Start();
442 538
443 loop_.RunUntilIdle(); 539 loop_.RunUntilIdle();
444 540
445 std::multiset<GURL> expected_requested_urls; 541 std::multiset<GURL> expected_requested_urls;
446 expected_requested_urls.insert(GURL(kCustomConfigURL)); 542 expected_requested_urls.insert(GURL(kCustomConfigURL));
447 expected_requested_urls.insert(GURL(kCustomGoodManifestURL)); 543 expected_requested_urls.insert(GURL(kCustomGoodManifestURL));
448 expected_requested_urls.insert(GURL(kGoodResourceURL)); 544 expected_requested_urls.insert(GURL(kGoodResourceURL));
449 545
450 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 546 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
451 547
452 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 548 EXPECT_TRUE(precache_delegate_.was_on_done_called());
453 } 549 }
454 550
455 TEST_F(PrecacheFetcherTest, ConfigFetchFailure) { 551 TEST_F(PrecacheFetcherTest, ConfigFetchFailure) {
456 SetDefaultFlags(); 552 SetDefaultFlags();
457 553
458 std::vector<std::string> starting_hosts(1, "good-manifest.com"); 554 std::vector<std::string> starting_hosts(1, "good-manifest.com");
459 555
460 factory_.SetFakeResponse(GURL(kConfigURL), "", 556 factory_.SetFakeResponse(GURL(kConfigURL), "",
461 net::HTTP_INTERNAL_SERVER_ERROR, 557 net::HTTP_INTERNAL_SERVER_ERROR,
462 net::URLRequestStatus::FAILED); 558 net::URLRequestStatus::FAILED);
463 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK, 559 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK,
464 net::URLRequestStatus::SUCCESS); 560 net::URLRequestStatus::SUCCESS);
465 561
466 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 562 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
467 GURL(), std::string(), &precache_delegate_); 563 GURL(), std::string(), &precache_delegate_,
564 precache_database_->GetWeakPtr(),
565 base::ThreadTaskRunnerHandle::Get());
468 precache_fetcher.Start(); 566 precache_fetcher.Start();
469 567
470 loop_.RunUntilIdle(); 568 loop_.RunUntilIdle();
471 569
472 std::multiset<GURL> expected_requested_urls; 570 std::multiset<GURL> expected_requested_urls;
473 expected_requested_urls.insert(GURL(kConfigURL)); 571 expected_requested_urls.insert(GURL(kConfigURL));
474 expected_requested_urls.insert(GURL(kGoodManifestURL)); 572 expected_requested_urls.insert(GURL(kGoodManifestURL));
475 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 573 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
476 574
477 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 575 EXPECT_TRUE(precache_delegate_.was_on_done_called());
478 } 576 }
479 577
480 TEST_F(PrecacheFetcherTest, BadConfig) { 578 TEST_F(PrecacheFetcherTest, BadConfig) {
481 SetDefaultFlags(); 579 SetDefaultFlags();
482 580
483 std::vector<std::string> starting_hosts(1, "good-manifest.com"); 581 std::vector<std::string> starting_hosts(1, "good-manifest.com");
484 582
485 factory_.SetFakeResponse(GURL(kConfigURL), "bad protobuf", net::HTTP_OK, 583 factory_.SetFakeResponse(GURL(kConfigURL), "bad protobuf", net::HTTP_OK,
486 net::URLRequestStatus::SUCCESS); 584 net::URLRequestStatus::SUCCESS);
487 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK, 585 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK,
488 net::URLRequestStatus::SUCCESS); 586 net::URLRequestStatus::SUCCESS);
489 587
490 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 588 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
491 GURL(), std::string(), &precache_delegate_); 589 GURL(), std::string(), &precache_delegate_,
590 precache_database_->GetWeakPtr(),
591 base::ThreadTaskRunnerHandle::Get());
492 precache_fetcher.Start(); 592 precache_fetcher.Start();
493 593
494 loop_.RunUntilIdle(); 594 loop_.RunUntilIdle();
495 595
496 std::multiset<GURL> expected_requested_urls; 596 std::multiset<GURL> expected_requested_urls;
497 expected_requested_urls.insert(GURL(kConfigURL)); 597 expected_requested_urls.insert(GURL(kConfigURL));
498 expected_requested_urls.insert(GURL(kGoodManifestURL)); 598 expected_requested_urls.insert(GURL(kGoodManifestURL));
499 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 599 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
500 600
501 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 601 EXPECT_TRUE(precache_delegate_.was_on_done_called());
502 } 602 }
503 603
504 TEST_F(PrecacheFetcherTest, Cancel) { 604 TEST_F(PrecacheFetcherTest, Cancel) {
505 SetDefaultFlags(); 605 SetDefaultFlags();
506 606
507 std::vector<std::string> starting_hosts(1, "starting-url.com"); 607 std::vector<std::string> starting_hosts(1, "starting-url.com");
508 608
509 PrecacheConfigurationSettings config; 609 PrecacheConfigurationSettings config;
510 config.set_top_sites_count(1); 610 config.set_top_sites_count(1);
511 611
512 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), 612 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
513 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 613 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
514 614
515 base::HistogramTester histogram; 615 base::HistogramTester histogram;
516 616
517 { 617 {
518 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 618 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
519 GURL(), std::string(), 619 GURL(), std::string(),
520 &precache_delegate_); 620 &precache_delegate_,
621 precache_database_->GetWeakPtr(),
622 base::ThreadTaskRunnerHandle::Get());
521 precache_fetcher.Start(); 623 precache_fetcher.Start();
522 624
523 // Destroy the PrecacheFetcher, to cancel precaching and record metrics. 625 // Destroy the PrecacheFetcher, to cancel precaching and record metrics.
524 // This should not cause OnDone to be called on the precache delegate. 626 // This should not cause OnDone to be called on the precache delegate.
525 } 627 }
526 628
527 loop_.RunUntilIdle(); 629 loop_.RunUntilIdle();
528 630
529 std::multiset<GURL> expected_requested_urls; 631 std::multiset<GURL> expected_requested_urls;
530 expected_requested_urls.insert(GURL(kConfigURL)); 632 expected_requested_urls.insert(GURL(kConfigURL));
(...skipping 14 matching lines...) Expand all
545 std::vector<std::string> starting_hosts(1, "starting-url.com"); 647 std::vector<std::string> starting_hosts(1, "starting-url.com");
546 648
547 PrecacheConfigurationSettings config; 649 PrecacheConfigurationSettings config;
548 config.set_top_sites_count(0); 650 config.set_top_sites_count(0);
549 651
550 factory_.SetFakeResponse(GURL(PRECACHE_CONFIG_SETTINGS_URL), 652 factory_.SetFakeResponse(GURL(PRECACHE_CONFIG_SETTINGS_URL),
551 config.SerializeAsString(), net::HTTP_OK, 653 config.SerializeAsString(), net::HTTP_OK,
552 net::URLRequestStatus::SUCCESS); 654 net::URLRequestStatus::SUCCESS);
553 655
554 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 656 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
555 GURL(), std::string(), &precache_delegate_); 657 GURL(), std::string(), &precache_delegate_,
658 precache_database_->GetWeakPtr(),
659 base::ThreadTaskRunnerHandle::Get());
556 precache_fetcher.Start(); 660 precache_fetcher.Start();
557 661
558 loop_.RunUntilIdle(); 662 loop_.RunUntilIdle();
559 663
560 std::multiset<GURL> expected_requested_urls; 664 std::multiset<GURL> expected_requested_urls;
561 expected_requested_urls.insert(GURL(PRECACHE_CONFIG_SETTINGS_URL)); 665 expected_requested_urls.insert(GURL(PRECACHE_CONFIG_SETTINGS_URL));
562 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 666 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
563 667
564 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 668 EXPECT_TRUE(precache_delegate_.was_on_done_called());
565 } 669 }
(...skipping 14 matching lines...) Expand all
580 config.set_top_sites_count(1); 684 config.set_top_sites_count(1);
581 685
582 GURL manifest_url(PRECACHE_MANIFEST_URL_PREFIX "starting-url.com"); 686 GURL manifest_url(PRECACHE_MANIFEST_URL_PREFIX "starting-url.com");
583 687
584 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), 688 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
585 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 689 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
586 factory_.SetFakeResponse(manifest_url, PrecacheManifest().SerializeAsString(), 690 factory_.SetFakeResponse(manifest_url, PrecacheManifest().SerializeAsString(),
587 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 691 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
588 692
589 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 693 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
590 GURL(), std::string(), &precache_delegate_); 694 GURL(), std::string(), &precache_delegate_,
695 precache_database_->GetWeakPtr(),
696 base::ThreadTaskRunnerHandle::Get());
591 precache_fetcher.Start(); 697 precache_fetcher.Start();
592 698
593 loop_.RunUntilIdle(); 699 loop_.RunUntilIdle();
594 700
595 std::multiset<GURL> expected_requested_urls; 701 std::multiset<GURL> expected_requested_urls;
596 expected_requested_urls.insert(GURL(kConfigURL)); 702 expected_requested_urls.insert(GURL(kConfigURL));
597 expected_requested_urls.insert(manifest_url); 703 expected_requested_urls.insert(manifest_url);
598 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 704 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
599 705
600 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 706 EXPECT_TRUE(precache_delegate_.was_on_done_called());
(...skipping 23 matching lines...) Expand all
624 good_manifest.SerializeAsString(), net::HTTP_OK, 730 good_manifest.SerializeAsString(), net::HTTP_OK,
625 net::URLRequestStatus::SUCCESS); 731 net::URLRequestStatus::SUCCESS);
626 factory_.SetFakeResponse(GURL("http://good-manifest.com/retrieved"), "good", 732 factory_.SetFakeResponse(GURL("http://good-manifest.com/retrieved"), "good",
627 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 733 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
628 734
629 base::HistogramTester histogram; 735 base::HistogramTester histogram;
630 736
631 { 737 {
632 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(), 738 PrecacheFetcher precache_fetcher(starting_hosts, request_context_.get(),
633 GURL(), std::string(), 739 GURL(), std::string(),
634 &precache_delegate_); 740 &precache_delegate_,
741 precache_database_->GetWeakPtr(),
742 base::ThreadTaskRunnerHandle::Get());
635 precache_fetcher.Start(); 743 precache_fetcher.Start();
636 744
637 loop_.RunUntilIdle(); 745 loop_.RunUntilIdle();
638 746
639 // Destroy the PrecacheFetcher after it has finished, to record metrics. 747 // Destroy the PrecacheFetcher after it has finished, to record metrics.
640 } 748 }
641 749
642 std::multiset<GURL> expected_requested_urls; 750 std::multiset<GURL> expected_requested_urls;
643 expected_requested_urls.insert(GURL(kConfigURL)); 751 expected_requested_urls.insert(GURL(kConfigURL));
644 expected_requested_urls.insert(GURL(kGoodManifestURL)); 752 expected_requested_urls.insert(GURL(kGoodManifestURL));
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 804
697 factory_.SetFakeResponse(GURL(kGoodManifestURL), 805 factory_.SetFakeResponse(GURL(kGoodManifestURL),
698 good_manifest.SerializeAsString(), net::HTTP_OK, 806 good_manifest.SerializeAsString(), net::HTTP_OK,
699 net::URLRequestStatus::SUCCESS); 807 net::URLRequestStatus::SUCCESS);
700 808
701 base::HistogramTester histogram; 809 base::HistogramTester histogram;
702 810
703 { 811 {
704 PrecacheFetcher precache_fetcher({"good-manifest.com"}, 812 PrecacheFetcher precache_fetcher({"good-manifest.com"},
705 request_context_.get(), GURL(), 813 request_context_.get(), GURL(),
706 std::string(), &precache_delegate_); 814 std::string(), &precache_delegate_,
815 precache_database_->GetWeakPtr(),
816 base::ThreadTaskRunnerHandle::Get());
707 precache_fetcher.Start(); 817 precache_fetcher.Start();
708 818
709 loop_.RunUntilIdle(); 819 loop_.RunUntilIdle();
710 820
711 // Destroy the PrecacheFetcher after it has finished, to record metrics. 821 // Destroy the PrecacheFetcher after it has finished, to record metrics.
712 } 822 }
713 823
714 // We don't know which will make it and which won't due to the parallelism in 824 // We don't know which will make it and which won't due to the parallelism in
715 // the pool of Fetchers. 825 // the pool of Fetchers.
716 EXPECT_GT(kNumResources, url_callback_.requested_urls().size()); 826 EXPECT_GT(kNumResources, url_callback_.requested_urls().size());
717 827
718 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 828 EXPECT_TRUE(precache_delegate_.was_on_done_called());
719 829
720 // good-manifest.com will not have been completed. 830 // good-manifest.com will not have been completed.
721 EXPECT_THAT(histogram.GetAllSamples("Precache.Fetch.PercentCompleted"), 831 EXPECT_THAT(histogram.GetAllSamples("Precache.Fetch.PercentCompleted"),
722 ElementsAre(base::Bucket(0, 1))); 832 ElementsAre(base::Bucket(0, 1)));
723 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); 833 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
724 } 834 }
725 835
726 } // namespace 836 } // namespace
727 837
728 } // namespace precache 838 } // namespace precache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698