| 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/chrome_network_delegate.h" | 5 #include "chrome/browser/net/chrome_network_delegate.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 callback.Run(rv); | 104 callback.Run(rv); |
| 105 } | 105 } |
| 106 | 106 |
| 107 #if defined(OS_ANDROID) | 107 #if defined(OS_ANDROID) |
| 108 void RecordPrecacheStatsOnUIThread(const GURL& url, | 108 void RecordPrecacheStatsOnUIThread(const GURL& url, |
| 109 const base::Time& fetch_time, int64 size, | 109 const base::Time& fetch_time, int64 size, |
| 110 bool was_cached, void* profile_id) { | 110 bool was_cached, void* profile_id) { |
| 111 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 111 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 112 | 112 |
| 113 Profile* profile = reinterpret_cast<Profile*>(profile_id); | 113 Profile* profile = reinterpret_cast<Profile*>(profile_id); |
| 114 if (!g_browser_process->profile_manager()->IsValidProfile(profile)) { | 114 if (!g_browser_process->profile_manager()->IsValidProfile(profile)) |
| 115 return; | 115 return; |
| 116 } | |
| 117 | 116 |
| 118 precache::PrecacheManager* precache_manager = | 117 precache::PrecacheManager* precache_manager = |
| 119 precache::PrecacheManagerFactory::GetForBrowserContext(profile); | 118 precache::PrecacheManagerFactory::GetForBrowserContext(profile); |
| 120 if (!precache_manager || !precache_manager->IsPrecachingAllowed()) { | 119 // |precache_manager| could be NULL if the profile is off the record. |
| 121 // |precache_manager| could be NULL if the profile is off the record. | 120 if (!precache_manager || !precache_manager->WouldRun()) |
| 122 return; | 121 return; |
| 123 } | |
| 124 | 122 |
| 125 precache_manager->RecordStatsForFetch(url, fetch_time, size, was_cached); | 123 precache_manager->RecordStatsForFetch(url, fetch_time, size, was_cached); |
| 126 } | 124 } |
| 127 #endif // defined(OS_ANDROID) | 125 #endif // defined(OS_ANDROID) |
| 128 | 126 |
| 129 void ReportInvalidReferrerSendOnUI() { | 127 void ReportInvalidReferrerSendOnUI() { |
| 130 base::RecordAction( | 128 base::RecordAction( |
| 131 base::UserMetricsAction("Net.URLRequest_StartJob_InvalidReferrer")); | 129 base::UserMetricsAction("Net.URLRequest_StartJob_InvalidReferrer")); |
| 132 } | 130 } |
| 133 | 131 |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 RecordCacheStateStats(request); | 493 RecordCacheStateStats(request); |
| 496 } | 494 } |
| 497 | 495 |
| 498 if (request->status().status() == net::URLRequestStatus::SUCCESS) { | 496 if (request->status().status() == net::URLRequestStatus::SUCCESS) { |
| 499 #if defined(OS_ANDROID) | 497 #if defined(OS_ANDROID) |
| 500 // For better accuracy, we use the actual bytes read instead of the length | 498 // For better accuracy, we use the actual bytes read instead of the length |
| 501 // specified with the Content-Length header, which may be inaccurate, | 499 // specified with the Content-Length header, which may be inaccurate, |
| 502 // or missing, as is the case with chunked encoding. | 500 // or missing, as is the case with chunked encoding. |
| 503 int64 received_content_length = request->received_response_content_length(); | 501 int64 received_content_length = request->received_response_content_length(); |
| 504 | 502 |
| 505 // Record precache metrics when a fetch is completed successfully. | 503 // Record precache metrics when a fetch is completed successfully, if |
| 504 // precaching is allowed. |
| 506 BrowserThread::PostTask( | 505 BrowserThread::PostTask( |
| 507 BrowserThread::UI, FROM_HERE, | 506 BrowserThread::UI, FROM_HERE, |
| 508 base::Bind(&RecordPrecacheStatsOnUIThread, request->url(), | 507 base::Bind(&RecordPrecacheStatsOnUIThread, request->url(), |
| 509 base::Time::Now(), received_content_length, | 508 base::Time::Now(), received_content_length, |
| 510 request->was_cached(), profile_)); | 509 request->was_cached(), profile_)); |
| 511 #endif // defined(OS_ANDROID) | 510 #endif // defined(OS_ANDROID) |
| 512 extensions_delegate_->OnCompleted(request, started); | 511 extensions_delegate_->OnCompleted(request, started); |
| 513 } else if (request->status().status() == net::URLRequestStatus::FAILED || | 512 } else if (request->status().status() == net::URLRequestStatus::FAILED || |
| 514 request->status().status() == net::URLRequestStatus::CANCELED) { | 513 request->status().status() == net::URLRequestStatus::CANCELED) { |
| 515 extensions_delegate_->OnCompleted(request, started); | 514 extensions_delegate_->OnCompleted(request, started); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 return experimental_web_platform_features_enabled_; | 682 return experimental_web_platform_features_enabled_; |
| 684 } | 683 } |
| 685 | 684 |
| 686 bool ChromeNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader( | 685 bool ChromeNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader( |
| 687 const net::URLRequest& request, | 686 const net::URLRequest& request, |
| 688 const GURL& target_url, | 687 const GURL& target_url, |
| 689 const GURL& referrer_url) const { | 688 const GURL& referrer_url) const { |
| 690 ReportInvalidReferrerSend(target_url, referrer_url); | 689 ReportInvalidReferrerSend(target_url, referrer_url); |
| 691 return true; | 690 return true; |
| 692 } | 691 } |
| OLD | NEW |