| Index: components/cronet/android/cronet_url_request_adapter.h
|
| diff --git a/components/cronet/android/cronet_url_request_adapter.h b/components/cronet/android/cronet_url_request_adapter.h
|
| index a57a305b5b1bca79378d54f307652c0474036970..fdb768e39db5f080ef5d2b8f1599d843abf2ba89 100644
|
| --- a/components/cronet/android/cronet_url_request_adapter.h
|
| +++ b/components/cronet/android/cronet_url_request_adapter.h
|
| @@ -18,6 +18,7 @@
|
| #include "base/location.h"
|
| #include "base/macros.h"
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/memory/weak_ptr.h"
|
| #include "base/time/time.h"
|
| #include "net/base/request_priority.h"
|
| #include "net/url_request/url_request.h"
|
| @@ -80,10 +81,9 @@ class CronetURLRequestAdapter : public net::URLRequest::Delegate {
|
| // Starts the request.
|
| void Start(JNIEnv* env, const base::android::JavaParamRef<jobject>& jcaller);
|
|
|
| - void GetStatus(
|
| - JNIEnv* env,
|
| - const base::android::JavaParamRef<jobject>& jcaller,
|
| - const base::android::JavaParamRef<jobject>& jstatus_listener) const;
|
| + void GetStatus(JNIEnv* env,
|
| + const base::android::JavaParamRef<jobject>& jcaller,
|
| + const base::android::JavaParamRef<jobject>& jstatus_listener);
|
|
|
| // Follows redirect.
|
| void FollowDeferredRedirect(
|
| @@ -98,11 +98,10 @@ class CronetURLRequestAdapter : public net::URLRequest::Delegate {
|
| jint jcapacity);
|
|
|
| // Releases all resources for the request and deletes the object itself.
|
| - // |jsend_on_canceled| indicates if Java onCanceled callback should be
|
| - // issued to indicate when no more callbacks will be issued.
|
| void Destroy(JNIEnv* env,
|
| - const base::android::JavaParamRef<jobject>& jcaller,
|
| - jboolean jsend_on_canceled);
|
| + const base::android::JavaParamRef<jobject>& jcaller);
|
| +
|
| + void Cancel(JNIEnv* env, const base::android::JavaParamRef<jobject>& jcaller);
|
|
|
| // net::URLRequest::Delegate implementations:
|
|
|
| @@ -132,7 +131,8 @@ class CronetURLRequestAdapter : public net::URLRequest::Delegate {
|
| void ReadDataOnNetworkThread(
|
| scoped_refptr<IOBufferWithByteBuffer> read_buffer,
|
| int buffer_size);
|
| - void DestroyOnNetworkThread(bool send_on_canceled);
|
| + void DestroyOnNetworkThread();
|
| + void CancelOnNetworkThread();
|
|
|
| // Report error and cancel request_adapter.
|
| void ReportError(net::URLRequest* request, int net_error);
|
| @@ -158,6 +158,10 @@ class CronetURLRequestAdapter : public net::URLRequest::Delegate {
|
| // request.
|
| const bool enable_metrics_;
|
|
|
| + // This is needed because Native code can initiate destruction of |this| while
|
| + // there are posted tasks from Java yet to be run on the network task runner.
|
| + base::WeakPtrFactory<CronetURLRequestAdapter> weak_ptr_factory_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(CronetURLRequestAdapter);
|
| };
|
|
|
|
|