| Index: trunk/src/webkit/child/resource_loader_bridge.h
|
| ===================================================================
|
| --- trunk/src/webkit/child/resource_loader_bridge.h (revision 212931)
|
| +++ trunk/src/webkit/child/resource_loader_bridge.h (working copy)
|
| @@ -1,232 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -//
|
| -// The intent of this file is to provide a type-neutral abstraction between
|
| -// Chrome and WebKit for resource loading. This pure-virtual interface is
|
| -// implemented by the embedder.
|
| -//
|
| -// One of these objects will be created by WebKit for each request. WebKit
|
| -// will own the pointer to the bridge, and will delete it when the request is
|
| -// no longer needed.
|
| -//
|
| -// In turn, the bridge's owner on the WebKit end will implement the Peer
|
| -// interface, which we will use to communicate notifications back.
|
| -
|
| -#ifndef WEBKIT_CHILD_RESOURCE_LOADER_BRIDGE_H_
|
| -#define WEBKIT_CHILD_RESOURCE_LOADER_BRIDGE_H_
|
| -
|
| -#include <utility>
|
| -
|
| -#include "build/build_config.h"
|
| -#if defined(OS_POSIX)
|
| -#include "base/file_descriptor_posix.h"
|
| -#endif
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/platform_file.h"
|
| -#include "base/values.h"
|
| -#include "net/base/request_priority.h"
|
| -#include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
|
| -#include "third_party/WebKit/public/platform/WebURLRequest.h"
|
| -#include "url/gurl.h"
|
| -#include "webkit/child/webkit_child_export.h"
|
| -#include "webkit/common/resource_response_info.h"
|
| -#include "webkit/common/resource_type.h"
|
| -
|
| -namespace webkit_glue {
|
| -class ResourceRequestBody;
|
| -
|
| -class ResourceLoaderBridge {
|
| - public:
|
| - // Structure used when calling
|
| - // WebKitPlatformSupportImpl::CreateResourceLoader().
|
| - struct WEBKIT_CHILD_EXPORT RequestInfo {
|
| - RequestInfo();
|
| - ~RequestInfo();
|
| -
|
| - // HTTP-style method name (e.g., "GET" or "POST").
|
| - std::string method;
|
| -
|
| - // Absolute URL encoded in ASCII per the rules of RFC-2396.
|
| - GURL url;
|
| -
|
| - // URL of the document in the top-level window, which may be checked by the
|
| - // third-party cookie blocking policy.
|
| - GURL first_party_for_cookies;
|
| -
|
| - // Optional parameter, a URL with similar constraints in how it must be
|
| - // encoded as the url member.
|
| - GURL referrer;
|
| -
|
| - // The referrer policy that applies to the referrer.
|
| - WebKit::WebReferrerPolicy referrer_policy;
|
| -
|
| - // For HTTP(S) requests, the headers parameter can be a \r\n-delimited and
|
| - // \r\n-terminated list of MIME headers. They should be ASCII-encoded using
|
| - // the standard MIME header encoding rules. The headers parameter can also
|
| - // be null if no extra request headers need to be set.
|
| - std::string headers;
|
| -
|
| - // Composed of the values defined in url_request_load_flags.h.
|
| - int load_flags;
|
| -
|
| - // Process id of the process making the request.
|
| - int requestor_pid;
|
| -
|
| - // Indicates if the current request is the main frame load, a sub-frame
|
| - // load, or a sub objects load.
|
| - ResourceType::Type request_type;
|
| -
|
| - // Indicates the priority of this request, as determined by WebKit.
|
| - net::RequestPriority priority;
|
| -
|
| - // Used for plugin to browser requests.
|
| - uint32 request_context;
|
| -
|
| - // Identifies what appcache host this request is associated with.
|
| - int appcache_host_id;
|
| -
|
| - // Used to associated the bridge with a frame's network context.
|
| - int routing_id;
|
| -
|
| - // If true, then the response body will be downloaded to a file and the
|
| - // path to that file will be provided in ResponseInfo::download_file_path.
|
| - bool download_to_file;
|
| -
|
| - // True if the request was user initiated.
|
| - bool has_user_gesture;
|
| -
|
| - // Extra data associated with this request. We do not own this pointer.
|
| - WebKit::WebURLRequest::ExtraData* extra_data;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(RequestInfo);
|
| - };
|
| -
|
| - // See the SyncLoad method declared below. (The name of this struct is not
|
| - // suffixed with "Info" because it also contains the response data.)
|
| - struct SyncLoadResponse : ResourceResponseInfo {
|
| - WEBKIT_CHILD_EXPORT SyncLoadResponse();
|
| - WEBKIT_CHILD_EXPORT ~SyncLoadResponse();
|
| -
|
| - // The response error code.
|
| - int error_code;
|
| -
|
| - // The final URL of the response. This may differ from the request URL in
|
| - // the case of a server redirect.
|
| - GURL url;
|
| -
|
| - // The response data.
|
| - std::string data;
|
| - };
|
| -
|
| - // Generated by the bridge. This is implemented by our custom resource loader
|
| - // within webkit. The Peer and it's bridge should have identical lifetimes
|
| - // as they represent each end of a communication channel.
|
| - //
|
| - // These callbacks mirror net::URLRequest::Delegate and the order and
|
| - // conditions in which they will be called are identical. See url_request.h
|
| - // for more information.
|
| - class Peer {
|
| - public:
|
| - // Called as upload progress is made.
|
| - // note: only for requests with LOAD_ENABLE_UPLOAD_PROGRESS set
|
| - virtual void OnUploadProgress(uint64 position, uint64 size) = 0;
|
| -
|
| - // Called when a redirect occurs. The implementation may return false to
|
| - // suppress the redirect. The given ResponseInfo provides complete
|
| - // information about the redirect, and new_url is the URL that will be
|
| - // loaded if this method returns true. If this method returns true, the
|
| - // output parameter *has_new_first_party_for_cookies indicates whether the
|
| - // output parameter *new_first_party_for_cookies contains the new URL that
|
| - // should be consulted for the third-party cookie blocking policy.
|
| - virtual bool OnReceivedRedirect(const GURL& new_url,
|
| - const ResourceResponseInfo& info,
|
| - bool* has_new_first_party_for_cookies,
|
| - GURL* new_first_party_for_cookies) = 0;
|
| -
|
| - // Called when response headers are available (after all redirects have
|
| - // been followed).
|
| - virtual void OnReceivedResponse(const ResourceResponseInfo& info) = 0;
|
| -
|
| - // Called when a chunk of response data is downloaded. This method may be
|
| - // called multiple times or not at all if an error occurs. This method is
|
| - // only called if RequestInfo::download_to_file was set to true, and in
|
| - // that case, OnReceivedData will not be called.
|
| - virtual void OnDownloadedData(int len) = 0;
|
| -
|
| - // Called when a chunk of response data is available. This method may
|
| - // be called multiple times or not at all if an error occurs.
|
| - // The encoded_data_length is the length of the encoded data transferred
|
| - // over the network, which could be different from data length (e.g. for
|
| - // gzipped content), or -1 if if unknown.
|
| - virtual void OnReceivedData(const char* data,
|
| - int data_length,
|
| - int encoded_data_length) = 0;
|
| -
|
| - // Called when metadata generated by the renderer is retrieved from the
|
| - // cache. This method may be called zero or one times.
|
| - virtual void OnReceivedCachedMetadata(const char* data, int len) { }
|
| -
|
| - // Called when the response is complete. This method signals completion of
|
| - // the resource load.
|
| - virtual void OnCompletedRequest(
|
| - int error_code,
|
| - bool was_ignored_by_handler,
|
| - const std::string& security_info,
|
| - const base::TimeTicks& completion_time) = 0;
|
| -
|
| - protected:
|
| - virtual ~Peer() {}
|
| - };
|
| -
|
| - // use WebKitPlatformSupportImpl::CreateResourceLoader() for construction, but
|
| - // anybody can delete at any time, INCLUDING during processing of callbacks.
|
| - WEBKIT_CHILD_EXPORT virtual ~ResourceLoaderBridge();
|
| -
|
| - // Call this method before calling Start() to set the request body.
|
| - // May only be used with HTTP(S) POST requests.
|
| - virtual void SetRequestBody(ResourceRequestBody* request_body) = 0;
|
| -
|
| - // Call this method to initiate the request. If this method succeeds, then
|
| - // the peer's methods will be called asynchronously to report various events.
|
| - virtual bool Start(Peer* peer) = 0;
|
| -
|
| - // Call this method to cancel a request that is in progress. This method
|
| - // causes the request to immediately transition into the 'done' state. The
|
| - // OnCompletedRequest method will be called asynchronously; this assumes
|
| - // the peer is still valid.
|
| - virtual void Cancel() = 0;
|
| -
|
| - // Call this method to suspend or resume a load that is in progress. This
|
| - // method may only be called after a successful call to the Start method.
|
| - virtual void SetDefersLoading(bool value) = 0;
|
| -
|
| - // Call this method when the priority of the requested resource changes after
|
| - // Start() has been called. This method may only be called after a successful
|
| - // call to the Start method.
|
| - virtual void DidChangePriority(net::RequestPriority new_priority) = 0;
|
| -
|
| - // Call this method to load the resource synchronously (i.e., in one shot).
|
| - // This is an alternative to the Start 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.
|
| - virtual void SyncLoad(SyncLoadResponse* response) = 0;
|
| -
|
| - protected:
|
| - // Construction must go through
|
| - // WebKitPlatformSupportImpl::CreateResourceLoader()
|
| - // For HTTP(S) POST requests, the AppendDataToUpload and AppendFileToUpload
|
| - // methods may be called to construct the body of the request.
|
| - WEBKIT_CHILD_EXPORT ResourceLoaderBridge();
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(ResourceLoaderBridge);
|
| -};
|
| -
|
| -} // namespace webkit_glue
|
| -
|
| -#endif // WEBKIT_CHILD_RESOURCE_LOADER_BRIDGE_H_
|
|
|