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

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 comments. Created 8 years, 6 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 ResourcePrefetchPredictor* predictor)
17 : predictor_(predictor->AsWeakPtr()) {
willchan no longer on Chromium 2012/05/31 02:08:58 This needs to happen on the UI thread, right? Can
Shishir 2012/06/02 01:19:29 Done.
18 }
19
20 ResourcePrefetchPredictorObserver::~ResourcePrefetchPredictorObserver() {
willchan no longer on Chromium 2012/05/31 02:08:58 This needs to happen on the IO thread, right? If s
Shishir 2012/06/02 01:19:29 Done.
21 }
22
23 void ResourcePrefetchPredictorObserver::OnRequestStarted(
24 net::URLRequest* request,
25 ResourceType::Type resource_type,
26 int child_id,
27 int route_id) {
28 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
willchan no longer on Chromium 2012/05/31 02:08:58 Can we use DCHECK instead? I'd prefer to avoid the
Shishir 2012/06/02 01:19:29 Done.
29
30 if (!ResourcePrefetchPredictor::ShouldRecordRequest(request, resource_type))
31 return;
32
33 ResourcePrefetchPredictor::URLRequestSummary summary;
34 summary.navigation_id_.render_process_id_ = child_id;
35 summary.navigation_id_.render_view_id_ = route_id;
36 summary.navigation_id_.main_frame_url_ = request->first_party_for_cookies();
37 summary.resource_url_ = request->original_url();
38 summary.resource_type_ = resource_type;
39
40 BrowserThread::PostTask(
41 BrowserThread::UI,
42 FROM_HERE,
43 base::Bind(&ResourcePrefetchPredictor::RecordURLRequest,
44 predictor_,
45 summary));
46 }
47
48 void ResourcePrefetchPredictorObserver::OnRequestRedirected(
49 net::URLRequest* request) {
50 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
51
52 if (!ResourcePrefetchPredictor::ShouldRecordRedirect(request))
53 return;
54 ResourcePrefetchPredictor::URLRequestSummary summary;
55 if (!summary.InitFromURLRequest(request, true))
56 return;
57
58 BrowserThread::PostTask(
59 BrowserThread::UI,
60 FROM_HERE,
61 base::Bind(&ResourcePrefetchPredictor::RecordUrlRedirect,
62 predictor_,
63 summary));
64 }
65
66 void ResourcePrefetchPredictorObserver::OnResponseStarted(
67 net::URLRequest* request) {
68 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
69
70 if (!ResourcePrefetchPredictor::ShouldRecordResponse(request))
71 return;
72 ResourcePrefetchPredictor::URLRequestSummary summary;
73 if (!summary.InitFromURLRequest(request, true))
74 return;
75
76 BrowserThread::PostTask(
77 BrowserThread::UI,
78 FROM_HERE,
79 base::Bind(&ResourcePrefetchPredictor::RecordUrlResponse,
80 predictor_,
81 summary));
82 }
83
84 } // namespace chrome_browser_net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698