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

Side by Side Diff: chrome/browser/renderer_host/resource_dispatcher_host.cc

Issue 113931: Remove code path that passes a file handle to the renderer... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 7 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "chrome/browser/renderer_host/resource_dispatcher_host.h" 7 #include "chrome/browser/renderer_host/resource_dispatcher_host.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/message_loop.h" 11 #include "base/message_loop.h"
12 #include "base/scoped_ptr.h" 12 #include "base/scoped_ptr.h"
13 #include "base/stl_util-inl.h" 13 #include "base/stl_util-inl.h"
14 #include "base/time.h" 14 #include "base/time.h"
15 #include "chrome/browser/cert_store.h" 15 #include "chrome/browser/cert_store.h"
16 #include "chrome/browser/child_process_security_policy.h" 16 #include "chrome/browser/child_process_security_policy.h"
17 #include "chrome/browser/cross_site_request_manager.h" 17 #include "chrome/browser/cross_site_request_manager.h"
18 #include "chrome/browser/download/download_file.h" 18 #include "chrome/browser/download/download_file.h"
19 #include "chrome/browser/download/download_manager.h" 19 #include "chrome/browser/download/download_manager.h"
20 #include "chrome/browser/download/download_request_manager.h" 20 #include "chrome/browser/download/download_request_manager.h"
21 #include "chrome/browser/download/save_file_manager.h" 21 #include "chrome/browser/download/save_file_manager.h"
22 #include "chrome/browser/external_protocol_handler.h" 22 #include "chrome/browser/external_protocol_handler.h"
23 #include "chrome/browser/plugin_service.h" 23 #include "chrome/browser/plugin_service.h"
24 #include "chrome/browser/profile.h" 24 #include "chrome/browser/profile.h"
25 #include "chrome/browser/renderer_host/async_resource_handler.h" 25 #include "chrome/browser/renderer_host/async_resource_handler.h"
26 #include "chrome/browser/renderer_host/buffered_resource_handler.h" 26 #include "chrome/browser/renderer_host/buffered_resource_handler.h"
27 #include "chrome/browser/renderer_host/cross_site_resource_handler.h" 27 #include "chrome/browser/renderer_host/cross_site_resource_handler.h"
28 #include "chrome/browser/renderer_host/download_resource_handler.h" 28 #include "chrome/browser/renderer_host/download_resource_handler.h"
29 #include "chrome/browser/renderer_host/media_resource_handler.h"
30 #include "chrome/browser/renderer_host/render_view_host.h" 29 #include "chrome/browser/renderer_host/render_view_host.h"
31 #include "chrome/browser/renderer_host/resource_request_details.h" 30 #include "chrome/browser/renderer_host/resource_request_details.h"
32 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" 31 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h"
33 #include "chrome/browser/renderer_host/save_file_resource_handler.h" 32 #include "chrome/browser/renderer_host/save_file_resource_handler.h"
34 #include "chrome/browser/renderer_host/sync_resource_handler.h" 33 #include "chrome/browser/renderer_host/sync_resource_handler.h"
35 #include "chrome/browser/tab_contents/tab_util.h" 34 #include "chrome/browser/tab_contents/tab_util.h"
36 #include "chrome/browser/tab_contents/tab_contents.h" 35 #include "chrome/browser/tab_contents/tab_contents.h"
37 #include "chrome/common/notification_service.h" 36 #include "chrome/common/notification_service.h"
38 #include "chrome/common/render_messages.h" 37 #include "chrome/common/render_messages.h"
39 #include "net/base/auth.h" 38 #include "net/base/auth.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 if (!IsResourceDispatcherHostMessage(message)) 223 if (!IsResourceDispatcherHostMessage(message))
225 return false; 224 return false;
226 225
227 *message_was_ok = true; 226 *message_was_ok = true;
228 receiver_ = receiver; 227 receiver_ = receiver;
229 228
230 IPC_BEGIN_MESSAGE_MAP_EX(ResourceDispatcherHost, message, *message_was_ok) 229 IPC_BEGIN_MESSAGE_MAP_EX(ResourceDispatcherHost, message, *message_was_ok)
231 IPC_MESSAGE_HANDLER(ViewHostMsg_RequestResource, OnRequestResource) 230 IPC_MESSAGE_HANDLER(ViewHostMsg_RequestResource, OnRequestResource)
232 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_SyncLoad, OnSyncLoad) 231 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_SyncLoad, OnSyncLoad)
233 IPC_MESSAGE_HANDLER(ViewHostMsg_DataReceived_ACK, OnDataReceivedACK) 232 IPC_MESSAGE_HANDLER(ViewHostMsg_DataReceived_ACK, OnDataReceivedACK)
234 IPC_MESSAGE_HANDLER(ViewHostMsg_DownloadProgress_ACK, OnDownloadProgressACK)
235 IPC_MESSAGE_HANDLER(ViewHostMsg_UploadProgress_ACK, OnUploadProgressACK) 233 IPC_MESSAGE_HANDLER(ViewHostMsg_UploadProgress_ACK, OnUploadProgressACK)
236 IPC_MESSAGE_HANDLER(ViewHostMsg_CancelRequest, OnCancelRequest) 234 IPC_MESSAGE_HANDLER(ViewHostMsg_CancelRequest, OnCancelRequest)
237 IPC_MESSAGE_HANDLER(ViewHostMsg_ClosePage_ACK, OnClosePageACK) 235 IPC_MESSAGE_HANDLER(ViewHostMsg_ClosePage_ACK, OnClosePageACK)
238 IPC_END_MESSAGE_MAP_EX() 236 IPC_END_MESSAGE_MAP_EX()
239 237
240 receiver_ = NULL; 238 receiver_ = NULL;
241 239
242 return true; 240 return true;
243 } 241 }
244 242
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 scoped_refptr<ResourceHandler> handler; 304 scoped_refptr<ResourceHandler> handler;
307 if (sync_result) { 305 if (sync_result) {
308 handler = new SyncResourceHandler(receiver_, request_data.url, sync_result); 306 handler = new SyncResourceHandler(receiver_, request_data.url, sync_result);
309 } else { 307 } else {
310 handler = new AsyncResourceHandler(receiver_, 308 handler = new AsyncResourceHandler(receiver_,
311 process_id, 309 process_id,
312 route_id, 310 route_id,
313 receiver_->handle(), 311 receiver_->handle(),
314 request_data.url, 312 request_data.url,
315 this); 313 this);
316 // If the resource type is ResourceType::MEDIA and LOAD_ENABLE_DOWNLOAD_FILE
317 // is enabled we insert a media resource handler.
318 if (request_data.resource_type == ResourceType::MEDIA &&
319 (request_data.load_flags & net::LOAD_ENABLE_DOWNLOAD_FILE)) {
320 handler = new MediaResourceHandler(handler,
321 receiver_,
322 process_id,
323 route_id,
324 receiver_->handle(),
325 this);
326 }
327 } 314 }
328 315
329 if (HandleExternalProtocol(request_id, process_id, route_id, 316 if (HandleExternalProtocol(request_id, process_id, route_id,
330 request_data.url, request_data.resource_type, 317 request_data.url, request_data.resource_type,
331 handler)) { 318 handler)) {
332 return; 319 return;
333 } 320 }
334 321
335 // Construct the request. 322 // Construct the request.
336 URLRequest* request = new URLRequest(request_data.url, this); 323 URLRequest* request = new URLRequest(request_data.url, this);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 if (info->pending_data_count == kMaxPendingDataMessages) { 415 if (info->pending_data_count == kMaxPendingDataMessages) {
429 // Decrement the pending data count one more time because we also 416 // Decrement the pending data count one more time because we also
430 // incremented it before pausing the request. 417 // incremented it before pausing the request.
431 info->pending_data_count--; 418 info->pending_data_count--;
432 419
433 // Resume the request. 420 // Resume the request.
434 PauseRequest(process_id, request_id, false); 421 PauseRequest(process_id, request_id, false);
435 } 422 }
436 } 423 }
437 424
438 void ResourceDispatcherHost::OnDownloadProgressACK(int request_id) {
439 // TODO(hclam): do something to help rate limiting the message.
440 }
441
442 void ResourceDispatcherHost::OnUploadProgressACK(int request_id) { 425 void ResourceDispatcherHost::OnUploadProgressACK(int request_id) {
443 int process_id = receiver_->GetProcessId(); 426 int process_id = receiver_->GetProcessId();
444 PendingRequestList::iterator i = pending_requests_.find( 427 PendingRequestList::iterator i = pending_requests_.find(
445 GlobalRequestID(process_id, request_id)); 428 GlobalRequestID(process_id, request_id));
446 if (i == pending_requests_.end()) 429 if (i == pending_requests_.end())
447 return; 430 return;
448 431
449 ExtraRequestInfo* info = ExtraInfoForRequest(i->second); 432 ExtraRequestInfo* info = ExtraInfoForRequest(i->second);
450 info->waiting_for_upload_progress_ack = false; 433 info->waiting_for_upload_progress_ack = false;
451 } 434 }
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 response->response_head.status = request->status(); 892 response->response_head.status = request->status();
910 response->response_head.request_time = request->request_time(); 893 response->response_head.request_time = request->request_time();
911 response->response_head.response_time = request->response_time(); 894 response->response_head.response_time = request->response_time();
912 response->response_head.headers = request->response_headers(); 895 response->response_head.headers = request->response_headers();
913 request->GetCharset(&response->response_head.charset); 896 request->GetCharset(&response->response_head.charset);
914 response->response_head.filter_policy = info->filter_policy; 897 response->response_head.filter_policy = info->filter_policy;
915 response->response_head.content_length = request->GetExpectedContentSize(); 898 response->response_head.content_length = request->GetExpectedContentSize();
916 response->response_head.app_cache_id = WebAppCacheContext::kNoAppCacheId; 899 response->response_head.app_cache_id = WebAppCacheContext::kNoAppCacheId;
917 request->GetMimeType(&response->response_head.mime_type); 900 request->GetMimeType(&response->response_head.mime_type);
918 901
919 // Make sure we don't get a file handle if LOAD_ENABLE_DOWNLOAD_FILE is not
920 // set.
921 DCHECK((request->load_flags() & net::LOAD_ENABLE_DOWNLOAD_FILE) ||
922 request->response_data_file() == base::kInvalidPlatformFileValue);
923 #if defined(OS_POSIX)
924 response->response_head.response_data_file.fd = request->response_data_file();
925 #elif defined(OS_WIN)
926 response->response_head.response_data_file = request->response_data_file();
927 #endif
928
929 if (request->ssl_info().cert) { 902 if (request->ssl_info().cert) {
930 int cert_id = 903 int cert_id =
931 CertStore::GetSharedInstance()->StoreCert( 904 CertStore::GetSharedInstance()->StoreCert(
932 request->ssl_info().cert, 905 request->ssl_info().cert,
933 info->process_id); 906 info->process_id);
934 int cert_status = request->ssl_info().cert_status; 907 int cert_status = request->ssl_info().cert_status;
935 // EV certificate verification could be expensive. We don't want to spend 908 // EV certificate verification could be expensive. We don't want to spend
936 // time performing EV certificate verification on all resources because 909 // time performing EV certificate verification on all resources because
937 // EV status is irrelevant to sub-frames and sub-resources. So we call 910 // EV status is irrelevant to sub-frames and sub-resources. So we call
938 // IsEV here rather than in the network layer because the network layer 911 // IsEV here rather than in the network layer because the network layer
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after
1558 case ViewHostMsg_UploadProgress_ACK::ID: 1531 case ViewHostMsg_UploadProgress_ACK::ID:
1559 case ViewHostMsg_SyncLoad::ID: 1532 case ViewHostMsg_SyncLoad::ID:
1560 return true; 1533 return true;
1561 1534
1562 default: 1535 default:
1563 break; 1536 break;
1564 } 1537 }
1565 1538
1566 return false; 1539 return false;
1567 } 1540 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/resource_dispatcher_host.h ('k') | chrome/browser/renderer_host/resource_message_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698