| 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 // This is the browser side of the resource dispatcher, it receives requests | 5 // This is the browser side of the resource dispatcher, it receives requests |
| 6 // from the child process (i.e. [Renderer, Plugin, Worker]ProcessHost), and | 6 // from the child process (i.e. [Renderer, Plugin, Worker]ProcessHost), and |
| 7 // dispatches them to URLRequests. It then forwards the messages from the | 7 // dispatches them to URLRequests. It then forwards the messages from the |
| 8 // URLRequests back to the correct process for handling. | 8 // URLRequests back to the correct process for handling. |
| 9 // | 9 // |
| 10 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc
e-loading | 10 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc
e-loading |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 // transferred. The LoaderDelegate should be interacted with on the IO thread. | 275 // transferred. The LoaderDelegate should be interacted with on the IO thread. |
| 276 void SetLoaderDelegate(LoaderDelegate* loader_delegate); | 276 void SetLoaderDelegate(LoaderDelegate* loader_delegate); |
| 277 | 277 |
| 278 void OnRenderFrameDeleted(const GlobalFrameRoutingId& global_routing_id); | 278 void OnRenderFrameDeleted(const GlobalFrameRoutingId& global_routing_id); |
| 279 | 279 |
| 280 // Called when loading a request with mojo. | 280 // Called when loading a request with mojo. |
| 281 void OnRequestResourceWithMojo(ResourceRequesterInfo* requester_info, | 281 void OnRequestResourceWithMojo(ResourceRequesterInfo* requester_info, |
| 282 int routing_id, | 282 int routing_id, |
| 283 int request_id, | 283 int request_id, |
| 284 const ResourceRequest& request, | 284 const ResourceRequest& request, |
| 285 mojom::URLLoaderAssociatedRequest mojo_request, | 285 mojom::URLLoaderRequest mojo_request, |
| 286 mojom::URLLoaderClientPtr url_loader_client); | 286 mojom::URLLoaderClientPtr url_loader_client); |
| 287 | 287 |
| 288 void OnSyncLoadWithMojo(ResourceRequesterInfo* requester_info, | 288 void OnSyncLoadWithMojo(ResourceRequesterInfo* requester_info, |
| 289 int routing_id, | 289 int routing_id, |
| 290 int request_id, | 290 int request_id, |
| 291 const ResourceRequest& request_data, | 291 const ResourceRequest& request_data, |
| 292 const SyncLoadResultCallback& result_handler); | 292 const SyncLoadResultCallback& result_handler); |
| 293 | 293 |
| 294 // Helper function for initializing the |request| passed in. By initializing | 294 // Helper function for initializing the |request| passed in. By initializing |
| 295 // we mean setting the |referrer| on the |request|, associating the | 295 // we mean setting the |referrer| on the |request|, associating the |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 | 531 |
| 532 void OnRequestResource(ResourceRequesterInfo* requester_info, | 532 void OnRequestResource(ResourceRequesterInfo* requester_info, |
| 533 int routing_id, | 533 int routing_id, |
| 534 int request_id, | 534 int request_id, |
| 535 const ResourceRequest& request_data); | 535 const ResourceRequest& request_data); |
| 536 | 536 |
| 537 void OnRequestResourceInternal(ResourceRequesterInfo* requester_info, | 537 void OnRequestResourceInternal(ResourceRequesterInfo* requester_info, |
| 538 int routing_id, | 538 int routing_id, |
| 539 int request_id, | 539 int request_id, |
| 540 const ResourceRequest& request_data, | 540 const ResourceRequest& request_data, |
| 541 mojom::URLLoaderAssociatedRequest mojo_request, | 541 mojom::URLLoaderRequest mojo_request, |
| 542 mojom::URLLoaderClientPtr url_loader_client); | 542 mojom::URLLoaderClientPtr url_loader_client); |
| 543 | 543 |
| 544 void OnSyncLoad(ResourceRequesterInfo* requester_info, | 544 void OnSyncLoad(ResourceRequesterInfo* requester_info, |
| 545 int request_id, | 545 int request_id, |
| 546 const ResourceRequest& request_data, | 546 const ResourceRequest& request_data, |
| 547 IPC::Message* sync_result); | 547 IPC::Message* sync_result); |
| 548 | 548 |
| 549 bool IsRequestIDInUse(const GlobalRequestID& id) const; | 549 bool IsRequestIDInUse(const GlobalRequestID& id) const; |
| 550 | 550 |
| 551 // Update the ResourceRequestInfo and internal maps when a request is | 551 // Update the ResourceRequestInfo and internal maps when a request is |
| 552 // transferred from one process to another. | 552 // transferred from one process to another. |
| 553 void UpdateRequestForTransfer(ResourceRequesterInfo* requester_info, | 553 void UpdateRequestForTransfer(ResourceRequesterInfo* requester_info, |
| 554 int route_id, | 554 int route_id, |
| 555 int request_id, | 555 int request_id, |
| 556 const ResourceRequest& request_data, | 556 const ResourceRequest& request_data, |
| 557 LoaderMap::iterator iter, | 557 LoaderMap::iterator iter, |
| 558 mojom::URLLoaderAssociatedRequest mojo_request, | 558 mojom::URLLoaderRequest mojo_request, |
| 559 mojom::URLLoaderClientPtr url_loader_client); | 559 mojom::URLLoaderClientPtr url_loader_client); |
| 560 | 560 |
| 561 // If |request_data| is for a request being transferred from another process, | 561 // If |request_data| is for a request being transferred from another process, |
| 562 // then CompleteTransfer method can be used to complete the transfer. | 562 // then CompleteTransfer method can be used to complete the transfer. |
| 563 void CompleteTransfer(ResourceRequesterInfo* requester_info, | 563 void CompleteTransfer(ResourceRequesterInfo* requester_info, |
| 564 int request_id, | 564 int request_id, |
| 565 const ResourceRequest& request_data, | 565 const ResourceRequest& request_data, |
| 566 int route_id, | 566 int route_id, |
| 567 mojom::URLLoaderAssociatedRequest mojo_request, | 567 mojom::URLLoaderRequest mojo_request, |
| 568 mojom::URLLoaderClientPtr url_loader_client); | 568 mojom::URLLoaderClientPtr url_loader_client); |
| 569 | 569 |
| 570 void BeginRequest( | 570 void BeginRequest( |
| 571 ResourceRequesterInfo* requester_info, | 571 ResourceRequesterInfo* requester_info, |
| 572 int request_id, | 572 int request_id, |
| 573 const ResourceRequest& request_data, | 573 const ResourceRequest& request_data, |
| 574 const SyncLoadResultCallback& sync_result_handler, // only valid for sync | 574 const SyncLoadResultCallback& sync_result_handler, // only valid for sync |
| 575 int route_id, | 575 int route_id, |
| 576 mojom::URLLoaderAssociatedRequest mojo_request, | 576 mojom::URLLoaderRequest mojo_request, |
| 577 mojom::URLLoaderClientPtr url_loader_client); | 577 mojom::URLLoaderClientPtr url_loader_client); |
| 578 | 578 |
| 579 // There are requests which need decisions to be made like the following: | 579 // There are requests which need decisions to be made like the following: |
| 580 // Whether the presence of certain HTTP headers like the Origin header are | 580 // Whether the presence of certain HTTP headers like the Origin header are |
| 581 // valid, etc. These requests may need to be aborted based on these | 581 // valid, etc. These requests may need to be aborted based on these |
| 582 // decisions which could be time consuming. We allow for these decisions | 582 // decisions which could be time consuming. We allow for these decisions |
| 583 // to be made asynchronously. The request proceeds when we hear back from | 583 // to be made asynchronously. The request proceeds when we hear back from |
| 584 // the interceptors about whether to continue or not. | 584 // the interceptors about whether to continue or not. |
| 585 // The |interceptor_result| indicates whether the request should be continued | 585 // The |interceptor_result| indicates whether the request should be continued |
| 586 // or aborted, and in the latter case whether the renderer should be killed. | 586 // or aborted, and in the latter case whether the renderer should be killed. |
| 587 void ContinuePendingBeginRequest( | 587 void ContinuePendingBeginRequest( |
| 588 scoped_refptr<ResourceRequesterInfo> requester_info, | 588 scoped_refptr<ResourceRequesterInfo> requester_info, |
| 589 int request_id, | 589 int request_id, |
| 590 const ResourceRequest& request_data, | 590 const ResourceRequest& request_data, |
| 591 const SyncLoadResultCallback& sync_result_handler, // only valid for sync | 591 const SyncLoadResultCallback& sync_result_handler, // only valid for sync |
| 592 int route_id, | 592 int route_id, |
| 593 const net::HttpRequestHeaders& headers, | 593 const net::HttpRequestHeaders& headers, |
| 594 mojom::URLLoaderAssociatedRequest mojo_request, | 594 mojom::URLLoaderRequest mojo_request, |
| 595 mojom::URLLoaderClientPtr url_loader_client, | 595 mojom::URLLoaderClientPtr url_loader_client, |
| 596 HeaderInterceptorResult interceptor_result); | 596 HeaderInterceptorResult interceptor_result); |
| 597 | 597 |
| 598 // Creates a ResourceHandler to be used by BeginRequest() for normal resource | 598 // Creates a ResourceHandler to be used by BeginRequest() for normal resource |
| 599 // loading. | 599 // loading. |
| 600 std::unique_ptr<ResourceHandler> CreateResourceHandler( | 600 std::unique_ptr<ResourceHandler> CreateResourceHandler( |
| 601 ResourceRequesterInfo* requester_info, | 601 ResourceRequesterInfo* requester_info, |
| 602 net::URLRequest* request, | 602 net::URLRequest* request, |
| 603 const ResourceRequest& request_data, | 603 const ResourceRequest& request_data, |
| 604 const SyncLoadResultCallback& sync_result_handler, | 604 const SyncLoadResultCallback& sync_result_handler, |
| 605 int route_id, | 605 int route_id, |
| 606 int child_id, | 606 int child_id, |
| 607 ResourceContext* resource_context, | 607 ResourceContext* resource_context, |
| 608 mojom::URLLoaderAssociatedRequest mojo_request, | 608 mojom::URLLoaderRequest mojo_request, |
| 609 mojom::URLLoaderClientPtr url_loader_client); | 609 mojom::URLLoaderClientPtr url_loader_client); |
| 610 | 610 |
| 611 // Creates either MojoAsyncResourceHandler or AsyncResourceHandler. | 611 // Creates either MojoAsyncResourceHandler or AsyncResourceHandler. |
| 612 std::unique_ptr<ResourceHandler> CreateBaseResourceHandler( | 612 std::unique_ptr<ResourceHandler> CreateBaseResourceHandler( |
| 613 net::URLRequest* request, | 613 net::URLRequest* request, |
| 614 mojom::URLLoaderAssociatedRequest mojo_request, | 614 mojom::URLLoaderRequest mojo_request, |
| 615 mojom::URLLoaderClientPtr url_loader_client, | 615 mojom::URLLoaderClientPtr url_loader_client, |
| 616 ResourceType resource_type); | 616 ResourceType resource_type); |
| 617 | 617 |
| 618 // Wraps |handler| in the standard resource handlers for normal resource | 618 // Wraps |handler| in the standard resource handlers for normal resource |
| 619 // loading and navigation requests. This adds MimeTypeResourceHandler and | 619 // loading and navigation requests. This adds MimeTypeResourceHandler and |
| 620 // ResourceThrottles. | 620 // ResourceThrottles. |
| 621 // PlzNavigate: |navigation_loader_core| and |stream_handle| are used to | 621 // PlzNavigate: |navigation_loader_core| and |stream_handle| are used to |
| 622 // properly initialized the NavigationResourceHandler placed in navigation | 622 // properly initialized the NavigationResourceHandler placed in navigation |
| 623 // requests. They should be non-null in that case. | 623 // requests. They should be non-null in that case. |
| 624 std::unique_ptr<ResourceHandler> AddStandardHandlers( | 624 std::unique_ptr<ResourceHandler> AddStandardHandlers( |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 | 830 |
| 831 // Whether experimental web platform features are enabled. | 831 // Whether experimental web platform features are enabled. |
| 832 bool experimental_web_features_enabled_; | 832 bool experimental_web_features_enabled_; |
| 833 | 833 |
| 834 DISALLOW_COPY_AND_ASSIGN(ResourceDispatcherHostImpl); | 834 DISALLOW_COPY_AND_ASSIGN(ResourceDispatcherHostImpl); |
| 835 }; | 835 }; |
| 836 | 836 |
| 837 } // namespace content | 837 } // namespace content |
| 838 | 838 |
| 839 #endif // CONTENT_BROWSER_LOADER_RESOURCE_DISPATCHER_HOST_IMPL_H_ | 839 #endif // CONTENT_BROWSER_LOADER_RESOURCE_DISPATCHER_HOST_IMPL_H_ |
| OLD | NEW |