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 |