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

Unified Diff: chrome/browser/predictors/resource_prefetcher.cc

Issue 2928033003: predictors: move ResourcePrefetcher handling to LoadingPredictor. (Closed)
Patch Set: Address comment. Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/predictors/resource_prefetcher.cc
diff --git a/chrome/browser/predictors/resource_prefetcher.cc b/chrome/browser/predictors/resource_prefetcher.cc
index 6926c657a3bd2388136c48c32621857666690926..b5374be7bc850c8681cb2d46fb99bb125c6718bd 100644
--- a/chrome/browser/predictors/resource_prefetcher.cc
+++ b/chrome/browser/predictors/resource_prefetcher.cc
@@ -49,29 +49,33 @@ ResourcePrefetcher::PrefetcherStats::PrefetcherStats(
start_time(other.start_time),
requests_stats(other.requests_stats) {}
-ResourcePrefetcher::ResourcePrefetcher(Delegate* delegate,
- size_t max_concurrent_requests,
- size_t max_concurrent_requests_per_host,
- const GURL& main_frame_url,
- const std::vector<GURL>& urls)
+ResourcePrefetcher::ResourcePrefetcher(
+ base::WeakPtr<Delegate> delegate,
+ scoped_refptr<net::URLRequestContextGetter> context_getter,
+ size_t max_concurrent_requests,
+ size_t max_concurrent_requests_per_host,
+ const GURL& main_frame_url,
+ const std::vector<GURL>& urls)
: state_(INITIALIZED),
delegate_(delegate),
+ context_getter_(context_getter),
max_concurrent_requests_(max_concurrent_requests),
max_concurrent_requests_per_host_(max_concurrent_requests_per_host),
main_frame_url_(main_frame_url),
prefetched_count_(0),
prefetched_bytes_(0),
+ request_queue_(urls.begin(), urls.end()),
stats_(base::MakeUnique<PrefetcherStats>(main_frame_url)) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-
- std::copy(urls.begin(), urls.end(), std::back_inserter(request_queue_));
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
}
-ResourcePrefetcher::~ResourcePrefetcher() {}
+ResourcePrefetcher::~ResourcePrefetcher() {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
+}
void ResourcePrefetcher::Start() {
TRACE_EVENT_ASYNC_BEGIN0("browser", "ResourcePrefetcher::Prefetch", this);
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
CHECK_EQ(state_, INITIALIZED);
state_ = RUNNING;
@@ -82,7 +86,7 @@ void ResourcePrefetcher::Start() {
void ResourcePrefetcher::Stop() {
TRACE_EVENT_ASYNC_END0("browser", "ResourcePrefetcher::Prefetch", this);
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
if (state_ == FINISHED)
return;
@@ -135,7 +139,11 @@ void ResourcePrefetcher::TryToLaunchPrefetchRequests() {
prefetched_bytes_ / 1024);
state_ = FINISHED;
- delegate_->ResourcePrefetcherFinished(this, std::move(stats_));
+
+ content::BrowserThread::PostTask(
+ content::BrowserThread::UI, FROM_HERE,
+ base::BindOnce(&Delegate::ResourcePrefetcherFinished, delegate_, this,
+ base::Passed(std::move(stats_))));
}
}
@@ -181,8 +189,8 @@ void ResourcePrefetcher::SendRequest(const GURL& url) {
}
})");
std::unique_ptr<net::URLRequest> url_request =
- delegate_->GetURLRequestContext()->CreateRequest(url, net::IDLE, this,
- traffic_annotation);
+ context_getter_->GetURLRequestContext()->CreateRequest(
+ url, net::IDLE, this, traffic_annotation);
host_inflight_counts_[url.host()] += 1;
url_request->set_method("GET");
@@ -286,7 +294,6 @@ void ResourcePrefetcher::OnResponseStarted(net::URLRequest* request,
return;
}
- // TODO(shishir): Do not read cached entries, or ones that are not cacheable.
ReadFullResponse(request);
}
« no previous file with comments | « chrome/browser/predictors/resource_prefetcher.h ('k') | chrome/browser/predictors/resource_prefetcher_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698