| 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_tracker.h" | 5 #include "chrome/browser/prerender/prerender_tracker.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
| 10 #include "chrome/browser/prerender/prerender_manager.h" | 10 #include "chrome/browser/prerender/prerender_manager.h" |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 const base::WeakPtr<PrerenderPendingSwapThrottle>& throttle) { | 111 const base::WeakPtr<PrerenderPendingSwapThrottle>& throttle) { |
| 112 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 112 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 113 | 113 |
| 114 ChildRouteIdPair render_frame_route_id_pair( | 114 ChildRouteIdPair render_frame_route_id_pair( |
| 115 render_process_id, render_frame_id); | 115 render_process_id, render_frame_id); |
| 116 PendingSwapThrottleMap::iterator it = | 116 PendingSwapThrottleMap::iterator it = |
| 117 pending_swap_throttle_map_.find(render_frame_route_id_pair); | 117 pending_swap_throttle_map_.find(render_frame_route_id_pair); |
| 118 DCHECK(it != pending_swap_throttle_map_.end()); | 118 DCHECK(it != pending_swap_throttle_map_.end()); |
| 119 if (it == pending_swap_throttle_map_.end()) | 119 if (it == pending_swap_throttle_map_.end()) |
| 120 return; | 120 return; |
| 121 it->second.throttle = throttle; | 121 it->second.throttles.push_back(throttle); |
| 122 } | 122 } |
| 123 | 123 |
| 124 void PrerenderTracker::AddPrerenderOnIOThread( | 124 void PrerenderTracker::AddPrerenderOnIOThread( |
| 125 const ChildRouteIdPair& child_route_id_pair) { | 125 const ChildRouteIdPair& child_route_id_pair) { |
| 126 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 126 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 127 DCHECK(!IsPrerenderingOnIOThread(child_route_id_pair.first, | 127 DCHECK(!IsPrerenderingOnIOThread(child_route_id_pair.first, |
| 128 child_route_id_pair.second)); | 128 child_route_id_pair.second)); |
| 129 | 129 |
| 130 resource_throttle_io_thread_map_.insert( | 130 resource_throttle_io_thread_map_.insert( |
| 131 std::make_pair(child_route_id_pair, ResourceThrottleList())); | 131 std::make_pair(child_route_id_pair, ResourceThrottleList())); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 } | 166 } |
| 167 | 167 |
| 168 void PrerenderTracker::RemovePrerenderPendingSwapOnIOThread( | 168 void PrerenderTracker::RemovePrerenderPendingSwapOnIOThread( |
| 169 const ChildRouteIdPair& render_frame_route_id_pair, | 169 const ChildRouteIdPair& render_frame_route_id_pair, |
| 170 bool swap_successful) { | 170 bool swap_successful) { |
| 171 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 171 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 172 PendingSwapThrottleMap::iterator it = | 172 PendingSwapThrottleMap::iterator it = |
| 173 pending_swap_throttle_map_.find(render_frame_route_id_pair); | 173 pending_swap_throttle_map_.find(render_frame_route_id_pair); |
| 174 DCHECK(it != pending_swap_throttle_map_.end()); | 174 DCHECK(it != pending_swap_throttle_map_.end()); |
| 175 // Cancel or resume all throttled resources. | 175 // Cancel or resume all throttled resources. |
| 176 if (it->second.throttle) { | 176 for (size_t i = 0; i < it->second.throttles.size(); i++) { |
| 177 if (!it->second.throttles[i]) |
| 178 continue; |
| 177 if (swap_successful) | 179 if (swap_successful) |
| 178 it->second.throttle->Cancel(); | 180 it->second.throttles[i]->Cancel(); |
| 179 else | 181 else |
| 180 it->second.throttle->Resume(); | 182 it->second.throttles[i]->Resume(); |
| 181 } | 183 } |
| 182 pending_swap_throttle_map_.erase(render_frame_route_id_pair); | 184 pending_swap_throttle_map_.erase(render_frame_route_id_pair); |
| 183 } | 185 } |
| 184 | 186 |
| 185 void PrerenderTracker::AddPrerenderPendingSwap( | 187 void PrerenderTracker::AddPrerenderPendingSwap( |
| 186 const ChildRouteIdPair& render_frame_route_id_pair, | 188 const ChildRouteIdPair& render_frame_route_id_pair, |
| 187 const GURL& url) { | 189 const GURL& url) { |
| 188 BrowserThread::PostTask( | 190 BrowserThread::PostTask( |
| 189 BrowserThread::IO, FROM_HERE, | 191 BrowserThread::IO, FROM_HERE, |
| 190 base::Bind(&PrerenderTracker::AddPrerenderPendingSwapOnIOThread, | 192 base::Bind(&PrerenderTracker::AddPrerenderPendingSwapOnIOThread, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 208 | 210 |
| 209 PrerenderTracker::PendingSwapThrottleData::~PendingSwapThrottleData() { | 211 PrerenderTracker::PendingSwapThrottleData::~PendingSwapThrottleData() { |
| 210 } | 212 } |
| 211 | 213 |
| 212 // static | 214 // static |
| 213 PrerenderTracker* PrerenderTracker::GetDefault() { | 215 PrerenderTracker* PrerenderTracker::GetDefault() { |
| 214 return g_browser_process->prerender_tracker(); | 216 return g_browser_process->prerender_tracker(); |
| 215 } | 217 } |
| 216 | 218 |
| 217 } // namespace prerender | 219 } // namespace prerender |
| OLD | NEW |