Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(747)

Side by Side Diff: content/browser/loader/resource_dispatcher_host_impl.cc

Issue 15682009: Eliminate SwapOut message parameters, keeping state in RVHM instead. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase to get Android build fix Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading
6 6
7 #include "content/browser/loader/resource_dispatcher_host_impl.h" 7 #include "content/browser/loader/resource_dispatcher_host_impl.h"
8 8
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 #if defined(OS_WIN) 208 #if defined(OS_WIN)
209 #pragma warning(disable: 4748) 209 #pragma warning(disable: 4748)
210 #pragma optimize("", off) 210 #pragma optimize("", off)
211 #endif 211 #endif
212 212
213 #if defined(OS_WIN) 213 #if defined(OS_WIN)
214 #pragma optimize("", on) 214 #pragma optimize("", on)
215 #pragma warning(default: 4748) 215 #pragma warning(default: 4748)
216 #endif 216 #endif
217 217
218 void OnSwapOutACKHelper(int render_process_id,
219 int render_view_id,
220 bool timed_out) {
221 RenderViewHostImpl* rvh = RenderViewHostImpl::FromID(render_process_id,
222 render_view_id);
223 if (rvh)
224 rvh->OnSwapOutACK(timed_out);
225 }
226
227 net::Error CallbackAndReturn( 218 net::Error CallbackAndReturn(
228 const DownloadResourceHandler::OnStartedCallback& started_cb, 219 const DownloadResourceHandler::OnStartedCallback& started_cb,
229 net::Error net_error) { 220 net::Error net_error) {
230 if (started_cb.is_null()) 221 if (started_cb.is_null())
231 return net_error; 222 return net_error;
232 BrowserThread::PostTask( 223 BrowserThread::PostTask(
233 BrowserThread::UI, FROM_HERE, 224 BrowserThread::UI, FROM_HERE,
234 base::Bind(started_cb, static_cast<DownloadItem*>(NULL), net_error)); 225 base::Bind(started_cb, static_cast<DownloadItem*>(NULL), net_error));
235 226
236 return net_error; 227 return net_error;
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 filter_ = filter; 836 filter_ = filter;
846 bool handled = true; 837 bool handled = true;
847 IPC_BEGIN_MESSAGE_MAP_EX(ResourceDispatcherHostImpl, message, *message_was_ok) 838 IPC_BEGIN_MESSAGE_MAP_EX(ResourceDispatcherHostImpl, message, *message_was_ok)
848 IPC_MESSAGE_HANDLER(ResourceHostMsg_RequestResource, OnRequestResource) 839 IPC_MESSAGE_HANDLER(ResourceHostMsg_RequestResource, OnRequestResource)
849 IPC_MESSAGE_HANDLER_DELAY_REPLY(ResourceHostMsg_SyncLoad, OnSyncLoad) 840 IPC_MESSAGE_HANDLER_DELAY_REPLY(ResourceHostMsg_SyncLoad, OnSyncLoad)
850 IPC_MESSAGE_HANDLER(ResourceHostMsg_ReleaseDownloadedFile, 841 IPC_MESSAGE_HANDLER(ResourceHostMsg_ReleaseDownloadedFile,
851 OnReleaseDownloadedFile) 842 OnReleaseDownloadedFile)
852 IPC_MESSAGE_HANDLER(ResourceHostMsg_DataDownloaded_ACK, OnDataDownloadedACK) 843 IPC_MESSAGE_HANDLER(ResourceHostMsg_DataDownloaded_ACK, OnDataDownloadedACK)
853 IPC_MESSAGE_HANDLER(ResourceHostMsg_UploadProgress_ACK, OnUploadProgressACK) 844 IPC_MESSAGE_HANDLER(ResourceHostMsg_UploadProgress_ACK, OnUploadProgressACK)
854 IPC_MESSAGE_HANDLER(ResourceHostMsg_CancelRequest, OnCancelRequest) 845 IPC_MESSAGE_HANDLER(ResourceHostMsg_CancelRequest, OnCancelRequest)
855 IPC_MESSAGE_HANDLER(ViewHostMsg_SwapOut_ACK, OnSwapOutACK)
856 IPC_MESSAGE_HANDLER(ViewHostMsg_DidLoadResourceFromMemoryCache, 846 IPC_MESSAGE_HANDLER(ViewHostMsg_DidLoadResourceFromMemoryCache,
857 OnDidLoadResourceFromMemoryCache) 847 OnDidLoadResourceFromMemoryCache)
858 IPC_MESSAGE_UNHANDLED(handled = false) 848 IPC_MESSAGE_UNHANDLED(handled = false)
859 IPC_END_MESSAGE_MAP_EX() 849 IPC_END_MESSAGE_MAP_EX()
860 850
861 if (!handled && IPC_MESSAGE_ID_CLASS(message.type()) == ResourceMsgStart) { 851 if (!handled && IPC_MESSAGE_ID_CLASS(message.type()) == ResourceMsgStart) {
862 PickleIterator iter(message); 852 PickleIterator iter(message);
863 int request_id = -1; 853 int request_id = -1;
864 bool ok = iter.ReadInt(&request_id); 854 bool ok = iter.ReadInt(&request_id);
865 DCHECK(ok); 855 DCHECK(ok);
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
1216 download, // is_download 1206 download, // is_download
1217 false, // is_stream 1207 false, // is_stream
1218 download, // allow_download 1208 download, // allow_download
1219 false, // has_user_gesture 1209 false, // has_user_gesture
1220 WebKit::WebReferrerPolicyDefault, 1210 WebKit::WebReferrerPolicyDefault,
1221 context, 1211 context,
1222 true); // is_async 1212 true); // is_async
1223 } 1213 }
1224 1214
1225 1215
1226 void ResourceDispatcherHostImpl::OnSwapOutACK(
1227 const ViewMsg_SwapOut_Params& params) {
1228 HandleSwapOutACK(params, false);
1229 }
1230
1231 void ResourceDispatcherHostImpl::OnSimulateSwapOutACK(
1232 const ViewMsg_SwapOut_Params& params) {
1233 // Call the real implementation with true, which means that we timed out.
1234 HandleSwapOutACK(params, true);
1235 }
1236
1237 void ResourceDispatcherHostImpl::HandleSwapOutACK(
1238 const ViewMsg_SwapOut_Params& params, bool timed_out) {
1239 // Closes for cross-site transitions are handled such that the cross-site
1240 // transition continues.
1241 ResourceLoader* loader = GetLoader(params.new_render_process_host_id,
1242 params.new_request_id);
1243 if (loader) {
1244 // The response we were meant to resume could have already been canceled.
1245 ResourceRequestInfoImpl* info = loader->GetRequestInfo();
1246 if (info->cross_site_handler())
1247 info->cross_site_handler()->ResumeResponse();
1248 }
1249
1250 // Update the RenderViewHost's internal state after the ACK.
1251 BrowserThread::PostTask(
1252 BrowserThread::UI,
1253 FROM_HERE,
1254 base::Bind(&OnSwapOutACKHelper,
1255 params.closing_process_id,
1256 params.closing_route_id,
1257 timed_out));
1258 }
1259
1260 void ResourceDispatcherHostImpl::OnDidLoadResourceFromMemoryCache( 1216 void ResourceDispatcherHostImpl::OnDidLoadResourceFromMemoryCache(
1261 const GURL& url, 1217 const GURL& url,
1262 const std::string& security_info, 1218 const std::string& security_info,
1263 const std::string& http_method, 1219 const std::string& http_method,
1264 const std::string& mime_type, 1220 const std::string& mime_type,
1265 ResourceType::Type resource_type) { 1221 ResourceType::Type resource_type) {
1266 if (!url.is_valid() || !(url.SchemeIs("http") || url.SchemeIs("https"))) 1222 if (!url.is_valid() || !(url.SchemeIs("http") || url.SchemeIs("https")))
1267 return; 1223 return;
1268 1224
1269 filter_->GetURLRequestContext(resource_type)->http_transaction_factory()-> 1225 filter_->GetURLRequestContext(resource_type)->http_transaction_factory()->
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1339 extra_info->AssociateWithRequest(request.get()); // Request takes ownership. 1295 extra_info->AssociateWithRequest(request.get()); // Request takes ownership.
1340 1296
1341 BeginRequestInternal(request.Pass(), handler.Pass()); 1297 BeginRequestInternal(request.Pass(), handler.Pass());
1342 } 1298 }
1343 1299
1344 void ResourceDispatcherHostImpl::MarkAsTransferredNavigation( 1300 void ResourceDispatcherHostImpl::MarkAsTransferredNavigation(
1345 const GlobalRequestID& id) { 1301 const GlobalRequestID& id) {
1346 GetLoader(id)->MarkAsTransferring(); 1302 GetLoader(id)->MarkAsTransferring();
1347 } 1303 }
1348 1304
1305 void ResourceDispatcherHostImpl::ResumeDeferredNavigation(
1306 const GlobalRequestID& id) {
1307 ResourceLoader* loader = GetLoader(id);
1308 if (loader) {
1309 // The response we were meant to resume could have already been canceled.
1310 ResourceRequestInfoImpl* info = loader->GetRequestInfo();
1311 if (info->cross_site_handler())
1312 info->cross_site_handler()->ResumeResponse();
1313 }
1314 }
1315
1349 // The object died, so cancel and detach all requests associated with it except 1316 // The object died, so cancel and detach all requests associated with it except
1350 // for downloads, which belong to the browser process even if initiated via a 1317 // for downloads, which belong to the browser process even if initiated via a
1351 // renderer. 1318 // renderer.
1352 void ResourceDispatcherHostImpl::CancelRequestsForProcess(int child_id) { 1319 void ResourceDispatcherHostImpl::CancelRequestsForProcess(int child_id) {
1353 CancelRequestsForRoute(child_id, -1 /* cancel all */); 1320 CancelRequestsForRoute(child_id, -1 /* cancel all */);
1354 registered_temp_files_.erase(child_id); 1321 registered_temp_files_.erase(child_id);
1355 } 1322 }
1356 1323
1357 void ResourceDispatcherHostImpl::CancelRequestsForRoute(int child_id, 1324 void ResourceDispatcherHostImpl::CancelRequestsForRoute(int child_id,
1358 int route_id) { 1325 int route_id) {
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
1875 DelegateMap::iterator it = delegate_map_.find(id); 1842 DelegateMap::iterator it = delegate_map_.find(id);
1876 DCHECK(it->second->HasObserver(delegate)); 1843 DCHECK(it->second->HasObserver(delegate));
1877 it->second->RemoveObserver(delegate); 1844 it->second->RemoveObserver(delegate);
1878 if (it->second->size() == 0) { 1845 if (it->second->size() == 0) {
1879 delete it->second; 1846 delete it->second;
1880 delegate_map_.erase(it); 1847 delegate_map_.erase(it);
1881 } 1848 }
1882 } 1849 }
1883 1850
1884 } // namespace content 1851 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.h ('k') | content/browser/renderer_host/render_process_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698