| Index: net/cronet/android/url_request_peer.h
|
| diff --git a/net/cronet/android/url_request_peer.h b/net/cronet/android/url_request_peer.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d775e9be1f1eb27c8cc5bf4ddcb072c8ee75aa84
|
| --- /dev/null
|
| +++ b/net/cronet/android/url_request_peer.h
|
| @@ -0,0 +1,137 @@
|
| +// Copyright 2013 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.
|
| +
|
| +#ifndef NET_CRONET_ANDROID_URL_REQUEST_PEER_H_
|
| +#define NET_CRONET_ANDROID_URL_REQUEST_PEER_H_
|
| +
|
| +#include "base/compiler_specific.h"
|
| +#include "base/macros.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "net/base/request_priority.h"
|
| +#include "net/base/upload_data_stream.h"
|
| +#include "net/cronet/android/url_request_context_peer.h"
|
| +#include "net/http/http_request_headers.h"
|
| +#include "net/url_request/url_request.h"
|
| +
|
| +// An adapter from the JNI |UrlRequest| object and the Chromium |URLRequest|
|
| +// object.
|
| +class URLRequestPeer : public net::URLRequest::Delegate {
|
| + public:
|
| + // The delegate which is called when the request finishes.
|
| + class URLRequestPeerDelegate
|
| + : public base::RefCountedThreadSafe<URLRequestPeerDelegate> {
|
| + public:
|
| + virtual void OnAppendChunkCompleted(URLRequestPeer* request) = 0;
|
| + virtual void OnResponseStarted(URLRequestPeer* request) = 0;
|
| + virtual void OnBytesRead(URLRequestPeer* request) = 0;
|
| + virtual void OnRequestFinished(URLRequestPeer* request) = 0;
|
| +
|
| + protected:
|
| + friend class base::RefCountedThreadSafe<URLRequestPeerDelegate>;
|
| + virtual ~URLRequestPeerDelegate() {}
|
| + };
|
| +
|
| + URLRequestPeer(URLRequestContextPeer* context,
|
| + URLRequestPeerDelegate* delegate,
|
| + GURL url,
|
| + net::RequestPriority priority);
|
| + virtual ~URLRequestPeer();
|
| +
|
| + // Sets the request method GET, POST etc
|
| + void SetMethod(const std::string& method);
|
| +
|
| + // Adds a header to the request
|
| + void AddHeader(const std::string& name, const std::string& value);
|
| +
|
| + // Sets the contents of the POST request
|
| + void SetPostContent(const char* bytes, int bytes_len);
|
| +
|
| + // Indicates that the request body will be streamed by calling AppendChunk()
|
| + // repeatedly. This must be called before Start().
|
| + void EnableStreamingUpload();
|
| +
|
| + // Appends a chunk to the POST body
|
| + // This must be called after EnableChunkedUpload() and Start().
|
| + void AppendChunk(const char* bytes, int bytes_len, bool is_last_chunk);
|
| +
|
| + // Starts the request.
|
| + void Start();
|
| +
|
| + // Cancels the request.
|
| + void Cancel();
|
| +
|
| + // Releases all resources for the request and deletes the object itself.
|
| + void Destroy();
|
| +
|
| + // Returns the URL of the request.
|
| + GURL url() const { return url_; }
|
| +
|
| + // Returns the error code after the request is complete.
|
| + // Negative codes indicate system errors.
|
| + int error_code() const { return error_code_; }
|
| +
|
| + // Returns the HTTP status code.
|
| + int http_status_code() const {
|
| + return http_status_code_;
|
| + };
|
| +
|
| + // Returns the value of the content-length response header.
|
| + int64 content_length() const { return expected_size_; }
|
| +
|
| + // Returns the value of the content-type response header.
|
| + std::string content_type() const { return content_type_; }
|
| +
|
| + // Returns the overall number of bytes read.
|
| + size_t bytes_read() const { return bytes_read_; }
|
| +
|
| + // Returns a pointer to the downloaded data.
|
| + unsigned char* Data() const;
|
| +
|
| + virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE;
|
| +
|
| + virtual void OnReadCompleted(net::URLRequest* request,
|
| + int bytes_read) OVERRIDE;
|
| +
|
| + private:
|
| + URLRequestContextPeer* context_;
|
| + scoped_refptr<URLRequestPeerDelegate> delegate_;
|
| + GURL url_;
|
| + net::RequestPriority priority_;
|
| + std::string method_;
|
| + net::HttpRequestHeaders headers_;
|
| + net::URLRequest* url_request_;
|
| + scoped_ptr<net::UploadDataStream> upload_data_stream_;
|
| + scoped_refptr<net::GrowableIOBuffer> read_buffer_;
|
| + int bytes_read_;
|
| + int total_bytes_read_;
|
| + int error_code_;
|
| + int http_status_code_;
|
| + std::string content_type_;
|
| + bool canceled_;
|
| + int64 expected_size_;
|
| + bool streaming_upload_;
|
| +
|
| + static void OnInitiateConnectionWrapper(URLRequestPeer* self);
|
| + static void OnCancelRequestWrapper(URLRequestPeer* self);
|
| + static void OnDestroyRequest(URLRequestPeer* self);
|
| + static void OnAppendChunkWrapper(URLRequestPeer* self,
|
| + const char* bytes,
|
| + int bytes_len,
|
| + bool is_last_chunk);
|
| +
|
| + void OnInitiateConnection();
|
| + void OnCancelRequest();
|
| + void OnRequestSucceeded();
|
| + void OnRequestFailed();
|
| + void OnRequestCompleted();
|
| + void OnRequestCanceled();
|
| + void OnBytesRead(int bytes_read);
|
| + void OnAppendChunk(const char* bytes, int bytes_len, bool is_last_chunk);
|
| +
|
| + void Read();
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(URLRequestPeer);
|
| +};
|
| +
|
| +#endif // NET_CRONET_ANDROID_URL_REQUEST_PEER_H_
|
|
|