| Index: content/child/resource_dispatcher.h
|
| diff --git a/content/child/resource_dispatcher.h b/content/child/resource_dispatcher.h
|
| index 5aabbd4e91880d1c35a25252f5b8c093fe1c2522..6b8d5a0bc354d7a1f89aafbf02bd19bfb90316b9 100644
|
| --- a/content/child/resource_dispatcher.h
|
| +++ b/content/child/resource_dispatcher.h
|
| @@ -12,6 +12,7 @@
|
|
|
| #include "base/containers/hash_tables.h"
|
| #include "base/memory/linked_ptr.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| #include "base/memory/shared_memory.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/time/time.h"
|
| @@ -21,6 +22,7 @@
|
| #include "net/base/request_priority.h"
|
| #include "webkit/common/resource_type.h"
|
|
|
| +struct ResourceHostMsg_Request;
|
| struct ResourceMsg_RequestCompleteData;
|
|
|
| namespace webkit_glue {
|
| @@ -31,9 +33,11 @@ struct ResourceResponseInfo;
|
| namespace content {
|
| class RequestPeer;
|
| class ResourceDispatcherDelegate;
|
| +class ResourceRequestBody;
|
| struct RequestInfo;
|
| struct ResourceResponseHead;
|
| struct SiteIsolationResponseMetaData;
|
| +struct SyncLoadResponse;
|
|
|
| // This class serves as a communication interface between the
|
| // ResourceDispatcherHost in the browser process and the ResourceLoaderBridge in
|
| @@ -46,36 +50,37 @@ class CONTENT_EXPORT ResourceDispatcher : public IPC::Listener {
|
| // IPC::Listener implementation.
|
| virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
|
|
| - // Creates a ResourceLoaderBridge for this type of dispatcher, this is so
|
| - // this can be tested regardless of the ResourceLoaderBridge::Create
|
| - // implementation.
|
| - webkit_glue::ResourceLoaderBridge* CreateBridge(
|
| - const RequestInfo& request_info);
|
| -
|
| - // Adds a request from the pending_requests_ list, returning the new
|
| - // requests' ID
|
| - int AddPendingRequest(RequestPeer* callback,
|
| - ResourceType::Type resource_type,
|
| - int origin_pid,
|
| - const GURL& frame_origin,
|
| - const GURL& request_url);
|
| -
|
| - // Removes a request from the pending_requests_ list, returning true if the
|
| +
|
| + // Call this method to load the resource synchronously (i.e., in one shot).
|
| + // This is an alternative to the StartAsync method. Be warned that this method
|
| + // will block the calling thread until the resource is fully downloaded or an
|
| + // error occurs. It could block the calling thread for a long time, so only
|
| + // use this if you really need it! There is also no way for the caller to
|
| + // interrupt this method. Errors are reported via the status field of the
|
| + // response parameter.
|
| + void StartSync(const RequestInfo& request_info,
|
| + ResourceRequestBody* request_body,
|
| + SyncLoadResponse* response);
|
| +
|
| + // Call this method to initiate the request. If this method succeeds, then
|
| + // the peer's methods will be called asynchronously to report various events.
|
| + // Returns the request id.
|
| + int StartAsync(const RequestInfo& request_info,
|
| + ResourceRequestBody* request_body,
|
| + RequestPeer* peer);
|
| +
|
| + // Removes a request from the |pending_requests_| list, returning true if the
|
| // request was found and removed.
|
| bool RemovePendingRequest(int request_id);
|
|
|
| - // Cancels a request in the pending_requests_ list.
|
| - void CancelPendingRequest(int request_id);
|
| -
|
| - IPC::Sender* message_sender() const {
|
| - return message_sender_;
|
| - }
|
| + // Cancels a request in the |pending_requests_| list.
|
| + void Cancel(int request_id);
|
|
|
| // Toggles the is_deferred attribute for the specified request.
|
| void SetDefersLoading(int request_id, bool value);
|
|
|
| // Indicates the priority of the specified request changed.
|
| - void DidChangePriority(int routing_id, int request_id,
|
| + void DidChangePriority(int request_id,
|
| net::RequestPriority new_priority,
|
| int intra_priority_value);
|
|
|
| @@ -101,7 +106,8 @@ class CONTENT_EXPORT ResourceDispatcher : public IPC::Listener {
|
| ResourceType::Type resource_type,
|
| int origin_pid,
|
| const GURL& frame_origin,
|
| - const GURL& request_url);
|
| + const GURL& request_url,
|
| + bool download_to_file);
|
|
|
| ~PendingRequestInfo();
|
|
|
| @@ -119,6 +125,7 @@ class CONTENT_EXPORT ResourceDispatcher : public IPC::Listener {
|
| GURL frame_origin;
|
| // The url of the latest response even in case of redirection.
|
| GURL response_url;
|
| + bool download_to_file;
|
| linked_ptr<IPC::Message> pending_redirect_message;
|
| base::TimeTicks request_start;
|
| base::TimeTicks response_start;
|
| @@ -138,33 +145,24 @@ class CONTENT_EXPORT ResourceDispatcher : public IPC::Listener {
|
| void FollowPendingRedirect(int request_id, PendingRequestInfo& request_info);
|
|
|
| // Message response handlers, called by the message handler for this process.
|
| - void OnUploadProgress(
|
| - int request_id,
|
| - int64 position,
|
| - int64 size);
|
| + void OnUploadProgress(int request_id, int64 position, int64 size);
|
| void OnReceivedResponse(int request_id, const ResourceResponseHead&);
|
| void OnReceivedCachedMetadata(int request_id, const std::vector<char>& data);
|
| - void OnReceivedRedirect(
|
| - int request_id,
|
| - const GURL& new_url,
|
| - const ResourceResponseHead& response_head);
|
| - void OnSetDataBuffer(
|
| - int request_id,
|
| - base::SharedMemoryHandle shm_handle,
|
| - int shm_size,
|
| - base::ProcessId renderer_pid);
|
| - void OnReceivedData(
|
| - int request_id,
|
| - int data_offset,
|
| - int data_length,
|
| - int encoded_data_length);
|
| - void OnDownloadedData(
|
| - int request_id,
|
| - int data_len,
|
| - int encoded_data_length);
|
| + void OnReceivedRedirect(int request_id,
|
| + const GURL& new_url,
|
| + const ResourceResponseHead& response_head);
|
| + void OnSetDataBuffer(int request_id,
|
| + base::SharedMemoryHandle shm_handle,
|
| + int shm_size,
|
| + base::ProcessId renderer_pid);
|
| + void OnReceivedData(int request_id,
|
| + int data_offset,
|
| + int data_length,
|
| + int encoded_data_length);
|
| + void OnDownloadedData(int request_id, int data_len, int encoded_data_length);
|
| void OnRequestComplete(
|
| int request_id,
|
| - const ResourceMsg_RequestCompleteData &request_complete_data);
|
| + const ResourceMsg_RequestCompleteData& request_complete_data);
|
|
|
| // Dispatch the message to one of the message response handlers.
|
| void DispatchMessage(const IPC::Message& message);
|
| @@ -201,6 +199,11 @@ class CONTENT_EXPORT ResourceDispatcher : public IPC::Listener {
|
| // for use on deferred message queues that are no longer needed.
|
| static void ReleaseResourcesInMessageQueue(MessageQueue* queue);
|
|
|
| + scoped_ptr<ResourceHostMsg_Request> CreateRequest(
|
| + const RequestInfo& request_info,
|
| + ResourceRequestBody* request_body,
|
| + GURL* frame_origin);
|
| +
|
| IPC::Sender* message_sender_;
|
|
|
| // All pending requests issued to the host
|
|
|