| 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/prerender/prerender_manager.h" | 5 #include "chrome/browser/prerender/prerender_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> |
| 8 |
| 7 #include <algorithm> | 9 #include <algorithm> |
| 8 #include <functional> | 10 #include <functional> |
| 9 #include <string> | 11 #include <string> |
| 10 #include <vector> | 12 #include <vector> |
| 11 | 13 |
| 12 #include "base/bind.h" | 14 #include "base/bind.h" |
| 13 #include "base/bind_helpers.h" | 15 #include "base/bind_helpers.h" |
| 14 #include "base/location.h" | 16 #include "base/location.h" |
| 15 #include "base/logging.h" | 17 #include "base/logging.h" |
| 18 #include "base/macros.h" |
| 16 #include "base/metrics/histogram.h" | 19 #include "base/metrics/histogram.h" |
| 17 #include "base/single_thread_task_runner.h" | 20 #include "base/single_thread_task_runner.h" |
| 18 #include "base/thread_task_runner_handle.h" | 21 #include "base/thread_task_runner_handle.h" |
| 19 #include "base/time/time.h" | 22 #include "base/time/time.h" |
| 20 #include "base/timer/elapsed_timer.h" | 23 #include "base/timer/elapsed_timer.h" |
| 21 #include "base/values.h" | 24 #include "base/values.h" |
| 22 #include "chrome/browser/browser_process.h" | 25 #include "chrome/browser/browser_process.h" |
| 23 #include "chrome/browser/chrome_notification_types.h" | 26 #include "chrome/browser/chrome_notification_types.h" |
| 24 #include "chrome/browser/net/prediction_options.h" | 27 #include "chrome/browser/net/prediction_options.h" |
| 25 #include "chrome/browser/prerender/prerender_contents.h" | 28 #include "chrome/browser/prerender/prerender_contents.h" |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 on_close_web_contents_deleters_.clear(); | 245 on_close_web_contents_deleters_.clear(); |
| 243 profile_ = NULL; | 246 profile_ = NULL; |
| 244 | 247 |
| 245 DCHECK(active_prerenders_.empty()); | 248 DCHECK(active_prerenders_.empty()); |
| 246 } | 249 } |
| 247 | 250 |
| 248 PrerenderHandle* PrerenderManager::AddPrerenderFromLinkRelPrerender( | 251 PrerenderHandle* PrerenderManager::AddPrerenderFromLinkRelPrerender( |
| 249 int process_id, | 252 int process_id, |
| 250 int route_id, | 253 int route_id, |
| 251 const GURL& url, | 254 const GURL& url, |
| 252 const uint32 rel_types, | 255 const uint32_t rel_types, |
| 253 const content::Referrer& referrer, | 256 const content::Referrer& referrer, |
| 254 const gfx::Size& size) { | 257 const gfx::Size& size) { |
| 255 Origin origin = rel_types & PrerenderRelTypePrerender ? | 258 Origin origin = rel_types & PrerenderRelTypePrerender ? |
| 256 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN : | 259 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN : |
| 257 ORIGIN_LINK_REL_NEXT; | 260 ORIGIN_LINK_REL_NEXT; |
| 258 SessionStorageNamespace* session_storage_namespace = NULL; | 261 SessionStorageNamespace* session_storage_namespace = NULL; |
| 259 // Unit tests pass in a process_id == -1. | 262 // Unit tests pass in a process_id == -1. |
| 260 if (process_id != -1) { | 263 if (process_id != -1) { |
| 261 RenderViewHost* source_render_view_host = | 264 RenderViewHost* source_render_view_host = |
| 262 RenderViewHost::FromID(process_id, route_id); | 265 RenderViewHost::FromID(process_id, route_id); |
| (...skipping 974 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1237 | 1240 |
| 1238 PrerenderContents* prerender_contents = GetPrerenderContents(tab); | 1241 PrerenderContents* prerender_contents = GetPrerenderContents(tab); |
| 1239 if (!prerender_contents) | 1242 if (!prerender_contents) |
| 1240 return; | 1243 return; |
| 1241 | 1244 |
| 1242 prerender_contents->Destroy(prerender::FINAL_STATUS_CREATING_AUDIO_STREAM); | 1245 prerender_contents->Destroy(prerender::FINAL_STATUS_CREATING_AUDIO_STREAM); |
| 1243 } | 1246 } |
| 1244 | 1247 |
| 1245 void PrerenderManager::RecordNetworkBytes(Origin origin, | 1248 void PrerenderManager::RecordNetworkBytes(Origin origin, |
| 1246 bool used, | 1249 bool used, |
| 1247 int64 prerender_bytes) { | 1250 int64_t prerender_bytes) { |
| 1248 if (!ActuallyPrerendering()) | 1251 if (!ActuallyPrerendering()) |
| 1249 return; | 1252 return; |
| 1250 int64 recent_profile_bytes = | 1253 int64_t recent_profile_bytes = |
| 1251 profile_network_bytes_ - last_recorded_profile_network_bytes_; | 1254 profile_network_bytes_ - last_recorded_profile_network_bytes_; |
| 1252 last_recorded_profile_network_bytes_ = profile_network_bytes_; | 1255 last_recorded_profile_network_bytes_ = profile_network_bytes_; |
| 1253 DCHECK_GE(recent_profile_bytes, 0); | 1256 DCHECK_GE(recent_profile_bytes, 0); |
| 1254 histograms_->RecordNetworkBytes( | 1257 histograms_->RecordNetworkBytes( |
| 1255 origin, used, prerender_bytes, recent_profile_bytes); | 1258 origin, used, prerender_bytes, recent_profile_bytes); |
| 1256 } | 1259 } |
| 1257 | 1260 |
| 1258 bool PrerenderManager::IsEnabled() const { | 1261 bool PrerenderManager::IsEnabled() const { |
| 1259 DCHECK(CalledOnValidThread()); | 1262 DCHECK(CalledOnValidThread()); |
| 1260 | 1263 |
| 1261 return chrome_browser_net::CanPrefetchAndPrerenderUI(profile_->GetPrefs()); | 1264 return chrome_browser_net::CanPrefetchAndPrerenderUI(profile_->GetPrefs()); |
| 1262 } | 1265 } |
| 1263 | 1266 |
| 1264 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { | 1267 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64_t bytes) { |
| 1265 DCHECK_GE(bytes, 0); | 1268 DCHECK_GE(bytes, 0); |
| 1266 if (IsEnabled() && ActuallyPrerendering()) | 1269 if (IsEnabled() && ActuallyPrerendering()) |
| 1267 profile_network_bytes_ += bytes; | 1270 profile_network_bytes_ += bytes; |
| 1268 } | 1271 } |
| 1269 | 1272 |
| 1270 void PrerenderManager::AddPrerenderProcessHost( | 1273 void PrerenderManager::AddPrerenderProcessHost( |
| 1271 content::RenderProcessHost* process_host) { | 1274 content::RenderProcessHost* process_host) { |
| 1272 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1275 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1273 DCHECK(prerender_process_hosts_.find(process_host) == | 1276 DCHECK(prerender_process_hosts_.find(process_host) == |
| 1274 prerender_process_hosts_.end()); | 1277 prerender_process_hosts_.end()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1286 } | 1289 } |
| 1287 | 1290 |
| 1288 void PrerenderManager::RenderProcessHostDestroyed( | 1291 void PrerenderManager::RenderProcessHostDestroyed( |
| 1289 content::RenderProcessHost* host) { | 1292 content::RenderProcessHost* host) { |
| 1290 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1293 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1291 size_t erased = prerender_process_hosts_.erase(host); | 1294 size_t erased = prerender_process_hosts_.erase(host); |
| 1292 DCHECK_EQ(1u, erased); | 1295 DCHECK_EQ(1u, erased); |
| 1293 } | 1296 } |
| 1294 | 1297 |
| 1295 } // namespace prerender | 1298 } // namespace prerender |
| OLD | NEW |