Chromium Code Reviews| OLD | NEW |
|---|---|
| 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_database.h" | 5 #include "components/precache/core/precache_database.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> | 10 #include <memory> |
| 11 | 11 |
| 12 #include "base/bind.h" | |
| 13 #include "base/bind_helpers.h" | |
| 12 #include "base/containers/hash_tables.h" | 14 #include "base/containers/hash_tables.h" |
| 13 #include "base/files/file_path.h" | 15 #include "base/files/file_path.h" |
| 14 #include "base/files/scoped_temp_dir.h" | 16 #include "base/files/scoped_temp_dir.h" |
| 15 #include "base/message_loop/message_loop.h" | 17 #include "base/message_loop/message_loop.h" |
| 16 #include "base/metrics/histogram_base.h" | 18 #include "base/metrics/histogram_base.h" |
| 17 #include "base/test/histogram_tester.h" | 19 #include "base/test/histogram_tester.h" |
| 18 #include "base/time/time.h" | 20 #include "base/time/time.h" |
| 19 #include "components/history/core/browser/history_constants.h" | 21 #include "components/history/core/browser/history_constants.h" |
| 20 #include "net/http/http_response_headers.h" | 22 #include "net/http/http_response_headers.h" |
| 21 #include "net/http/http_response_info.h" | 23 #include "net/http/http_response_info.h" |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 256 | 258 |
| 257 EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap()); | 259 EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap()); |
| 258 | 260 |
| 259 ExpectNewSample("Precache.DownloadedPrecacheMotivated", kSize); | 261 ExpectNewSample("Precache.DownloadedPrecacheMotivated", kSize); |
| 260 ExpectNewSample("Precache.Latency.Prefetch", kLatency.InMilliseconds()); | 262 ExpectNewSample("Precache.Latency.Prefetch", kLatency.InMilliseconds()); |
| 261 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K); | 263 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K); |
| 262 ExpectNoOtherSamples(); | 264 ExpectNoOtherSamples(); |
| 263 } | 265 } |
| 264 | 266 |
| 265 TEST_F(PrecacheDatabaseTest, PrecacheFromCacheWithURLTableEntry) { | 267 TEST_F(PrecacheDatabaseTest, PrecacheFromCacheWithURLTableEntry) { |
| 266 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime); | 268 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime, false); |
| 267 RecordPrecacheFromCache(kURL, kFetchTime, kSize); | 269 RecordPrecacheFromCache(kURL, kFetchTime, kSize); |
| 268 | 270 |
| 269 // The URL table entry should have been updated to have |kFetchTime| as the | 271 // The URL table entry should have been updated to have |kFetchTime| as the |
| 270 // timestamp. | 272 // timestamp. |
| 271 EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap()); | 273 EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap()); |
| 272 | 274 |
| 273 ExpectNewSample("Precache.Latency.Prefetch", 0); | 275 ExpectNewSample("Precache.Latency.Prefetch", 0); |
| 274 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K); | 276 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K); |
| 275 ExpectNoOtherSamples(); | 277 ExpectNoOtherSamples(); |
| 276 } | 278 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 319 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); | 321 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); |
| 320 ExpectNewSample("Precache.DownloadedNonPrecache.Cellular", kSize); | 322 ExpectNewSample("Precache.DownloadedNonPrecache.Cellular", kSize); |
| 321 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork); | 323 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork); |
| 322 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); | 324 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); |
| 323 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", | 325 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", |
| 324 kLatency.InMilliseconds()); | 326 kLatency.InMilliseconds()); |
| 325 ExpectNoOtherSamples(); | 327 ExpectNoOtherSamples(); |
| 326 } | 328 } |
| 327 | 329 |
| 328 TEST_F(PrecacheDatabaseTest, FetchOverNetworkWithURLTableEntry) { | 330 TEST_F(PrecacheDatabaseTest, FetchOverNetworkWithURLTableEntry) { |
| 329 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime); | 331 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime, false); |
| 330 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize); | 332 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize); |
| 331 | 333 |
| 332 // The URL table entry should have been deleted. | 334 // The URL table entry should have been deleted. |
| 333 EXPECT_TRUE(GetActualURLTableMap().empty()); | 335 EXPECT_TRUE(GetActualURLTableMap().empty()); |
| 334 | 336 |
| 335 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); | 337 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); |
| 336 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); | 338 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); |
| 337 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", | 339 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", |
| 338 kLatency.InMilliseconds()); | 340 kLatency.InMilliseconds()); |
| 339 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork); | 341 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork); |
| 340 ExpectNewSample("Precache.CacheStatus.NonPrefetch.FromPrecache", | 342 ExpectNewSample("Precache.CacheStatus.NonPrefetch.FromPrecache", |
| 341 kFromNetwork); | 343 kFromNetwork); |
| 342 ExpectNoOtherSamples(); | 344 ExpectNoOtherSamples(); |
| 343 } | 345 } |
| 344 | 346 |
| 345 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_NonCellular) { | 347 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_NonCellular) { |
| 346 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime); | 348 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime, false); |
| 347 RecordFetchFromCache(kURL, kFetchTime, kSize); | 349 RecordFetchFromCache(kURL, kFetchTime, kSize); |
| 348 | 350 |
| 349 // The URL table entry should have been deleted. | 351 // The URL table entry should have been deleted. |
| 350 EXPECT_TRUE(GetActualURLTableMap().empty()); | 352 EXPECT_TRUE(GetActualURLTableMap().empty()); |
| 351 | 353 |
| 352 ExpectNewSample("Precache.Latency.NonPrefetch", 0); | 354 ExpectNewSample("Precache.Latency.NonPrefetch", 0); |
| 353 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); | 355 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); |
| 354 ExpectNewSample("Precache.CacheStatus.NonPrefetch", | 356 ExpectNewSample("Precache.CacheStatus.NonPrefetch", |
| 355 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); | 357 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); |
| 356 ExpectNewSample("Precache.CacheStatus.NonPrefetch.FromPrecache", | 358 ExpectNewSample("Precache.CacheStatus.NonPrefetch.FromPrecache", |
| 357 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); | 359 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); |
| 358 ExpectNewSample("Precache.Saved", kSize); | 360 ExpectNewSample("Precache.Saved", kSize); |
| 359 ExpectNewSample("Precache.Saved.Freshness", kFreshnessBucket10K); | 361 ExpectNewSample("Precache.Saved.Freshness", kFreshnessBucket10K); |
| 360 ExpectNoOtherSamples(); | 362 ExpectNoOtherSamples(); |
| 361 } | 363 } |
| 362 | 364 |
| 363 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_Cellular) { | 365 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_Cellular) { |
| 364 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime); | 366 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime, false); |
| 365 RecordFetchFromCacheCellular(kURL, kFetchTime, kSize); | 367 RecordFetchFromCacheCellular(kURL, kFetchTime, kSize); |
| 366 | 368 |
| 367 // The URL table entry should have been deleted. | 369 // The URL table entry should have been deleted. |
| 368 EXPECT_TRUE(GetActualURLTableMap().empty()); | 370 EXPECT_TRUE(GetActualURLTableMap().empty()); |
| 369 | 371 |
| 370 ExpectNewSample("Precache.Latency.NonPrefetch", 0); | 372 ExpectNewSample("Precache.Latency.NonPrefetch", 0); |
| 371 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); | 373 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); |
| 372 ExpectNewSample("Precache.CacheStatus.NonPrefetch", | 374 ExpectNewSample("Precache.CacheStatus.NonPrefetch", |
| 373 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); | 375 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); |
| 374 ExpectNewSample("Precache.CacheStatus.NonPrefetch.FromPrecache", | 376 ExpectNewSample("Precache.CacheStatus.NonPrefetch.FromPrecache", |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 390 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); | 392 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); |
| 391 ExpectNoOtherSamples(); | 393 ExpectNoOtherSamples(); |
| 392 } | 394 } |
| 393 | 395 |
| 394 TEST_F(PrecacheDatabaseTest, DeleteExpiredPrecacheHistory) { | 396 TEST_F(PrecacheDatabaseTest, DeleteExpiredPrecacheHistory) { |
| 395 const base::Time kToday = base::Time() + base::TimeDelta::FromDays(1000); | 397 const base::Time kToday = base::Time() + base::TimeDelta::FromDays(1000); |
| 396 const base::Time k59DaysAgo = kToday - base::TimeDelta::FromDays(59); | 398 const base::Time k59DaysAgo = kToday - base::TimeDelta::FromDays(59); |
| 397 const base::Time k61DaysAgo = kToday - base::TimeDelta::FromDays(61); | 399 const base::Time k61DaysAgo = kToday - base::TimeDelta::FromDays(61); |
| 398 | 400 |
| 399 precache_url_table()->AddURL(GURL("http://expired-precache.com"), kReferrerID, | 401 precache_url_table()->AddURL(GURL("http://expired-precache.com"), kReferrerID, |
| 400 true, k61DaysAgo); | 402 true, k61DaysAgo, false); |
| 401 precache_url_table()->AddURL(GURL("http://old-precache.com"), kReferrerID, | 403 precache_url_table()->AddURL(GURL("http://old-precache.com"), kReferrerID, |
| 402 true, k59DaysAgo); | 404 true, k59DaysAgo, false); |
| 403 | 405 |
| 404 precache_database_->DeleteExpiredPrecacheHistory(kToday); | 406 precache_database_->DeleteExpiredPrecacheHistory(kToday); |
| 405 | 407 |
| 406 EXPECT_EQ(BuildURLTableMap(GURL("http://old-precache.com"), k59DaysAgo), | 408 EXPECT_EQ(BuildURLTableMap(GURL("http://old-precache.com"), k59DaysAgo), |
| 407 GetActualURLTableMap()); | 409 GetActualURLTableMap()); |
| 408 } | 410 } |
| 409 | 411 |
| 410 TEST_F(PrecacheDatabaseTest, SampleInteraction) { | 412 TEST_F(PrecacheDatabaseTest, SampleInteraction) { |
| 411 const GURL kURL1("http://url1.com"); | 413 const GURL kURL1("http://url1.com"); |
| 412 const int64_t kSize1 = 1; | 414 const int64_t kSize1 = 1; |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 526 EXPECT_EQ(kNewFetchTime, actual_entry.time); | 528 EXPECT_EQ(kNewFetchTime, actual_entry.time); |
| 527 } | 529 } |
| 528 | 530 |
| 529 TEST_F(PrecacheDatabaseTest, GetURLListForReferrerHost) { | 531 TEST_F(PrecacheDatabaseTest, GetURLListForReferrerHost) { |
| 530 precache_database_->UpdatePrecacheReferrerHost("foo.com", 1, kFetchTime); | 532 precache_database_->UpdatePrecacheReferrerHost("foo.com", 1, kFetchTime); |
| 531 precache_database_->UpdatePrecacheReferrerHost("bar.com", 2, kNewFetchTime); | 533 precache_database_->UpdatePrecacheReferrerHost("bar.com", 2, kNewFetchTime); |
| 532 precache_database_->UpdatePrecacheReferrerHost("foobar.com", 3, | 534 precache_database_->UpdatePrecacheReferrerHost("foobar.com", 3, |
| 533 kNewFetchTime); | 535 kNewFetchTime); |
| 534 precache_database_->UpdatePrecacheReferrerHost("empty.com", 3, kNewFetchTime); | 536 precache_database_->UpdatePrecacheReferrerHost("empty.com", 3, kNewFetchTime); |
| 535 | 537 |
| 538 // Add two resources that shouldn't appear in downloaded. | |
| 539 Flush(); // We need to write the referrer_host_id. | |
| 540 const std::string already_reported_and_not_refetch = | |
| 541 "http://foo.com/already-reported-and-not-refetch.js"; | |
| 542 | |
| 543 precache_database_->RecordURLPrefetch(GURL(already_reported_and_not_refetch), | |
| 544 "foo.com", kPrecacheTime, false, kSize); | |
| 545 const std::string already_reported_and_in_cache = | |
| 546 "http://foo.com/already-reported-and-in-cache.js"; | |
| 547 precache_database_->RecordURLPrefetch(GURL(already_reported_and_in_cache), | |
| 548 "foo.com", kPrecacheTime, false, kSize); | |
| 549 { | |
| 550 // Let's mark existing resources as is_download_reported = 1 by calling | |
| 551 // GetURLListForReferrerHost. | |
| 552 std::vector<GURL> unused_a, unused_b; | |
| 553 auto id = precache_database_->GetReferrerHost("foo.com").id; | |
| 554 ASSERT_NE(PrecacheReferrerHostEntry::kInvalidId, id); | |
| 555 precache_database_->GetURLListForReferrerHost(id, &unused_a, &unused_b); | |
| 556 } | |
| 557 | |
| 536 struct test_resource_info { | 558 struct test_resource_info { |
| 537 std::string url; | 559 std::string url; |
| 538 bool is_user_browsed; | 560 bool is_user_browsed; |
| 539 bool is_network_fetched; | 561 bool is_network_fetched; |
| 540 bool is_cellular_fetched; | 562 bool is_cellular_fetched; |
| 541 bool expected_in_used; | 563 bool expected_in_used; |
| 542 }; | 564 }; |
| 543 | 565 |
| 544 const struct { | 566 const struct { |
| 545 std::string hostname; | 567 std::string hostname; |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 575 "empty.com", std::vector<test_resource_info>{}, | 597 "empty.com", std::vector<test_resource_info>{}, |
| 576 }, | 598 }, |
| 577 }; | 599 }; |
| 578 // Add precached resources. | 600 // Add precached resources. |
| 579 for (const auto& test : tests) { | 601 for (const auto& test : tests) { |
| 580 for (const auto& resource : test.resource_info) { | 602 for (const auto& resource : test.resource_info) { |
| 581 precache_database_->RecordURLPrefetch(GURL(resource.url), test.hostname, | 603 precache_database_->RecordURLPrefetch(GURL(resource.url), test.hostname, |
| 582 kPrecacheTime, false, kSize); | 604 kPrecacheTime, false, kSize); |
| 583 } | 605 } |
| 584 } | 606 } |
| 607 precache_database_->RecordURLPrefetch(GURL(already_reported_and_in_cache), | |
| 608 "foo.com", kPrecacheTime, true, kSize); | |
| 585 // Update some resources as used due to user browsing. | 609 // Update some resources as used due to user browsing. |
| 586 for (const auto& test : tests) { | 610 for (const auto& test : tests) { |
| 587 for (const auto& resource : test.resource_info) { | 611 for (const auto& resource : test.resource_info) { |
| 588 if (!resource.is_user_browsed) | 612 if (!resource.is_user_browsed) |
| 589 continue; | 613 continue; |
| 590 if (!resource.is_network_fetched && !resource.is_cellular_fetched) { | 614 if (!resource.is_network_fetched && !resource.is_cellular_fetched) { |
| 591 RecordFetchFromCache(GURL(resource.url), kFetchTime, kSize); | 615 RecordFetchFromCache(GURL(resource.url), kFetchTime, kSize); |
| 592 } else if (!resource.is_network_fetched && resource.is_cellular_fetched) { | 616 } else if (!resource.is_network_fetched && resource.is_cellular_fetched) { |
| 593 RecordFetchFromCacheCellular(GURL(resource.url), kFetchTime, kSize); | 617 RecordFetchFromCacheCellular(GURL(resource.url), kFetchTime, kSize); |
| 594 } else if (resource.is_network_fetched && !resource.is_cellular_fetched) { | 618 } else if (resource.is_network_fetched && !resource.is_cellular_fetched) { |
| 595 RecordFetchFromNetwork(GURL(resource.url), kLatency, kFetchTime, kSize); | 619 RecordFetchFromNetwork(GURL(resource.url), kLatency, kFetchTime, kSize); |
| 596 } else if (resource.is_network_fetched && resource.is_cellular_fetched) { | 620 } else if (resource.is_network_fetched && resource.is_cellular_fetched) { |
| 597 RecordFetchFromNetworkCellular(GURL(resource.url), kLatency, kFetchTime, | 621 RecordFetchFromNetworkCellular(GURL(resource.url), kLatency, kFetchTime, |
| 598 kSize); | 622 kSize); |
| 599 } | 623 } |
| 600 } | 624 } |
| 601 } | 625 } |
| 602 Flush(); | 626 Flush(); |
| 603 // Verify the used and unused resources. | 627 // Verify the used and downloaded resources. |
| 604 for (const auto& test : tests) { | 628 for (const auto& test : tests) { |
| 605 std::vector<GURL> expected_used_urls, expected_unused_urls; | 629 std::vector<GURL> expected_used_urls, expected_downloaded_urls; |
| 606 for (const auto& resource : test.resource_info) { | 630 for (const auto& resource : test.resource_info) { |
| 607 if (resource.expected_in_used) { | 631 if (resource.expected_in_used) { |
| 608 expected_used_urls.push_back(GURL(resource.url)); | 632 expected_used_urls.push_back(GURL(resource.url)); |
| 609 } else { | |
| 610 expected_unused_urls.push_back(GURL(resource.url)); | |
| 611 } | 633 } |
| 634 expected_downloaded_urls.push_back(GURL(resource.url)); | |
| 612 } | 635 } |
| 613 std::vector<GURL> actual_used_urls, actual_unused_urls; | 636 std::vector<GURL> actual_used_urls, actual_downloaded_urls; |
| 614 auto referrer_id = precache_database_->GetReferrerHost(test.hostname).id; | 637 auto referrer_id = precache_database_->GetReferrerHost(test.hostname).id; |
| 615 EXPECT_NE(PrecacheReferrerHostEntry::kInvalidId, referrer_id); | 638 EXPECT_NE(PrecacheReferrerHostEntry::kInvalidId, referrer_id); |
| 616 precache_database_->GetURLListForReferrerHost( | 639 precache_database_->GetURLListForReferrerHost( |
| 617 referrer_id, &actual_used_urls, &actual_unused_urls); | 640 referrer_id, &actual_used_urls, &actual_downloaded_urls); |
| 618 EXPECT_THAT(expected_used_urls, ::testing::ContainerEq(actual_used_urls)); | 641 EXPECT_THAT(actual_used_urls, ::testing::ContainerEq(expected_used_urls)); |
| 619 EXPECT_THAT(expected_unused_urls, | 642 EXPECT_THAT(actual_downloaded_urls, |
| 620 ::testing::ContainerEq(actual_unused_urls)); | 643 ::testing::ContainerEq(expected_downloaded_urls)) |
| 644 << "Host: " << test.hostname; | |
| 621 } | 645 } |
| 622 // Subsequent manifest updates should clear the used and unused resources. | 646 // Subsequent manifest updates should clear the used and downloaded resources. |
| 623 for (const auto& test : tests) { | 647 for (const auto& test : tests) { |
| 624 precache_database_->UpdatePrecacheReferrerHost(test.hostname, 100, | 648 precache_database_->UpdatePrecacheReferrerHost(test.hostname, 100, |
| 625 kNewFetchTime); | 649 kNewFetchTime); |
| 626 Flush(); | 650 Flush(); |
| 627 std::vector<GURL> actual_used_urls, actual_unused_urls; | 651 std::vector<GURL> actual_used_urls, actual_downloaded_urls; |
| 628 auto referrer_id = precache_database_->GetReferrerHost(test.hostname).id; | 652 auto referrer_id = precache_database_->GetReferrerHost(test.hostname).id; |
| 629 EXPECT_NE(PrecacheReferrerHostEntry::kInvalidId, referrer_id); | 653 EXPECT_NE(PrecacheReferrerHostEntry::kInvalidId, referrer_id); |
| 630 precache_database_->GetURLListForReferrerHost( | 654 precache_database_->GetURLListForReferrerHost( |
| 631 referrer_id, &actual_used_urls, &actual_unused_urls); | 655 referrer_id, &actual_used_urls, &actual_downloaded_urls); |
| 632 EXPECT_TRUE(actual_used_urls.empty()); | 656 EXPECT_TRUE(actual_used_urls.empty()); |
|
twifkak
2016/12/20 22:48:09
change this to EXPECT_THAT(actual_used_urls, IsEmp
jamartin
2016/12/20 23:14:07
Done.
| |
| 633 } | 657 } |
| 634 // Resources that were precached previously and not seen in user browsing | 658 // Resources that were precached previously and not seen in user browsing |
| 635 // should be still marked as precached. | 659 // should be still marked as precached. |
| 636 std::map<GURL, base::Time> expected_url_table_map; | 660 std::map<GURL, base::Time> expected_url_table_map; |
| 637 for (const auto& test : tests) { | 661 for (const auto& test : tests) { |
| 638 for (const auto& resource : test.resource_info) { | 662 for (const auto& resource : test.resource_info) { |
| 639 if (!resource.is_user_browsed) | 663 if (!resource.is_user_browsed) |
| 640 expected_url_table_map[GURL(resource.url)] = kPrecacheTime; | 664 expected_url_table_map[GURL(resource.url)] = kPrecacheTime; |
| 641 } | 665 } |
| 642 } | 666 } |
| 667 expected_url_table_map[GURL(already_reported_and_not_refetch)] = | |
| 668 kPrecacheTime; | |
| 669 expected_url_table_map[GURL(already_reported_and_in_cache)] = kPrecacheTime; | |
| 643 EXPECT_EQ(expected_url_table_map, GetActualURLTableMap()); | 670 EXPECT_EQ(expected_url_table_map, GetActualURLTableMap()); |
|
twifkak
2016/12/20 22:48:09
Add a resource for which is_download_reported gets
jamartin
2016/12/20 23:14:07
Done.
| |
| 644 } | 671 } |
| 645 | 672 |
| 646 } // namespace | 673 } // namespace |
| 647 | 674 |
| 648 } // namespace precache | 675 } // namespace precache |
| OLD | NEW |