Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1089)

Unified Diff: components/cronet/android/cronet_url_request_adapter.h

Issue 2844803002: [Cronet] Make metrics reporting happen after terminal callbacks. (Closed)
Patch Set: remove an invalid comment Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698