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

Side by Side Diff: chrome/browser/net/resource_prefetch_predictor_observer.cc

Issue 10416002: Seculative resource prefetching for URLs CL. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Addressing dominich's and willchan's comments. Created 8 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
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/net/resource_prefetch_predictor_observer.h"
6
7 #include "content/public/browser/browser_thread.h"
8 #include "net/url_request/url_request.h"
9
10 using content::BrowserThread;
11 using predictors::ResourcePrefetchPredictor;
12
13 namespace chrome_browser_net {
14
15 ResourcePrefetchPredictorObserver::ResourcePrefetchPredictorObserver(
16 scoped_refptr<ResourcePrefetchPredictor> predictor)
17 : predictor_(predictor) {
18 DCHECK(predictor_);
19 }
20
21 ResourcePrefetchPredictorObserver::~ResourcePrefetchPredictorObserver() {
22 }
23
24 void ResourcePrefetchPredictorObserver::OnBeforeURLRequest(
25 net::URLRequest* request) {
26 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
27
28 if (ResourcePrefetchPredictor::ShouldRecordRequest(request))
29 CallPredictorOnUIThread(request, false,
30 &ResourcePrefetchPredictor::RecordURLRequest);
31 }
32
33 void ResourcePrefetchPredictorObserver::OnBeforeRedirect(
34 net::URLRequest* request) {
35 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
36
37 if (ResourcePrefetchPredictor::ShouldRecordRedirect(request))
38 CallPredictorOnUIThread(request, false,
39 &ResourcePrefetchPredictor::RecordUrlRedirect);
40 }
41
42 void ResourcePrefetchPredictorObserver::OnResponseStarted(
43 net::URLRequest* request) {
44 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
45
46 if (ResourcePrefetchPredictor::ShouldRecordResponse(request))
47 CallPredictorOnUIThread(request, true,
48 &ResourcePrefetchPredictor::RecordUrlResponse);
49 }
50
51 void ResourcePrefetchPredictorObserver::CallPredictorOnUIThread(
52 net::URLRequest* request,
53 bool is_response,
54 void(predictors::ResourcePrefetchPredictor::*recordFunction)
willchan no longer on Chromium 2012/05/24 22:28:52 recordFunction is not Chromium/Google naming style
Shishir 2012/05/30 01:07:51 Done.
55 (const predictors::ResourcePrefetchPredictor::URLRequestSummary&)) const {
56 ResourcePrefetchPredictor::URLRequestSummary summary;
57 if (!summary.InitFromURLRequest(request, is_response))
58 return;
59
60 CHECK(predictor_.get());
61 BrowserThread::PostTask(BrowserThread::UI,
willchan no longer on Chromium 2012/05/24 22:28:52 How is this safe if the Profile goes away? I know
Shishir 2012/05/30 01:07:51 Wont matter now since this is a weak ptr.
62 FROM_HERE,
63 base::Bind(recordFunction, predictor_, summary));
64 }
65
66 } // namespace chrome_browser_net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698