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

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

Issue 2586813004: Report downloaded resources at most once (Closed)
Patch Set: Improved tests Created 4 years 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 <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 std::deque<ManifestHostInfo> RetrieveManifestInfo( 188 std::deque<ManifestHostInfo> RetrieveManifestInfo(
189 const base::WeakPtr<PrecacheDatabase>& precache_database, 189 const base::WeakPtr<PrecacheDatabase>& precache_database,
190 std::vector<std::pair<std::string, int64_t>> hosts_to_fetch) { 190 std::vector<std::pair<std::string, int64_t>> hosts_to_fetch) {
191 std::deque<ManifestHostInfo> hosts_info; 191 std::deque<ManifestHostInfo> hosts_info;
192 if (!precache_database) 192 if (!precache_database)
193 return hosts_info; 193 return hosts_info;
194 194
195 for (const auto& host : hosts_to_fetch) { 195 for (const auto& host : hosts_to_fetch) {
196 auto referrer_host_info = precache_database->GetReferrerHost(host.first); 196 auto referrer_host_info = precache_database->GetReferrerHost(host.first);
197 if (referrer_host_info.id != PrecacheReferrerHostEntry::kInvalidId) { 197 if (referrer_host_info.id != PrecacheReferrerHostEntry::kInvalidId) {
198 std::vector<GURL> used_urls, unused_urls; 198 std::vector<GURL> used_urls, downloaded_urls;
199 precache_database->GetURLListForReferrerHost(referrer_host_info.id, 199 precache_database->GetURLListForReferrerHost(
200 &used_urls, &unused_urls); 200 referrer_host_info.id, &used_urls, &downloaded_urls);
201 hosts_info.push_back( 201 hosts_info.push_back(
202 ManifestHostInfo(referrer_host_info.manifest_id, host.first, 202 ManifestHostInfo(referrer_host_info.manifest_id, host.first,
203 host.second, GetResourceURLBase64Hash(used_urls), 203 host.second, GetResourceURLBase64Hash(used_urls),
204 GetResourceURLBase64Hash(unused_urls))); 204 GetResourceURLBase64Hash(downloaded_urls)));
205 } else { 205 } else {
206 hosts_info.push_back( 206 hosts_info.push_back(
207 ManifestHostInfo(PrecacheReferrerHostEntry::kInvalidId, host.first, 207 ManifestHostInfo(PrecacheReferrerHostEntry::kInvalidId, host.first,
208 host.second, std::string(), std::string())); 208 host.second, std::string(), std::string()));
209 } 209 }
210 } 210 }
211 return hosts_info; 211 return hosts_info;
212 } 212 }
213 213
214 PrecacheQuota RetrieveQuotaInfo( 214 PrecacheQuota RetrieveQuotaInfo(
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 GURL(prefix + 634 GURL(prefix +
635 net::EscapeQueryParamValue( 635 net::EscapeQueryParamValue(
636 net::EscapeQueryParamValue(manifest.hostname, false), false)); 636 net::EscapeQueryParamValue(manifest.hostname, false), false));
637 if (manifest.manifest_id != PrecacheReferrerHostEntry::kInvalidId) { 637 if (manifest.manifest_id != PrecacheReferrerHostEntry::kInvalidId) {
638 manifest.manifest_url = net::AppendOrReplaceQueryParameter( 638 manifest.manifest_url = net::AppendOrReplaceQueryParameter(
639 manifest.manifest_url, "manifest", 639 manifest.manifest_url, "manifest",
640 std::to_string(manifest.manifest_id)); 640 std::to_string(manifest.manifest_id));
641 manifest.manifest_url = net::AppendOrReplaceQueryParameter( 641 manifest.manifest_url = net::AppendOrReplaceQueryParameter(
642 manifest.manifest_url, "used_resources", manifest.used_url_hash); 642 manifest.manifest_url, "used_resources", manifest.used_url_hash);
643 manifest.manifest_url = net::AppendOrReplaceQueryParameter( 643 manifest.manifest_url = net::AppendOrReplaceQueryParameter(
644 manifest.manifest_url, "unused_resources", manifest.unused_url_hash); 644 manifest.manifest_url, "d", manifest.downloaded_url_hash);
645 DCHECK(manifest.manifest_url.is_valid()); 645 DCHECK(manifest.manifest_url.is_valid());
646 } 646 }
647 } 647 }
648 unfinished_work_->set_num_manifest_urls(top_hosts_to_fetch_.size()); 648 unfinished_work_->set_num_manifest_urls(top_hosts_to_fetch_.size());
649 649
650 PostTaskAndReplyWithResult( 650 PostTaskAndReplyWithResult(
651 db_task_runner_.get(), FROM_HERE, 651 db_task_runner_.get(), FROM_HERE,
652 base::Bind(&RetrieveQuotaInfo, precache_database_), 652 base::Bind(&RetrieveQuotaInfo, precache_database_),
653 base::Bind(&PrecacheFetcher::OnQuotaInfoRetrieved, AsWeakPtr())); 653 base::Bind(&PrecacheFetcher::OnQuotaInfoRetrieved, AsWeakPtr()));
654 } 654 }
(...skipping 11 matching lines...) Expand all
666 FROM_HERE, 666 FROM_HERE,
667 base::Bind(&PrecacheDatabase::SaveQuota, precache_database_, quota_)); 667 base::Bind(&PrecacheDatabase::SaveQuota, precache_database_, quota_));
668 } 668 }
669 StartNextFetch(); 669 StartNextFetch();
670 } 670 }
671 671
672 ManifestHostInfo::ManifestHostInfo(int64_t manifest_id, 672 ManifestHostInfo::ManifestHostInfo(int64_t manifest_id,
673 const std::string& hostname, 673 const std::string& hostname,
674 int64_t visits, 674 int64_t visits,
675 const std::string& used_url_hash, 675 const std::string& used_url_hash,
676 const std::string& unused_url_hash) 676 const std::string& downloaded_url_hash)
677 : manifest_id(manifest_id), 677 : manifest_id(manifest_id),
678 hostname(hostname), 678 hostname(hostname),
679 visits(visits), 679 visits(visits),
680 used_url_hash(used_url_hash), 680 used_url_hash(used_url_hash),
681 unused_url_hash(unused_url_hash) {} 681 downloaded_url_hash(downloaded_url_hash) {}
682 682
683 ManifestHostInfo::~ManifestHostInfo() {} 683 ManifestHostInfo::~ManifestHostInfo() {}
684 684
685 ManifestHostInfo::ManifestHostInfo(ManifestHostInfo&&) = default; 685 ManifestHostInfo::ManifestHostInfo(ManifestHostInfo&&) = default;
686 686
687 ManifestHostInfo& ManifestHostInfo::operator=(ManifestHostInfo&&) = default; 687 ManifestHostInfo& ManifestHostInfo::operator=(ManifestHostInfo&&) = default;
688 688
689 ResourceInfo::ResourceInfo(const GURL& url, 689 ResourceInfo::ResourceInfo(const GURL& url,
690 const std::string& referrer, 690 const std::string& referrer,
691 double weight) 691 double weight)
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 remaining = 0; 805 remaining = 0;
806 quota_.set_remaining( 806 quota_.set_remaining(
807 used_bytes > quota_.remaining() ? 0U : quota_.remaining() - used_bytes); 807 used_bytes > quota_.remaining() ? 0U : quota_.remaining() - used_bytes);
808 db_task_runner_->PostTask( 808 db_task_runner_->PostTask(
809 FROM_HERE, 809 FROM_HERE,
810 base::Bind(&PrecacheDatabase::SaveQuota, precache_database_, quota_)); 810 base::Bind(&PrecacheDatabase::SaveQuota, precache_database_, quota_));
811 } 811 }
812 } 812 }
813 813
814 } // namespace precache 814 } // namespace precache
OLDNEW
« no previous file with comments | « components/precache/core/precache_fetcher.h ('k') | components/precache/core/precache_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698