| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/browser/net/resource_prefetch_predictor_observer.h" | 5 #include "chrome/browser/net/resource_prefetch_predictor_observer.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "content/public/browser/browser_thread.h" | 9 #include "content/public/browser/browser_thread.h" |
| 10 #include "content/public/browser/resource_request_info.h" | 10 #include "content/public/browser/resource_request_info.h" |
| 11 #include "googleurl/src/gurl.h" |
| 11 #include "net/url_request/url_request.h" | 12 #include "net/url_request/url_request.h" |
| 12 | 13 |
| 13 using content::BrowserThread; | 14 using content::BrowserThread; |
| 14 using predictors::ResourcePrefetchPredictor; | 15 using predictors::ResourcePrefetchPredictor; |
| 15 | 16 |
| 16 namespace { | 17 namespace { |
| 17 | 18 |
| 18 bool SummarizeResponse(net::URLRequest* request, | 19 bool SummarizeResponse(net::URLRequest* request, |
| 19 ResourcePrefetchPredictor::URLRequestSummary* summary) { | 20 ResourcePrefetchPredictor::URLRequestSummary* summary) { |
| 20 const content::ResourceRequestInfo* info = | 21 const content::ResourceRequestInfo* info = |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 | 83 |
| 83 BrowserThread::PostTask( | 84 BrowserThread::PostTask( |
| 84 BrowserThread::UI, | 85 BrowserThread::UI, |
| 85 FROM_HERE, | 86 FROM_HERE, |
| 86 base::Bind(&ResourcePrefetchPredictor::RecordURLRequest, | 87 base::Bind(&ResourcePrefetchPredictor::RecordURLRequest, |
| 87 predictor_, | 88 predictor_, |
| 88 summary)); | 89 summary)); |
| 89 } | 90 } |
| 90 | 91 |
| 91 void ResourcePrefetchPredictorObserver::OnRequestRedirected( | 92 void ResourcePrefetchPredictorObserver::OnRequestRedirected( |
| 93 const GURL& redirect_url, |
| 92 net::URLRequest* request) { | 94 net::URLRequest* request) { |
| 93 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 95 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 94 | 96 |
| 95 if (!ResourcePrefetchPredictor::ShouldRecordRedirect(request)) | 97 if (!ResourcePrefetchPredictor::ShouldRecordRedirect(request)) |
| 96 return; | 98 return; |
| 99 |
| 97 ResourcePrefetchPredictor::URLRequestSummary summary; | 100 ResourcePrefetchPredictor::URLRequestSummary summary; |
| 98 if (!SummarizeResponse(request, &summary)) | 101 if (!SummarizeResponse(request, &summary)) |
| 99 return; | 102 return; |
| 100 | 103 |
| 104 summary.redirect_url = redirect_url; |
| 105 |
| 101 BrowserThread::PostTask( | 106 BrowserThread::PostTask( |
| 102 BrowserThread::UI, | 107 BrowserThread::UI, |
| 103 FROM_HERE, | 108 FROM_HERE, |
| 104 base::Bind(&ResourcePrefetchPredictor::RecordUrlRedirect, | 109 base::Bind(&ResourcePrefetchPredictor::RecordUrlRedirect, |
| 105 predictor_, | 110 predictor_, |
| 106 summary)); | 111 summary)); |
| 107 } | 112 } |
| 108 | 113 |
| 109 void ResourcePrefetchPredictorObserver::OnResponseStarted( | 114 void ResourcePrefetchPredictorObserver::OnResponseStarted( |
| 110 net::URLRequest* request) { | 115 net::URLRequest* request) { |
| 111 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 116 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 112 | 117 |
| 113 if (!ResourcePrefetchPredictor::ShouldRecordResponse(request)) | 118 if (!ResourcePrefetchPredictor::ShouldRecordResponse(request)) |
| 114 return; | 119 return; |
| 115 ResourcePrefetchPredictor::URLRequestSummary summary; | 120 ResourcePrefetchPredictor::URLRequestSummary summary; |
| 116 if (!SummarizeResponse(request, &summary)) | 121 if (!SummarizeResponse(request, &summary)) |
| 117 return; | 122 return; |
| 118 | 123 |
| 119 BrowserThread::PostTask( | 124 BrowserThread::PostTask( |
| 120 BrowserThread::UI, | 125 BrowserThread::UI, |
| 121 FROM_HERE, | 126 FROM_HERE, |
| 122 base::Bind(&ResourcePrefetchPredictor::RecordUrlResponse, | 127 base::Bind(&ResourcePrefetchPredictor::RecordUrlResponse, |
| 123 predictor_, | 128 predictor_, |
| 124 summary)); | 129 summary)); |
| 125 } | 130 } |
| 126 | 131 |
| 127 } // namespace chrome_browser_net | 132 } // namespace chrome_browser_net |
| OLD | NEW |