From fa5f474c5b3389be8dd6929d3284ce15ea330504 Mon Sep 17 00:00:00 2001 From: "mef@chromium.org" Date: Fri, 8 Aug 2014 21:36:19 +0000 Subject: Rename url_request_[context_]peer.* into url_request_[context_]adapter.* BUG=390267 Review URL: https://codereview.chromium.org/453053002 Cr-Commit-Position: refs/heads/master@{#288441} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288441 0039d316-1c4b-4281-b951-d872f2087c98 --- components/cronet.gypi | 8 +- .../java/src/org/chromium/net/UrlRequest.java | 75 +++--- .../src/org/chromium/net/UrlRequestContext.java | 34 +-- .../cronet/android/org_chromium_net_UrlRequest.cc | 128 +++++----- .../android/org_chromium_net_UrlRequestContext.cc | 74 +++--- components/cronet/android/url_request_adapter.cc | 265 +++++++++++++++++++++ components/cronet/android/url_request_adapter.h | 145 +++++++++++ .../cronet/android/url_request_context_adapter.cc | 209 ++++++++++++++++ .../cronet/android/url_request_context_adapter.h | 88 +++++++ .../cronet/android/url_request_context_peer.cc | 209 ---------------- .../cronet/android/url_request_context_peer.h | 88 ------- components/cronet/android/url_request_peer.cc | 258 -------------------- components/cronet/android/url_request_peer.h | 145 ----------- .../wrapped_channel_upload_element_reader.cc | 2 +- .../wrapped_channel_upload_element_reader.h | 6 +- 15 files changed, 880 insertions(+), 854 deletions(-) create mode 100644 components/cronet/android/url_request_adapter.cc create mode 100644 components/cronet/android/url_request_adapter.h create mode 100644 components/cronet/android/url_request_context_adapter.cc create mode 100644 components/cronet/android/url_request_context_adapter.h delete mode 100644 components/cronet/android/url_request_context_peer.cc delete mode 100644 components/cronet/android/url_request_context_peer.h delete mode 100644 components/cronet/android/url_request_peer.cc delete mode 100644 components/cronet/android/url_request_peer.h diff --git a/components/cronet.gypi b/components/cronet.gypi index 2915571..c0dfb33 100644 --- a/components/cronet.gypi +++ b/components/cronet.gypi @@ -118,10 +118,10 @@ 'cronet/android/org_chromium_net_UrlRequestContext.cc', 'cronet/android/org_chromium_net_UrlRequestContext.h', 'cronet/android/org_chromium_net_UrlRequestContext_config_list.h', - 'cronet/android/url_request_context_peer.cc', - 'cronet/android/url_request_context_peer.h', - 'cronet/android/url_request_peer.cc', - 'cronet/android/url_request_peer.h', + 'cronet/android/url_request_adapter.cc', + 'cronet/android/url_request_adapter.h', + 'cronet/android/url_request_context_adapter.cc', + 'cronet/android/url_request_context_adapter.h', 'cronet/android/wrapped_channel_upload_element_reader.cc', 'cronet/android/wrapped_channel_upload_element_reader.h', ], diff --git a/components/cronet/android/java/src/org/chromium/net/UrlRequest.java b/components/cronet/android/java/src/org/chromium/net/UrlRequest.java index 7cf9ef4..73e9aba 100644 --- a/components/cronet/android/java/src/org/chromium/net/UrlRequest.java +++ b/components/cronet/android/java/src/org/chromium/net/UrlRequest.java @@ -52,9 +52,9 @@ public class UrlRequest { private final ContextLock mLock; /** - * Native peer object, owned by UrlRequest. + * Native adapter object, owned by UrlRequest. */ - private long mUrlRequestPeer; + private long mUrlRequestAdapter; /** * Constructor. @@ -81,8 +81,8 @@ public class UrlRequest { mHeaders = headers; mSink = sink; mLock = new ContextLock(); - mUrlRequestPeer = nativeCreateRequestPeer( - mRequestContext.getUrlRequestContextPeer(), mUrl, mPriority); + mUrlRequestAdapter = nativeCreateRequestAdapter( + mRequestContext.getUrlRequestContextAdapter(), mUrl, mPriority); } /** @@ -136,7 +136,7 @@ public class UrlRequest { public void setHttpMethod(String method) { validateNotStarted(); if (!("PUT".equals(method) || "POST".equals(method))) { - throw new IllegalArgumentException("Only PUT and POST are allowed."); + throw new IllegalArgumentException("Only PUT or POST are allowed."); } mMethod = method; } @@ -166,12 +166,12 @@ public class UrlRequest { } if (method != null) { - nativeSetMethod(mUrlRequestPeer, method); + nativeSetMethod(mUrlRequestAdapter, method); } if (mHeaders != null && !mHeaders.isEmpty()) { for (Entry entry : mHeaders.entrySet()) { - nativeAddHeader(mUrlRequestPeer, entry.getKey(), + nativeAddHeader(mUrlRequestAdapter, entry.getKey(), entry.getValue()); } } @@ -179,20 +179,20 @@ public class UrlRequest { if (mAdditionalHeaders != null) { for (Entry entry : mAdditionalHeaders.entrySet()) { - nativeAddHeader(mUrlRequestPeer, entry.getKey(), + nativeAddHeader(mUrlRequestAdapter, entry.getKey(), entry.getValue()); } } if (mUploadData != null && mUploadData.length > 0) { - nativeSetUploadData(mUrlRequestPeer, mUploadContentType, + nativeSetUploadData(mUrlRequestAdapter, mUploadContentType, mUploadData); } else if (mUploadChannel != null) { - nativeSetUploadChannel(mUrlRequestPeer, mUploadContentType, + nativeSetUploadChannel(mUrlRequestAdapter, mUploadContentType, mUploadContentLength); } - nativeStart(mUrlRequestPeer); + nativeStart(mUrlRequestAdapter); } } @@ -205,7 +205,7 @@ public class UrlRequest { mCanceled = true; if (!mRecycled) { - nativeCancel(mUrlRequestPeer); + nativeCancel(mUrlRequestAdapter); } } } @@ -233,12 +233,13 @@ public class UrlRequest { validateNotRecycled(); - int errorCode = nativeGetErrorCode(mUrlRequestPeer); + int errorCode = nativeGetErrorCode(mUrlRequestAdapter); switch (errorCode) { case UrlRequestError.SUCCESS: return null; case UrlRequestError.UNKNOWN: - return new IOException(nativeGetErrorString(mUrlRequestPeer)); + return new IOException( + nativeGetErrorString(mUrlRequestAdapter)); case UrlRequestError.MALFORMED_URL: return new MalformedURLException("Malformed URL: " + mUrl); case UrlRequestError.CONNECTION_TIMED_OUT: @@ -258,7 +259,7 @@ public class UrlRequest { } public int getHttpStatusCode() { - return nativeGetHttpStatusCode(mUrlRequestPeer); + return nativeGetHttpStatusCode(mUrlRequestAdapter); } /** @@ -275,14 +276,14 @@ public class UrlRequest { public String getHeader(String name) { validateHeadersAvailable(); - return nativeGetHeader(mUrlRequestPeer, name); + return nativeGetHeader(mUrlRequestAdapter, name); } // All response headers. public Map> getAllHeaders() { validateHeadersAvailable(); ResponseHeadersMap result = new ResponseHeadersMap(); - nativeGetAllHeaders(mUrlRequestPeer, result); + nativeGetAllHeaders(mUrlRequestAdapter, result); return result; } @@ -291,8 +292,8 @@ public class UrlRequest { */ @CalledByNative protected void onResponseStarted() { - mContentType = nativeGetContentType(mUrlRequestPeer); - mContentLength = nativeGetContentLength(mUrlRequestPeer); + mContentType = nativeGetContentType(mUrlRequestAdapter); + mContentLength = nativeGetContentLength(mUrlRequestAdapter); mHeadersAvailable = true; } @@ -339,8 +340,8 @@ public class UrlRequest { // Ignore } onRequestComplete(); - nativeDestroyRequestPeer(mUrlRequestPeer); - mUrlRequestPeer = 0; + nativeDestroyRequestAdapter(mUrlRequestAdapter); + mUrlRequestAdapter = 0; mRecycled = true; } } @@ -410,39 +411,39 @@ public class UrlRequest { return mUrl; } - private native long nativeCreateRequestPeer(long urlRequestContextPeer, - String url, int priority); + private native long nativeCreateRequestAdapter( + long urlRequestContextAdapter, String url, int priority); - private native void nativeAddHeader(long urlRequestPeer, String name, + private native void nativeAddHeader(long urlRequestAdapter, String name, String value); - private native void nativeSetMethod(long urlRequestPeer, String method); + private native void nativeSetMethod(long urlRequestAdapter, String method); - private native void nativeSetUploadData(long urlRequestPeer, + private native void nativeSetUploadData(long urlRequestAdapter, String contentType, byte[] content); - private native void nativeSetUploadChannel(long urlRequestPeer, + private native void nativeSetUploadChannel(long urlRequestAdapter, String contentType, long contentLength); - private native void nativeStart(long urlRequestPeer); + private native void nativeStart(long urlRequestAdapter); - private native void nativeCancel(long urlRequestPeer); + private native void nativeCancel(long urlRequestAdapter); - private native void nativeDestroyRequestPeer(long urlRequestPeer); + private native void nativeDestroyRequestAdapter(long urlRequestAdapter); - private native int nativeGetErrorCode(long urlRequestPeer); + private native int nativeGetErrorCode(long urlRequestAdapter); - private native int nativeGetHttpStatusCode(long urlRequestPeer); + private native int nativeGetHttpStatusCode(long urlRequestAdapter); - private native String nativeGetErrorString(long urlRequestPeer); + private native String nativeGetErrorString(long urlRequestAdapter); - private native String nativeGetContentType(long urlRequestPeer); + private native String nativeGetContentType(long urlRequestAdapter); - private native long nativeGetContentLength(long urlRequestPeer); + private native long nativeGetContentLength(long urlRequestAdapter); - private native String nativeGetHeader(long urlRequestPeer, String name); + private native String nativeGetHeader(long urlRequestAdapter, String name); - private native void nativeGetAllHeaders(long urlRequestPeer, + private native void nativeGetAllHeaders(long urlRequestAdapter, ResponseHeadersMap headers); // Explicit class to work around JNI-generator generics confusion. diff --git a/components/cronet/android/java/src/org/chromium/net/UrlRequestContext.java b/components/cronet/android/java/src/org/chromium/net/UrlRequestContext.java index d20f0a3..7faf184 100644 --- a/components/cronet/android/java/src/org/chromium/net/UrlRequestContext.java +++ b/components/cronet/android/java/src/org/chromium/net/UrlRequestContext.java @@ -23,9 +23,9 @@ public class UrlRequestContext { private static final String LOG_TAG = "ChromiumNetwork"; /** - * Native peer object, owned by UrlRequestContext. + * Native adapter object, owned by UrlRequestContext. */ - private long mUrlRequestContextPeer; + private long mUrlRequestContextAdapter; private final ConditionVariable mStarted = new ConditionVariable(); @@ -35,10 +35,10 @@ public class UrlRequestContext { */ protected UrlRequestContext(Context context, String userAgent, String config) { - mUrlRequestContextPeer = nativeCreateRequestContextPeer(context, + mUrlRequestContextAdapter = nativeCreateRequestContextAdapter(context, userAgent, getLoggingLevel(), config); - if (mUrlRequestContextPeer == 0) - throw new NullPointerException("Context Peer creation failed"); + if (mUrlRequestContextAdapter == 0) + throw new NullPointerException("Context Adapter creation failed"); // TODO(mef): Revisit the need of block here. mStarted.block(2000); @@ -75,7 +75,7 @@ public class UrlRequestContext { * If actively logging the call is ignored. */ public void startNetLogToFile(String fileName) { - nativeStartNetLogToFile(mUrlRequestContextPeer, fileName); + nativeStartNetLogToFile(mUrlRequestContextAdapter, fileName); } /** @@ -83,7 +83,7 @@ public class UrlRequestContext { * not in progress this call is ignored. */ public void stopNetLog() { - nativeStopNetLog(mUrlRequestContextPeer); + nativeStopNetLog(mUrlRequestContextAdapter); } @CalledByNative @@ -95,12 +95,12 @@ public class UrlRequestContext { @Override protected void finalize() throws Throwable { - nativeReleaseRequestContextPeer(mUrlRequestContextPeer); + nativeReleaseRequestContextAdapter(mUrlRequestContextAdapter); super.finalize(); } - protected long getUrlRequestContextPeer() { - return mUrlRequestContextPeer; + protected long getUrlRequestContextAdapter() { + return mUrlRequestContextAdapter; } /** @@ -119,20 +119,20 @@ public class UrlRequestContext { return loggingLevel; } - // Returns an instance URLRequestContextPeer to be stored in - // mUrlRequestContextPeer. - private native long nativeCreateRequestContextPeer(Context context, + // Returns an instance URLRequestContextAdapter to be stored in + // mUrlRequestContextAdapter. + private native long nativeCreateRequestContextAdapter(Context context, String userAgent, int loggingLevel, String config); - private native void nativeReleaseRequestContextPeer( - long urlRequestContextPeer); + private native void nativeReleaseRequestContextAdapter( + long urlRequestContextAdapter); private native void nativeInitializeStatistics(); private native String nativeGetStatisticsJSON(String filter); - private native void nativeStartNetLogToFile(long urlRequestContextPeer, + private native void nativeStartNetLogToFile(long urlRequestContextAdapter, String fileName); - private native void nativeStopNetLog(long urlRequestContextPeer); + private native void nativeStopNetLog(long urlRequestContextAdapter); } diff --git a/components/cronet/android/org_chromium_net_UrlRequest.cc b/components/cronet/android/org_chromium_net_UrlRequest.cc index 0f9ea64..e38f93f 100644 --- a/components/cronet/android/org_chromium_net_UrlRequest.cc +++ b/components/cronet/android/org_chromium_net_UrlRequest.cc @@ -7,8 +7,8 @@ #include "base/android/jni_android.h" #include "base/android/jni_string.h" #include "base/macros.h" -#include "components/cronet/android/url_request_context_peer.h" -#include "components/cronet/android/url_request_peer.h" +#include "components/cronet/android/url_request_adapter.h" +#include "components/cronet/android/url_request_context_adapter.h" #include "jni/UrlRequest_jni.h" #include "net/base/net_errors.h" #include "net/base/request_priority.h" @@ -37,7 +37,7 @@ net::RequestPriority ConvertRequestPriority(jint request_priority) { } void SetPostContentType(JNIEnv* env, - URLRequestPeer* request, + URLRequestAdapter* request, jstring content_type) { DCHECK(request != NULL); @@ -53,20 +53,20 @@ void SetPostContentType(JNIEnv* env, request->AddHeader(content_type_header, content_type_string); } -// A delegate of URLRequestPeer that delivers callbacks to the Java layer. -class JniURLRequestPeerDelegate - : public URLRequestPeer::URLRequestPeerDelegate { +// A delegate of URLRequestAdapter that delivers callbacks to the Java layer. +class JniURLRequestAdapterDelegate + : public URLRequestAdapter::URLRequestAdapterDelegate { public: - JniURLRequestPeerDelegate(JNIEnv* env, jobject owner) { + JniURLRequestAdapterDelegate(JNIEnv* env, jobject owner) { owner_ = env->NewGlobalRef(owner); } - virtual void OnResponseStarted(URLRequestPeer* request) OVERRIDE { + virtual void OnResponseStarted(URLRequestAdapter* request) OVERRIDE { JNIEnv* env = base::android::AttachCurrentThread(); cronet::Java_UrlRequest_onResponseStarted(env, owner_); } - virtual void OnBytesRead(URLRequestPeer* request) OVERRIDE { + virtual void OnBytesRead(URLRequestAdapter* request) OVERRIDE { int bytes_read = request->bytes_read(); if (bytes_read != 0) { JNIEnv* env = base::android::AttachCurrentThread(); @@ -76,7 +76,7 @@ class JniURLRequestPeerDelegate } } - virtual void OnRequestFinished(URLRequestPeer* request) OVERRIDE { + virtual void OnRequestFinished(URLRequestAdapter* request) OVERRIDE { JNIEnv* env = base::android::AttachCurrentThread(); cronet::Java_UrlRequest_finish(env, owner_); } @@ -92,7 +92,7 @@ class JniURLRequestPeerDelegate } protected: - virtual ~JniURLRequestPeerDelegate() { + virtual ~JniURLRequestAdapterDelegate() { JNIEnv* env = base::android::AttachCurrentThread(); env->DeleteGlobalRef(owner_); } @@ -100,7 +100,7 @@ class JniURLRequestPeerDelegate private: jobject owner_; - DISALLOW_COPY_AND_ASSIGN(JniURLRequestPeerDelegate); + DISALLOW_COPY_AND_ASSIGN(JniURLRequestAdapterDelegate); }; } // namespace @@ -108,13 +108,13 @@ class JniURLRequestPeerDelegate // Explicitly register static JNI functions. bool UrlRequestRegisterJni(JNIEnv* env) { return RegisterNativesImpl(env); } -static jlong CreateRequestPeer(JNIEnv* env, - jobject object, - jlong urlRequestContextPeer, - jstring url_string, - jint priority) { - URLRequestContextPeer* context = - reinterpret_cast(urlRequestContextPeer); +static jlong CreateRequestAdapter(JNIEnv* env, + jobject object, + jlong urlRequestContextAdapter, + jstring url_string, + jint priority) { + URLRequestContextAdapter* context = + reinterpret_cast(urlRequestContextAdapter); DCHECK(context != NULL); const char* url_utf8 = env->GetStringUTFChars(url_string, NULL); @@ -125,22 +125,23 @@ static jlong CreateRequestPeer(JNIEnv* env, env->ReleaseStringUTFChars(url_string, url_utf8); - URLRequestPeer* peer = - new URLRequestPeer(context, - new JniURLRequestPeerDelegate(env, object), - url, - ConvertRequestPriority(priority)); + URLRequestAdapter* adapter = + new URLRequestAdapter(context, + new JniURLRequestAdapterDelegate(env, object), + url, + ConvertRequestPriority(priority)); - return reinterpret_cast(peer); + return reinterpret_cast(adapter); } // synchronized static void AddHeader(JNIEnv* env, jobject object, - jlong urlRequestPeer, + jlong urlRequestAdapter, jstring name, jstring value) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); DCHECK(request); std::string name_string(base::android::ConvertJavaStringToUTF8(env, name)); @@ -151,9 +152,10 @@ static void AddHeader(JNIEnv* env, static void SetMethod(JNIEnv* env, jobject object, - jlong urlRequestPeer, + jlong urlRequestAdapter, jstring method) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); DCHECK(request); std::string method_string( @@ -164,10 +166,11 @@ static void SetMethod(JNIEnv* env, static void SetUploadData(JNIEnv* env, jobject object, - jlong urlRequestPeer, + jlong urlRequestAdapter, jstring content_type, jbyteArray content) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); SetPostContentType(env, request, content_type); if (content != NULL) { @@ -183,10 +186,11 @@ static void SetUploadData(JNIEnv* env, static void SetUploadChannel(JNIEnv* env, jobject object, - jlong urlRequestPeer, + jlong urlRequestAdapter, jstring content_type, jlong content_length) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); SetPostContentType(env, request, content_type); request->SetUploadChannel(env, content_length); @@ -194,33 +198,37 @@ static void SetUploadChannel(JNIEnv* env, /* synchronized */ -static void Start(JNIEnv* env, jobject object, jlong urlRequestPeer) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); +static void Start(JNIEnv* env, jobject object, jlong urlRequestAdapter) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); if (request != NULL) { request->Start(); } } /* synchronized */ -static void DestroyRequestPeer(JNIEnv* env, - jobject object, - jlong urlRequestPeer) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); +static void DestroyRequestAdapter(JNIEnv* env, + jobject object, + jlong urlRequestAdapter) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); if (request != NULL) { request->Destroy(); } } /* synchronized */ -static void Cancel(JNIEnv* env, jobject object, jlong urlRequestPeer) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); +static void Cancel(JNIEnv* env, jobject object, jlong urlRequestAdapter) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); if (request != NULL) { request->Cancel(); } } -static jint GetErrorCode(JNIEnv* env, jobject object, jlong urlRequestPeer) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); +static jint GetErrorCode(JNIEnv* env, jobject object, jlong urlRequestAdapter) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); int error_code = request->error_code(); switch (error_code) { // TODO(mef): Investigate returning success on positive values, too, as @@ -256,8 +264,9 @@ static jint GetErrorCode(JNIEnv* env, jobject object, jlong urlRequestPeer) { static jstring GetErrorString(JNIEnv* env, jobject object, - jlong urlRequestPeer) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + jlong urlRequestAdapter) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); int error_code = request->error_code(); char buffer[200]; std::string error_string = net::ErrorToString(error_code); @@ -271,15 +280,17 @@ static jstring GetErrorString(JNIEnv* env, static jint GetHttpStatusCode(JNIEnv* env, jobject object, - jlong urlRequestPeer) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + jlong urlRequestAdapter) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); return request->http_status_code(); } static jstring GetContentType(JNIEnv* env, jobject object, - jlong urlRequestPeer) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + jlong urlRequestAdapter) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); if (request == NULL) { return NULL; } @@ -293,17 +304,21 @@ static jstring GetContentType(JNIEnv* env, static jlong GetContentLength(JNIEnv* env, jobject object, - jlong urlRequestPeer) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + jlong urlRequestAdapter) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); if (request == NULL) { return 0; } return request->content_length(); } -static jstring GetHeader( - JNIEnv* env, jobject object, jlong urlRequestPeer, jstring name) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); +static jstring GetHeader(JNIEnv* env, + jobject object, + jlong urlRequestAdapter, + jstring name) { + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); if (request == NULL) { return NULL; } @@ -319,9 +334,10 @@ static jstring GetHeader( static void GetAllHeaders(JNIEnv* env, jobject object, - jlong urlRequestPeer, + jlong urlRequestAdapter, jobject headersMap) { - URLRequestPeer* request = reinterpret_cast(urlRequestPeer); + URLRequestAdapter* request = + reinterpret_cast(urlRequestAdapter); if (request == NULL) return; diff --git a/components/cronet/android/org_chromium_net_UrlRequestContext.cc b/components/cronet/android/org_chromium_net_UrlRequestContext.cc index b378c28..ae6cd2a 100644 --- a/components/cronet/android/org_chromium_net_UrlRequestContext.cc +++ b/components/cronet/android/org_chromium_net_UrlRequestContext.cc @@ -14,23 +14,24 @@ #include "base/metrics/statistics_recorder.h" #include "base/values.h" #include "components/cronet/android/org_chromium_net_UrlRequest.h" -#include "components/cronet/android/url_request_context_peer.h" -#include "components/cronet/android/url_request_peer.h" +#include "components/cronet/android/url_request_adapter.h" +#include "components/cronet/android/url_request_context_adapter.h" #include "components/cronet/url_request_context_config.h" #include "jni/UrlRequestContext_jni.h" namespace { -// Delegate of URLRequestContextPeer that delivers callbacks to the Java layer. -class JniURLRequestContextPeerDelegate - : public cronet::URLRequestContextPeer::URLRequestContextPeerDelegate { +// Delegate of URLRequestContextAdapter that delivers callbacks to the Java +// layer. +class JniURLRequestContextAdapterDelegate + : public cronet::URLRequestContextAdapter:: + URLRequestContextAdapterDelegate { public: - JniURLRequestContextPeerDelegate(JNIEnv* env, jobject owner) - : owner_(env->NewGlobalRef(owner)) { - } + JniURLRequestContextAdapterDelegate(JNIEnv* env, jobject owner) + : owner_(env->NewGlobalRef(owner)) {} virtual void OnContextInitialized( - cronet::URLRequestContextPeer* context) OVERRIDE { + cronet::URLRequestContextAdapter* context) OVERRIDE { JNIEnv* env = base::android::AttachCurrentThread(); cronet::Java_UrlRequestContext_initNetworkThread(env, owner_); // TODO(dplotnikov): figure out if we need to detach from the thread. @@ -38,7 +39,7 @@ class JniURLRequestContextPeerDelegate } protected: - virtual ~JniURLRequestContextPeerDelegate() { + virtual ~JniURLRequestContextAdapterDelegate() { JNIEnv* env = base::android::AttachCurrentThread(); env->DeleteGlobalRef(owner_); } @@ -57,12 +58,12 @@ bool UrlRequestContextRegisterJni(JNIEnv* env) { } // Sets global user-agent to be used for all subsequent requests. -static jlong CreateRequestContextPeer(JNIEnv* env, - jobject object, - jobject context, - jstring user_agent, - jint log_level, - jstring config) { +static jlong CreateRequestContextAdapter(JNIEnv* env, + jobject object, + jobject context, + jstring user_agent, + jint log_level, + jstring config) { std::string user_agent_string = base::android::ConvertJavaStringToUTF8(env, user_agent); @@ -92,24 +93,25 @@ static jlong CreateRequestContextPeer(JNIEnv* env, logging::SetMinLogLevel(static_cast(log_level)); // TODO(dplotnikov): set application context. - URLRequestContextPeer* peer = new URLRequestContextPeer( - new JniURLRequestContextPeerDelegate(env, object), user_agent_string); - peer->AddRef(); // Hold onto this ref-counted object. - peer->Initialize(context_config.Pass()); - return reinterpret_cast(peer); + URLRequestContextAdapter* adapter = new URLRequestContextAdapter( + new JniURLRequestContextAdapterDelegate(env, object), user_agent_string); + adapter->AddRef(); // Hold onto this ref-counted object. + adapter->Initialize(context_config.Pass()); + return reinterpret_cast(adapter); } // Releases native objects. -static void ReleaseRequestContextPeer(JNIEnv* env, - jobject object, - jlong urlRequestContextPeer) { - URLRequestContextPeer* peer = - reinterpret_cast(urlRequestContextPeer); +static void ReleaseRequestContextAdapter(JNIEnv* env, + jobject object, + jlong urlRequestContextAdapter) { + URLRequestContextAdapter* adapter = + reinterpret_cast(urlRequestContextAdapter); // TODO(mef): Revisit this from thread safety point of view: Can we delete a // thread while running on that thread? - // URLRequestContextPeer is a ref-counted object, and may have pending tasks, + // URLRequestContextAdapter is a ref-counted object, and may have pending + // tasks, // so we need to release it instead of deleting here. - peer->Release(); + adapter->Release(); } // Starts recording statistics. @@ -128,21 +130,21 @@ static jstring GetStatisticsJSON(JNIEnv* env, jobject jcaller, jstring filter) { // Starts recording NetLog into file with |fileName|. static void StartNetLogToFile(JNIEnv* env, jobject jcaller, - jlong urlRequestContextPeer, + jlong urlRequestContextAdapter, jstring fileName) { - URLRequestContextPeer* peer = - reinterpret_cast(urlRequestContextPeer); + URLRequestContextAdapter* adapter = + reinterpret_cast(urlRequestContextAdapter); std::string file_name = base::android::ConvertJavaStringToUTF8(env, fileName); - peer->StartNetLogToFile(file_name); + adapter->StartNetLogToFile(file_name); } // Stops recording NetLog. static void StopNetLog(JNIEnv* env, jobject jcaller, - jlong urlRequestContextPeer) { - URLRequestContextPeer* peer = - reinterpret_cast(urlRequestContextPeer); - peer->StopNetLog(); + jlong urlRequestContextAdapter) { + URLRequestContextAdapter* adapter = + reinterpret_cast(urlRequestContextAdapter); + adapter->StopNetLog(); } } // namespace cronet diff --git a/components/cronet/android/url_request_adapter.cc b/components/cronet/android/url_request_adapter.cc new file mode 100644 index 0000000..8ab88a2 --- /dev/null +++ b/components/cronet/android/url_request_adapter.cc @@ -0,0 +1,265 @@ +// Copyright 2014 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. + +#include "url_request_adapter.h" + +#include "base/strings/string_number_conversions.h" +#include "components/cronet/android/url_request_context_adapter.h" +#include "components/cronet/android/wrapped_channel_upload_element_reader.h" +#include "net/base/load_flags.h" +#include "net/base/upload_bytes_element_reader.h" +#include "net/http/http_status_code.h" + +namespace cronet { + +static const size_t kBufferSizeIncrement = 8192; + +URLRequestAdapter::URLRequestAdapter(URLRequestContextAdapter* context, + URLRequestAdapterDelegate* delegate, + GURL url, + net::RequestPriority priority) + : method_("GET"), + url_request_(NULL), + read_buffer_(new net::GrowableIOBuffer()), + bytes_read_(0), + total_bytes_read_(0), + error_code_(0), + http_status_code_(0), + canceled_(false), + expected_size_(0) { + context_ = context; + delegate_ = delegate; + url_ = url; + priority_ = priority; +} + +URLRequestAdapter::~URLRequestAdapter() { + CHECK(url_request_ == NULL); +} + +void URLRequestAdapter::SetMethod(const std::string& method) { + method_ = method; +} + +void URLRequestAdapter::AddHeader(const std::string& name, + const std::string& value) { + headers_.SetHeader(name, value); +} + +void URLRequestAdapter::SetUploadContent(const char* bytes, int bytes_len) { + std::vector data(bytes, bytes + bytes_len); + scoped_ptr reader( + new net::UploadOwnedBytesElementReader(&data)); + upload_data_stream_.reset( + net::UploadDataStream::CreateWithReader(reader.Pass(), 0)); +} + +void URLRequestAdapter::SetUploadChannel(JNIEnv* env, int64 content_length) { + scoped_ptr reader( + new WrappedChannelElementReader(delegate_, content_length)); + upload_data_stream_.reset( + net::UploadDataStream::CreateWithReader(reader.Pass(), 0)); +} + +std::string URLRequestAdapter::GetHeader(const std::string& name) const { + std::string value; + if (url_request_ != NULL) { + url_request_->GetResponseHeaderByName(name, &value); + } + return value; +} + +net::HttpResponseHeaders* URLRequestAdapter::GetResponseHeaders() const { + if (url_request_ == NULL) { + return NULL; + } + return url_request_->response_headers(); +} + +void URLRequestAdapter::Start() { + context_->GetNetworkTaskRunner()->PostTask( + FROM_HERE, + base::Bind(&URLRequestAdapter::OnInitiateConnection, + base::Unretained(this))); +} + +void URLRequestAdapter::OnInitiateConnection() { + if (canceled_) { + return; + } + + VLOG(1) << "Starting chromium request: " + << url_.possibly_invalid_spec().c_str() + << " priority: " << RequestPriorityToString(priority_); + url_request_ = new net::URLRequest( + url_, net::DEFAULT_PRIORITY, this, context_->GetURLRequestContext()); + url_request_->SetLoadFlags(net::LOAD_DISABLE_CACHE | + net::LOAD_DO_NOT_SAVE_COOKIES | + net::LOAD_DO_NOT_SEND_COOKIES); + url_request_->set_method(method_); + url_request_->SetExtraRequestHeaders(headers_); + if (!headers_.HasHeader(net::HttpRequestHeaders::kUserAgent)) { + std::string user_agent; + user_agent = context_->GetUserAgent(url_); + url_request_->SetExtraRequestHeaderByName( + net::HttpRequestHeaders::kUserAgent, user_agent, true /* override */); + } + + if (upload_data_stream_) + url_request_->set_upload(upload_data_stream_.Pass()); + + url_request_->SetPriority(priority_); + + url_request_->Start(); +} + +void URLRequestAdapter::Cancel() { + if (canceled_) { + return; + } + + canceled_ = true; + + context_->GetNetworkTaskRunner()->PostTask( + FROM_HERE, + base::Bind(&URLRequestAdapter::OnCancelRequest, base::Unretained(this))); +} + +void URLRequestAdapter::OnCancelRequest() { + VLOG(1) << "Canceling chromium request: " << url_.possibly_invalid_spec(); + + if (url_request_ != NULL) { + url_request_->Cancel(); + } + + OnRequestCanceled(); +} + +void URLRequestAdapter::Destroy() { + context_->GetNetworkTaskRunner()->PostTask( + FROM_HERE, base::Bind(&URLRequestAdapter::OnDestroyRequest, this)); +} + +// static +void URLRequestAdapter::OnDestroyRequest(URLRequestAdapter* self) { + VLOG(1) << "Destroying chromium request: " + << self->url_.possibly_invalid_spec(); + delete self; +} + +void URLRequestAdapter::OnResponseStarted(net::URLRequest* request) { + if (request->status().status() != net::URLRequestStatus::SUCCESS) { + OnRequestFailed(); + return; + } + + http_status_code_ = request->GetResponseCode(); + VLOG(1) << "Response started with status: " << http_status_code_; + + request->GetResponseHeaderByName("Content-Type", &content_type_); + expected_size_ = request->GetExpectedContentSize(); + delegate_->OnResponseStarted(this); + + Read(); +} + +// Reads all available data or starts an asynchronous read. +void URLRequestAdapter::Read() { + while (true) { + if (read_buffer_->RemainingCapacity() == 0) { + int new_capacity = read_buffer_->capacity() + kBufferSizeIncrement; + read_buffer_->SetCapacity(new_capacity); + } + + int bytes_read; + if (url_request_->Read( + read_buffer_, read_buffer_->RemainingCapacity(), &bytes_read)) { + if (bytes_read == 0) { + OnRequestSucceeded(); + break; + } + + VLOG(1) << "Synchronously read: " << bytes_read << " bytes"; + OnBytesRead(bytes_read); + } else if (url_request_->status().status() == + net::URLRequestStatus::IO_PENDING) { + if (bytes_read_ != 0) { + VLOG(1) << "Flushing buffer: " << bytes_read_ << " bytes"; + + delegate_->OnBytesRead(this); + read_buffer_->set_offset(0); + bytes_read_ = 0; + } + VLOG(1) << "Started async read"; + break; + } else { + OnRequestFailed(); + break; + } + } +} + +void URLRequestAdapter::OnReadCompleted(net::URLRequest* request, + int bytes_read) { + VLOG(1) << "Asynchronously read: " << bytes_read << " bytes"; + if (bytes_read < 0) { + OnRequestFailed(); + return; + } else if (bytes_read == 0) { + OnRequestSucceeded(); + return; + } + + OnBytesRead(bytes_read); + Read(); +} + +void URLRequestAdapter::OnBytesRead(int bytes_read) { + read_buffer_->set_offset(read_buffer_->offset() + bytes_read); + bytes_read_ += bytes_read; + total_bytes_read_ += bytes_read; +} + +void URLRequestAdapter::OnRequestSucceeded() { + if (canceled_) { + return; + } + + VLOG(1) << "Request completed with HTTP status: " << http_status_code_ + << ". Total bytes read: " << total_bytes_read_; + + OnRequestCompleted(); +} + +void URLRequestAdapter::OnRequestFailed() { + if (canceled_) { + return; + } + + error_code_ = url_request_->status().error(); + VLOG(1) << "Request failed with status: " << url_request_->status().status() + << " and error: " << net::ErrorToString(error_code_); + OnRequestCompleted(); +} + +void URLRequestAdapter::OnRequestCanceled() { + OnRequestCompleted(); +} + +void URLRequestAdapter::OnRequestCompleted() { + VLOG(1) << "Completed: " << url_.possibly_invalid_spec(); + if (url_request_ != NULL) { + delete url_request_; + url_request_ = NULL; + } + + delegate_->OnBytesRead(this); + delegate_->OnRequestFinished(this); +} + +unsigned char* URLRequestAdapter::Data() const { + return reinterpret_cast(read_buffer_->StartOfBuffer()); +} + +} // namespace cronet diff --git a/components/cronet/android/url_request_adapter.h b/components/cronet/android/url_request_adapter.h new file mode 100644 index 0000000..482f175 --- /dev/null +++ b/components/cronet/android/url_request_adapter.h @@ -0,0 +1,145 @@ +// Copyright 2014 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 COMPONENTS_CRONET_ANDROID_URL_REQUEST_ADAPTER_H_ +#define COMPONENTS_CRONET_ANDROID_URL_REQUEST_ADAPTER_H_ + +#include + +#include + +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "net/base/request_priority.h" +#include "net/http/http_request_headers.h" +#include "net/url_request/url_request.h" + +namespace net { +class GrowableIOBuffer; +class HttpResponseHeaders; +class UploadDataStream; +} // namespace net + +namespace cronet { + +class URLRequestContextAdapter; + +// An adapter from the JNI |UrlRequest| object and the Chromium |URLRequest| +// object. +class URLRequestAdapter : public net::URLRequest::Delegate { + public: + // The delegate which is called when the request finishes. + class URLRequestAdapterDelegate + : public base::RefCountedThreadSafe { + public: + virtual void OnResponseStarted(URLRequestAdapter* request) = 0; + virtual void OnBytesRead(URLRequestAdapter* request) = 0; + virtual void OnRequestFinished(URLRequestAdapter* request) = 0; + virtual int ReadFromUploadChannel(net::IOBuffer* buf, int buf_length) = 0; + + protected: + friend class base::RefCountedThreadSafe; + virtual ~URLRequestAdapterDelegate() {} + }; + + URLRequestAdapter(URLRequestContextAdapter* context, + URLRequestAdapterDelegate* delegate, + GURL url, + net::RequestPriority priority); + virtual ~URLRequestAdapter(); + + // 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 or PUT request + void SetUploadContent(const char* bytes, int bytes_len); + + // Sets the request to streaming upload. + void SetUploadChannel(JNIEnv* env, int64 content_length); + + // 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 value of the specified response header. + std::string GetHeader(const std::string& name) const; + + // Get all response headers, as a HttpResponseHeaders object. + net::HttpResponseHeaders* GetResponseHeaders() const; + + // 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: + static void OnDestroyRequest(URLRequestAdapter* self); + + 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(); + + URLRequestContextAdapter* context_; + scoped_refptr delegate_; + GURL url_; + net::RequestPriority priority_; + std::string method_; + net::HttpRequestHeaders headers_; + net::URLRequest* url_request_; + scoped_ptr upload_data_stream_; + scoped_refptr 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_; + + DISALLOW_COPY_AND_ASSIGN(URLRequestAdapter); +}; + +} // namespace cronet + +#endif // COMPONENTS_CRONET_ANDROID_URL_REQUEST_ADAPTER_H_ diff --git a/components/cronet/android/url_request_context_adapter.cc b/components/cronet/android/url_request_context_adapter.cc new file mode 100644 index 0000000..0feb0f1 --- /dev/null +++ b/components/cronet/android/url_request_context_adapter.cc @@ -0,0 +1,209 @@ +// Copyright 2014 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. + +#include "components/cronet/android/url_request_context_adapter.h" + +#include "base/bind.h" +#include "base/file_util.h" +#include "base/single_thread_task_runner.h" +#include "components/cronet/url_request_context_config.h" +#include "net/base/net_errors.h" +#include "net/base/net_log_logger.h" +#include "net/cert/cert_verifier.h" +#include "net/http/http_auth_handler_factory.h" +#include "net/http/http_network_layer.h" +#include "net/http/http_server_properties_impl.h" +#include "net/proxy/proxy_config_service_fixed.h" +#include "net/proxy/proxy_service.h" +#include "net/ssl/ssl_config_service_defaults.h" +#include "net/url_request/static_http_user_agent_settings.h" +#include "net/url_request/url_request_context_builder.h" +#include "net/url_request/url_request_context_storage.h" +#include "net/url_request/url_request_job_factory_impl.h" + +namespace { + +class BasicNetworkDelegate : public net::NetworkDelegate { + public: + BasicNetworkDelegate() {} + virtual ~BasicNetworkDelegate() {} + + private: + // net::NetworkDelegate implementation. + virtual int OnBeforeURLRequest(net::URLRequest* request, + const net::CompletionCallback& callback, + GURL* new_url) OVERRIDE { + return net::OK; + } + + virtual int OnBeforeSendHeaders(net::URLRequest* request, + const net::CompletionCallback& callback, + net::HttpRequestHeaders* headers) OVERRIDE { + return net::OK; + } + + virtual void OnSendHeaders(net::URLRequest* request, + const net::HttpRequestHeaders& headers) OVERRIDE {} + + virtual int OnHeadersReceived( + net::URLRequest* request, + const net::CompletionCallback& callback, + const net::HttpResponseHeaders* original_response_headers, + scoped_refptr* _response_headers, + GURL* allowed_unsafe_redirect_url) OVERRIDE { + return net::OK; + } + + virtual void OnBeforeRedirect(net::URLRequest* request, + const GURL& new_location) OVERRIDE {} + + virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE {} + + virtual void OnRawBytesRead(const net::URLRequest& request, + int bytes_read) OVERRIDE {} + + virtual void OnCompleted(net::URLRequest* request, bool started) OVERRIDE {} + + virtual void OnURLRequestDestroyed(net::URLRequest* request) OVERRIDE {} + + virtual void OnPACScriptError(int line_number, + const base::string16& error) OVERRIDE {} + + virtual NetworkDelegate::AuthRequiredResponse OnAuthRequired( + net::URLRequest* request, + const net::AuthChallengeInfo& auth_info, + const AuthCallback& callback, + net::AuthCredentials* credentials) OVERRIDE { + return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; + } + + virtual bool OnCanGetCookies(const net::URLRequest& request, + const net::CookieList& cookie_list) OVERRIDE { + return false; + } + + virtual bool OnCanSetCookie(const net::URLRequest& request, + const std::string& cookie_line, + net::CookieOptions* options) OVERRIDE { + return false; + } + + virtual bool OnCanAccessFile(const net::URLRequest& request, + const base::FilePath& path) const OVERRIDE { + return false; + } + + virtual bool OnCanThrottleRequest( + const net::URLRequest& request) const OVERRIDE { + return false; + } + + virtual int OnBeforeSocketStreamConnect( + net::SocketStream* stream, + const net::CompletionCallback& callback) OVERRIDE { + return net::OK; + } + + DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate); +}; + +} // namespace + +namespace cronet { + +URLRequestContextAdapter::URLRequestContextAdapter( + URLRequestContextAdapterDelegate* delegate, + std::string user_agent) { + delegate_ = delegate; + user_agent_ = user_agent; +} + +void URLRequestContextAdapter::Initialize( + scoped_ptr config) { + network_thread_ = new base::Thread("network"); + base::Thread::Options options; + options.message_loop_type = base::MessageLoop::TYPE_IO; + network_thread_->StartWithOptions(options); + + GetNetworkTaskRunner()->PostTask( + FROM_HERE, + base::Bind(&URLRequestContextAdapter::InitializeURLRequestContext, + this, + Passed(&config))); +} + +void URLRequestContextAdapter::InitializeURLRequestContext( + scoped_ptr config) { + // TODO(mmenke): Add method to have the builder enable SPDY. + net::URLRequestContextBuilder context_builder; + context_builder.set_network_delegate(new BasicNetworkDelegate()); + context_builder.set_proxy_config_service( + new net::ProxyConfigServiceFixed(net::ProxyConfig())); + config->ConfigureURLRequestContextBuilder(&context_builder); + + context_.reset(context_builder.Build()); + + if (VLOG_IS_ON(2)) { + net_log_observer_.reset(new NetLogObserver()); + context_->net_log()->AddThreadSafeObserver(net_log_observer_.get(), + net::NetLog::LOG_ALL_BUT_BYTES); + } + + delegate_->OnContextInitialized(this); +} + +URLRequestContextAdapter::~URLRequestContextAdapter() { + if (net_log_observer_) { + context_->net_log()->RemoveThreadSafeObserver(net_log_observer_.get()); + net_log_observer_.reset(); + } + StopNetLog(); + // TODO(mef): Ensure that |network_thread_| is destroyed properly. +} + +const std::string& URLRequestContextAdapter::GetUserAgent( + const GURL& url) const { + return user_agent_; +} + +net::URLRequestContext* URLRequestContextAdapter::GetURLRequestContext() { + if (!context_) { + LOG(ERROR) << "URLRequestContext is not set up"; + } + return context_.get(); +} + +scoped_refptr +URLRequestContextAdapter::GetNetworkTaskRunner() const { + return network_thread_->message_loop_proxy(); +} + +void URLRequestContextAdapter::StartNetLogToFile(const std::string& file_name) { + // Do nothing if already logging to a file. + if (net_log_logger_) + return; + + base::FilePath file_path(file_name); + FILE* file = base::OpenFile(file_path, "w"); + if (!file) + return; + + scoped_ptr constants(net::NetLogLogger::GetConstants()); + net_log_logger_.reset(new net::NetLogLogger(file, *constants)); + net_log_logger_->StartObserving(context_->net_log()); +} + +void URLRequestContextAdapter::StopNetLog() { + if (net_log_logger_) { + net_log_logger_->StopObserving(); + net_log_logger_.reset(); + } +} + +void NetLogObserver::OnAddEntry(const net::NetLog::Entry& entry) { + VLOG(2) << "Net log entry: type=" << entry.type() + << ", source=" << entry.source().type << ", phase=" << entry.phase(); +} + +} // namespace cronet diff --git a/components/cronet/android/url_request_context_adapter.h b/components/cronet/android/url_request_context_adapter.h new file mode 100644 index 0000000..ef4fcd6 --- /dev/null +++ b/components/cronet/android/url_request_context_adapter.h @@ -0,0 +1,88 @@ +// Copyright 2014 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 COMPONENTS_CRONET_ANDROID_URL_REQUEST_CONTEXT_ADAPTER_H_ +#define COMPONENTS_CRONET_ANDROID_URL_REQUEST_CONTEXT_ADAPTER_H_ + +#include + +#include "base/compiler_specific.h" +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "base/threading/thread.h" +#include "net/base/net_log.h" +#include "net/base/network_change_notifier.h" +#include "net/url_request/url_request_context.h" +#include "net/url_request/url_request_context_getter.h" + +namespace net { +class NetLogLogger; +} // namespace net + +namespace cronet { + +struct URLRequestContextConfig; + +// Implementation of the Chromium NetLog observer interface. +class NetLogObserver : public net::NetLog::ThreadSafeObserver { + public: + explicit NetLogObserver() {} + + virtual ~NetLogObserver() {} + + virtual void OnAddEntry(const net::NetLog::Entry& entry) OVERRIDE; + + private: + DISALLOW_COPY_AND_ASSIGN(NetLogObserver); +}; + +// Fully configured |URLRequestContext|. +class URLRequestContextAdapter : public net::URLRequestContextGetter { + public: + class URLRequestContextAdapterDelegate + : public base::RefCountedThreadSafe { + public: + virtual void OnContextInitialized(URLRequestContextAdapter* context) = 0; + + protected: + friend class base::RefCountedThreadSafe; + + virtual ~URLRequestContextAdapterDelegate() {} + }; + + URLRequestContextAdapter(URLRequestContextAdapterDelegate* delegate, + std::string user_agent); + void Initialize(scoped_ptr config); + + const std::string& GetUserAgent(const GURL& url) const; + + // net::URLRequestContextGetter implementation: + virtual net::URLRequestContext* GetURLRequestContext() OVERRIDE; + virtual scoped_refptr GetNetworkTaskRunner() + const OVERRIDE; + + void StartNetLogToFile(const std::string& file_name); + void StopNetLog(); + + private: + scoped_refptr delegate_; + scoped_ptr context_; + std::string user_agent_; + base::Thread* network_thread_; + scoped_ptr network_change_notifier_; + scoped_ptr net_log_observer_; + scoped_ptr net_log_logger_; + + virtual ~URLRequestContextAdapter(); + + // Initializes |context_| on the IO thread. + void InitializeURLRequestContext(scoped_ptr config); + + DISALLOW_COPY_AND_ASSIGN(URLRequestContextAdapter); +}; + +} // namespace cronet + +#endif // COMPONENTS_CRONET_ANDROID_URL_REQUEST_CONTEXT_ADAPTER_H_ diff --git a/components/cronet/android/url_request_context_peer.cc b/components/cronet/android/url_request_context_peer.cc deleted file mode 100644 index 84b369e..0000000 --- a/components/cronet/android/url_request_context_peer.cc +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright 2014 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. - -#include "components/cronet/android/url_request_context_peer.h" - -#include "base/bind.h" -#include "base/file_util.h" -#include "base/single_thread_task_runner.h" -#include "components/cronet/url_request_context_config.h" -#include "net/base/net_errors.h" -#include "net/base/net_log_logger.h" -#include "net/cert/cert_verifier.h" -#include "net/http/http_auth_handler_factory.h" -#include "net/http/http_network_layer.h" -#include "net/http/http_server_properties_impl.h" -#include "net/proxy/proxy_config_service_fixed.h" -#include "net/proxy/proxy_service.h" -#include "net/ssl/ssl_config_service_defaults.h" -#include "net/url_request/static_http_user_agent_settings.h" -#include "net/url_request/url_request_context_builder.h" -#include "net/url_request/url_request_context_storage.h" -#include "net/url_request/url_request_job_factory_impl.h" - -namespace { - -class BasicNetworkDelegate : public net::NetworkDelegate { - public: - BasicNetworkDelegate() {} - virtual ~BasicNetworkDelegate() {} - - private: - // net::NetworkDelegate implementation. - virtual int OnBeforeURLRequest(net::URLRequest* request, - const net::CompletionCallback& callback, - GURL* new_url) OVERRIDE { - return net::OK; - } - - virtual int OnBeforeSendHeaders(net::URLRequest* request, - const net::CompletionCallback& callback, - net::HttpRequestHeaders* headers) OVERRIDE { - return net::OK; - } - - virtual void OnSendHeaders(net::URLRequest* request, - const net::HttpRequestHeaders& headers) OVERRIDE {} - - virtual int OnHeadersReceived( - net::URLRequest* request, - const net::CompletionCallback& callback, - const net::HttpResponseHeaders* original_response_headers, - scoped_refptr* _response_headers, - GURL* allowed_unsafe_redirect_url) OVERRIDE { - return net::OK; - } - - virtual void OnBeforeRedirect(net::URLRequest* request, - const GURL& new_location) OVERRIDE {} - - virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE {} - - virtual void OnRawBytesRead(const net::URLRequest& request, - int bytes_read) OVERRIDE {} - - virtual void OnCompleted(net::URLRequest* request, bool started) OVERRIDE {} - - virtual void OnURLRequestDestroyed(net::URLRequest* request) OVERRIDE {} - - virtual void OnPACScriptError(int line_number, - const base::string16& error) OVERRIDE {} - - virtual NetworkDelegate::AuthRequiredResponse OnAuthRequired( - net::URLRequest* request, - const net::AuthChallengeInfo& auth_info, - const AuthCallback& callback, - net::AuthCredentials* credentials) OVERRIDE { - return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; - } - - virtual bool OnCanGetCookies(const net::URLRequest& request, - const net::CookieList& cookie_list) OVERRIDE { - return false; - } - - virtual bool OnCanSetCookie(const net::URLRequest& request, - const std::string& cookie_line, - net::CookieOptions* options) OVERRIDE { - return false; - } - - virtual bool OnCanAccessFile(const net::URLRequest& request, - const base::FilePath& path) const OVERRIDE { - return false; - } - - virtual bool OnCanThrottleRequest(const net::URLRequest& request) - const OVERRIDE { - return false; - } - - virtual int OnBeforeSocketStreamConnect( - net::SocketStream* stream, - const net::CompletionCallback& callback) OVERRIDE { - return net::OK; - } - - DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate); -}; - -} // namespace - -namespace cronet { - -URLRequestContextPeer::URLRequestContextPeer( - URLRequestContextPeerDelegate* delegate, - std::string user_agent) { - delegate_ = delegate; - user_agent_ = user_agent; -} - -void URLRequestContextPeer::Initialize( - scoped_ptr config) { - network_thread_ = new base::Thread("network"); - base::Thread::Options options; - options.message_loop_type = base::MessageLoop::TYPE_IO; - network_thread_->StartWithOptions(options); - - GetNetworkTaskRunner()->PostTask( - FROM_HERE, - base::Bind(&URLRequestContextPeer::InitializeURLRequestContext, - this, - Passed(&config))); -} - -void URLRequestContextPeer::InitializeURLRequestContext( - scoped_ptr config) { - // TODO(mmenke): Add method to have the builder enable SPDY. - net::URLRequestContextBuilder context_builder; - context_builder.set_network_delegate(new BasicNetworkDelegate()); - context_builder.set_proxy_config_service( - new net::ProxyConfigServiceFixed(net::ProxyConfig())); - config->ConfigureURLRequestContextBuilder(&context_builder); - - context_.reset(context_builder.Build()); - - if (VLOG_IS_ON(2)) { - net_log_observer_.reset(new NetLogObserver()); - context_->net_log()->AddThreadSafeObserver(net_log_observer_.get(), - net::NetLog::LOG_ALL_BUT_BYTES); - } - - delegate_->OnContextInitialized(this); -} - -URLRequestContextPeer::~URLRequestContextPeer() { - if (net_log_observer_) { - context_->net_log()->RemoveThreadSafeObserver(net_log_observer_.get()); - net_log_observer_.reset(); - } - StopNetLog(); - // TODO(mef): Ensure that |network_thread_| is destroyed properly. -} - -const std::string& URLRequestContextPeer::GetUserAgent(const GURL& url) const { - return user_agent_; -} - -net::URLRequestContext* URLRequestContextPeer::GetURLRequestContext() { - if (!context_) { - LOG(ERROR) << "URLRequestContext is not set up"; - } - return context_.get(); -} - -scoped_refptr -URLRequestContextPeer::GetNetworkTaskRunner() const { - return network_thread_->message_loop_proxy(); -} - -void URLRequestContextPeer::StartNetLogToFile(const std::string& file_name) { - // Do nothing if already logging to a file. - if (net_log_logger_) - return; - - base::FilePath file_path(file_name); - FILE* file = base::OpenFile(file_path, "w"); - if (!file) - return; - - scoped_ptr constants(net::NetLogLogger::GetConstants()); - net_log_logger_.reset(new net::NetLogLogger(file, *constants)); - net_log_logger_->StartObserving(context_->net_log()); -} - -void URLRequestContextPeer::StopNetLog() { - if (net_log_logger_) { - net_log_logger_->StopObserving(); - net_log_logger_.reset(); - } -} - -void NetLogObserver::OnAddEntry(const net::NetLog::Entry& entry) { - VLOG(2) << "Net log entry: type=" << entry.type() - << ", source=" << entry.source().type - << ", phase=" << entry.phase(); -} - -} // namespace cronet diff --git a/components/cronet/android/url_request_context_peer.h b/components/cronet/android/url_request_context_peer.h deleted file mode 100644 index 572e650..0000000 --- a/components/cronet/android/url_request_context_peer.h +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2014 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 COMPONENTS_CRONET_ANDROID_URL_REQUEST_CONTEXT_PEER_H_ -#define COMPONENTS_CRONET_ANDROID_URL_REQUEST_CONTEXT_PEER_H_ - -#include - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "base/memory/scoped_ptr.h" -#include "base/threading/thread.h" -#include "net/base/net_log.h" -#include "net/base/network_change_notifier.h" -#include "net/url_request/url_request_context.h" -#include "net/url_request/url_request_context_getter.h" - -namespace net { -class NetLogLogger; -} // namespace net - -namespace cronet { - -struct URLRequestContextConfig; - -// Implementation of the Chromium NetLog observer interface. -class NetLogObserver : public net::NetLog::ThreadSafeObserver { - public: - explicit NetLogObserver() {} - - virtual ~NetLogObserver() {} - - virtual void OnAddEntry(const net::NetLog::Entry& entry) OVERRIDE; - - private: - DISALLOW_COPY_AND_ASSIGN(NetLogObserver); -}; - -// Fully configured |URLRequestContext|. -class URLRequestContextPeer : public net::URLRequestContextGetter { - public: - class URLRequestContextPeerDelegate - : public base::RefCountedThreadSafe { - public: - virtual void OnContextInitialized(URLRequestContextPeer* context) = 0; - - protected: - friend class base::RefCountedThreadSafe; - - virtual ~URLRequestContextPeerDelegate() {} - }; - - URLRequestContextPeer(URLRequestContextPeerDelegate* delegate, - std::string user_agent); - void Initialize(scoped_ptr config); - - const std::string& GetUserAgent(const GURL& url) const; - - // net::URLRequestContextGetter implementation: - virtual net::URLRequestContext* GetURLRequestContext() OVERRIDE; - virtual scoped_refptr GetNetworkTaskRunner() - const OVERRIDE; - - void StartNetLogToFile(const std::string& file_name); - void StopNetLog(); - - private: - scoped_refptr delegate_; - scoped_ptr context_; - std::string user_agent_; - base::Thread* network_thread_; - scoped_ptr network_change_notifier_; - scoped_ptr net_log_observer_; - scoped_ptr net_log_logger_; - - virtual ~URLRequestContextPeer(); - - // Initializes |context_| on the IO thread. - void InitializeURLRequestContext(scoped_ptr config); - - DISALLOW_COPY_AND_ASSIGN(URLRequestContextPeer); -}; - -} // namespace cronet - -#endif // COMPONENTS_CRONET_ANDROID_URL_REQUEST_CONTEXT_PEER_H_ diff --git a/components/cronet/android/url_request_peer.cc b/components/cronet/android/url_request_peer.cc deleted file mode 100644 index 5f413e6..0000000 --- a/components/cronet/android/url_request_peer.cc +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright 2014 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. - -#include "url_request_peer.h" - -#include "base/strings/string_number_conversions.h" -#include "components/cronet/android/url_request_context_peer.h" -#include "components/cronet/android/wrapped_channel_upload_element_reader.h" -#include "net/base/load_flags.h" -#include "net/base/upload_bytes_element_reader.h" -#include "net/http/http_status_code.h" - -namespace cronet { - -static const size_t kBufferSizeIncrement = 8192; - -URLRequestPeer::URLRequestPeer(URLRequestContextPeer* context, - URLRequestPeerDelegate* delegate, - GURL url, - net::RequestPriority priority) - : method_("GET"), - url_request_(NULL), - read_buffer_(new net::GrowableIOBuffer()), - bytes_read_(0), - total_bytes_read_(0), - error_code_(0), - http_status_code_(0), - canceled_(false), - expected_size_(0) { - context_ = context; - delegate_ = delegate; - url_ = url; - priority_ = priority; -} - -URLRequestPeer::~URLRequestPeer() { CHECK(url_request_ == NULL); } - -void URLRequestPeer::SetMethod(const std::string& method) { method_ = method; } - -void URLRequestPeer::AddHeader(const std::string& name, - const std::string& value) { - headers_.SetHeader(name, value); -} - -void URLRequestPeer::SetUploadContent(const char* bytes, int bytes_len) { - std::vector data(bytes, bytes + bytes_len); - scoped_ptr reader( - new net::UploadOwnedBytesElementReader(&data)); - upload_data_stream_.reset(net::UploadDataStream::CreateWithReader( - reader.Pass(), 0)); -} - -void URLRequestPeer::SetUploadChannel(JNIEnv* env, int64 content_length) { - scoped_ptr reader( - new WrappedChannelElementReader(delegate_, content_length)); - upload_data_stream_.reset(net::UploadDataStream::CreateWithReader( - reader.Pass(), 0)); -} - -std::string URLRequestPeer::GetHeader(const std::string &name) const { - std::string value; - if (url_request_ != NULL) { - url_request_->GetResponseHeaderByName(name, &value); - } - return value; -} - -net::HttpResponseHeaders* URLRequestPeer::GetResponseHeaders() const { - if (url_request_ == NULL) { - return NULL; - } - return url_request_->response_headers(); -} - -void URLRequestPeer::Start() { - context_->GetNetworkTaskRunner()->PostTask( - FROM_HERE, - base::Bind(&URLRequestPeer::OnInitiateConnection, - base::Unretained(this))); -} - -void URLRequestPeer::OnInitiateConnection() { - if (canceled_) { - return; - } - - VLOG(1) << "Starting chromium request: " - << url_.possibly_invalid_spec().c_str() - << " priority: " << RequestPriorityToString(priority_); - url_request_ = new net::URLRequest( - url_, net::DEFAULT_PRIORITY, this, context_->GetURLRequestContext()); - url_request_->SetLoadFlags(net::LOAD_DISABLE_CACHE | - net::LOAD_DO_NOT_SAVE_COOKIES | - net::LOAD_DO_NOT_SEND_COOKIES); - url_request_->set_method(method_); - url_request_->SetExtraRequestHeaders(headers_); - if (!headers_.HasHeader(net::HttpRequestHeaders::kUserAgent)) { - std::string user_agent; - user_agent = context_->GetUserAgent(url_); - url_request_->SetExtraRequestHeaderByName( - net::HttpRequestHeaders::kUserAgent, user_agent, true /* override */); - } - - if (upload_data_stream_) - url_request_->set_upload(upload_data_stream_.Pass()); - - url_request_->SetPriority(priority_); - - url_request_->Start(); -} - -void URLRequestPeer::Cancel() { - if (canceled_) { - return; - } - - canceled_ = true; - - context_->GetNetworkTaskRunner()->PostTask( - FROM_HERE, - base::Bind(&URLRequestPeer::OnCancelRequest, base::Unretained(this))); -} - -void URLRequestPeer::OnCancelRequest() { - VLOG(1) << "Canceling chromium request: " << url_.possibly_invalid_spec(); - - if (url_request_ != NULL) { - url_request_->Cancel(); - } - - OnRequestCanceled(); -} - -void URLRequestPeer::Destroy() { - context_->GetNetworkTaskRunner()->PostTask( - FROM_HERE, base::Bind(&URLRequestPeer::OnDestroyRequest, this)); -} - -// static -void URLRequestPeer::OnDestroyRequest(URLRequestPeer* self) { - VLOG(1) << "Destroying chromium request: " - << self->url_.possibly_invalid_spec(); - delete self; -} - -void URLRequestPeer::OnResponseStarted(net::URLRequest* request) { - if (request->status().status() != net::URLRequestStatus::SUCCESS) { - OnRequestFailed(); - return; - } - - http_status_code_ = request->GetResponseCode(); - VLOG(1) << "Response started with status: " << http_status_code_; - - request->GetResponseHeaderByName("Content-Type", &content_type_); - expected_size_ = request->GetExpectedContentSize(); - delegate_->OnResponseStarted(this); - - Read(); -} - -// Reads all available data or starts an asynchronous read. -void URLRequestPeer::Read() { - while (true) { - if (read_buffer_->RemainingCapacity() == 0) { - int new_capacity = read_buffer_->capacity() + kBufferSizeIncrement; - read_buffer_->SetCapacity(new_capacity); - } - - int bytes_read; - if (url_request_->Read( - read_buffer_, read_buffer_->RemainingCapacity(), &bytes_read)) { - if (bytes_read == 0) { - OnRequestSucceeded(); - break; - } - - VLOG(1) << "Synchronously read: " << bytes_read << " bytes"; - OnBytesRead(bytes_read); - } else if (url_request_->status().status() == - net::URLRequestStatus::IO_PENDING) { - if (bytes_read_ != 0) { - VLOG(1) << "Flushing buffer: " << bytes_read_ << " bytes"; - - delegate_->OnBytesRead(this); - read_buffer_->set_offset(0); - bytes_read_ = 0; - } - VLOG(1) << "Started async read"; - break; - } else { - OnRequestFailed(); - break; - } - } -} - -void URLRequestPeer::OnReadCompleted(net::URLRequest* request, int bytes_read) { - VLOG(1) << "Asynchronously read: " << bytes_read << " bytes"; - if (bytes_read < 0) { - OnRequestFailed(); - return; - } else if (bytes_read == 0) { - OnRequestSucceeded(); - return; - } - - OnBytesRead(bytes_read); - Read(); -} - -void URLRequestPeer::OnBytesRead(int bytes_read) { - read_buffer_->set_offset(read_buffer_->offset() + bytes_read); - bytes_read_ += bytes_read; - total_bytes_read_ += bytes_read; -} - -void URLRequestPeer::OnRequestSucceeded() { - if (canceled_) { - return; - } - - VLOG(1) << "Request completed with HTTP status: " << http_status_code_ - << ". Total bytes read: " << total_bytes_read_; - - OnRequestCompleted(); -} - -void URLRequestPeer::OnRequestFailed() { - if (canceled_) { - return; - } - - error_code_ = url_request_->status().error(); - VLOG(1) << "Request failed with status: " << url_request_->status().status() - << " and error: " << net::ErrorToString(error_code_); - OnRequestCompleted(); -} - -void URLRequestPeer::OnRequestCanceled() { OnRequestCompleted(); } - -void URLRequestPeer::OnRequestCompleted() { - VLOG(1) << "Completed: " << url_.possibly_invalid_spec(); - if (url_request_ != NULL) { - delete url_request_; - url_request_ = NULL; - } - - delegate_->OnBytesRead(this); - delegate_->OnRequestFinished(this); -} - -unsigned char* URLRequestPeer::Data() const { - return reinterpret_cast(read_buffer_->StartOfBuffer()); -} - -} // namespace cronet diff --git a/components/cronet/android/url_request_peer.h b/components/cronet/android/url_request_peer.h deleted file mode 100644 index a6e4f9e..0000000 --- a/components/cronet/android/url_request_peer.h +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2014 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 COMPONENTS_CRONET_ANDROID_URL_REQUEST_PEER_H_ -#define COMPONENTS_CRONET_ANDROID_URL_REQUEST_PEER_H_ - -#include - -#include - -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "base/memory/scoped_ptr.h" -#include "net/base/request_priority.h" -#include "net/http/http_request_headers.h" -#include "net/url_request/url_request.h" - -namespace net { -class GrowableIOBuffer; -class HttpResponseHeaders; -class UploadDataStream; -} // namespace net - -namespace cronet { - -class URLRequestContextPeer; - -// 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 { - public: - virtual void OnResponseStarted(URLRequestPeer* request) = 0; - virtual void OnBytesRead(URLRequestPeer* request) = 0; - virtual void OnRequestFinished(URLRequestPeer* request) = 0; - virtual int ReadFromUploadChannel(net::IOBuffer* buf, int buf_length) = 0; - - protected: - friend class base::RefCountedThreadSafe; - 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 or PUT request - void SetUploadContent(const char* bytes, int bytes_len); - - // Sets the request to streaming upload. - void SetUploadChannel(JNIEnv* env, int64 content_length); - - // 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 value of the specified response header. - std::string GetHeader(const std::string& name) const; - - // Get all response headers, as a HttpResponseHeaders object. - net::HttpResponseHeaders* GetResponseHeaders() const; - - // 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: - static void OnDestroyRequest(URLRequestPeer* self); - - 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(); - - URLRequestContextPeer* context_; - scoped_refptr delegate_; - GURL url_; - net::RequestPriority priority_; - std::string method_; - net::HttpRequestHeaders headers_; - net::URLRequest* url_request_; - scoped_ptr upload_data_stream_; - scoped_refptr 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_; - - DISALLOW_COPY_AND_ASSIGN(URLRequestPeer); -}; - -} // namespace cronet - -#endif // COMPONENTS_CRONET_ANDROID_URL_REQUEST_PEER_H_ diff --git a/components/cronet/android/wrapped_channel_upload_element_reader.cc b/components/cronet/android/wrapped_channel_upload_element_reader.cc index db6fc78..3027cba 100644 --- a/components/cronet/android/wrapped_channel_upload_element_reader.cc +++ b/components/cronet/android/wrapped_channel_upload_element_reader.cc @@ -12,7 +12,7 @@ namespace cronet { WrappedChannelElementReader::WrappedChannelElementReader( - scoped_refptr delegate, + scoped_refptr delegate, uint64 length) : length_(length), offset_(0), delegate_(delegate) { } diff --git a/components/cronet/android/wrapped_channel_upload_element_reader.h b/components/cronet/android/wrapped_channel_upload_element_reader.h index c438f6f..251a3ec 100644 --- a/components/cronet/android/wrapped_channel_upload_element_reader.h +++ b/components/cronet/android/wrapped_channel_upload_element_reader.h @@ -7,7 +7,7 @@ #include "base/basictypes.h" #include "base/compiler_specific.h" -#include "components/cronet/android/url_request_peer.h" +#include "components/cronet/android/url_request_adapter.h" #include "net/base/completion_callback.h" #include "net/base/upload_element_reader.h" @@ -24,7 +24,7 @@ namespace cronet { class WrappedChannelElementReader : public net::UploadElementReader { public: WrappedChannelElementReader( - scoped_refptr delegate, + scoped_refptr delegate, uint64 length); virtual ~WrappedChannelElementReader(); @@ -40,7 +40,7 @@ class WrappedChannelElementReader : public net::UploadElementReader { private: const uint64 length_; uint64 offset_; - scoped_refptr delegate_; + scoped_refptr delegate_; DISALLOW_COPY_AND_ASSIGN(WrappedChannelElementReader); }; -- cgit v1.1