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

Unified Diff: components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java

Issue 2351793003: Implement timing metrics for UrlRequest (Closed)
Patch Set: Small cleanups Created 4 years, 2 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/java/src/org/chromium/net/impl/CronetUrlRequest.java
diff --git a/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java b/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java
index ce4b574633545e36439c14202768319cf32b3a59..0cf031bc02b7a8ca5af8f2404781ca41c6cf922c 100644
--- a/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java
+++ b/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java
@@ -65,6 +65,8 @@ public final class CronetUrlRequest implements UrlRequest {
@GuardedBy("mUrlRequestAdapterLock")
@Nullable
private final UrlRequestMetricsAccumulator mRequestMetricsAccumulator;
+ @GuardedBy("mUrlRequestAdapterLock")
+ private RequestFinishedInfo.Metrics mMetrics;
/*
* Synchronize access to mUrlRequestAdapter, mStarted, mWaitingOnRedirect,
@@ -201,7 +203,8 @@ public final class CronetUrlRequest implements UrlRequest {
try {
mUrlRequestAdapter =
nativeCreateRequestAdapter(mRequestContext.getUrlRequestContextAdapter(),
- mInitialUrl, mPriority, mDisableCache, mDisableConnectionMigration);
+ mInitialUrl, mPriority, mDisableCache, mDisableConnectionMigration,
+ mRequestContext.hasRequestFinishedListener());
mRequestContext.onRequestStarted();
if (mInitialMethod != null) {
if (!nativeSetHttpMethod(mUrlRequestAdapter, mInitialMethod)) {
@@ -429,7 +432,6 @@ public final class CronetUrlRequest implements UrlRequest {
mRequestMetricsAccumulator.onRequestFinished();
}
nativeDestroy(mUrlRequestAdapter, sendOnCanceled);
- mRequestContext.reportFinished(getRequestFinishedInfo());
mRequestContext.onRequestDestroyed();
mUrlRequestAdapter = 0;
if (mOnDestroyedCallbackForTesting != null) {
@@ -699,11 +701,31 @@ public final class CronetUrlRequest implements UrlRequest {
postTaskToExecutor(task);
}
+ /**
+ * Called by the native code to report metrics.
+ */
+ @SuppressWarnings("unused")
+ @CalledByNative
+ private void onMetricsCollected(long requestStartMs, long dnsStartMs, long dnsEndMs,
+ long connectStartMs, long connectEndMs, long sslStartMs, long sslEndMs,
+ long sendingStartMs, long sendingEndMs, long pushStartMs, long pushEndMs,
+ long responseStartMs, long responseEndMs, boolean socketReused, long sentBytesCount,
+ long receivedBytesCount) {
+ synchronized (mUrlRequestAdapterLock) {
+ if (mMetrics != null) {
+ throw new IllegalStateException("Metrics collection should only happen once.");
+ }
+ mMetrics = new CronetMetrics(requestStartMs, dnsStartMs, dnsEndMs, connectStartMs,
+ connectEndMs, sslStartMs, sslEndMs, sendingStartMs, sendingEndMs, pushStartMs,
+ pushEndMs, responseStartMs, responseEndMs, socketReused, sentBytesCount,
+ receivedBytesCount);
+ }
+ mRequestContext.reportFinished(getRequestFinishedInfo());
+ }
+
private RequestFinishedInfo getRequestFinishedInfo() {
// TODO(mgersh): fill in real values for finishedReason and exception
- return new RequestFinishedInfo(mInitialUrl, mRequestAnnotations,
- (mRequestMetricsAccumulator != null ? mRequestMetricsAccumulator.getRequestMetrics()
- : EMPTY_METRICS),
+ return new RequestFinishedInfo(mInitialUrl, mRequestAnnotations, mMetrics,
RequestFinishedInfo.SUCCEEDED, mResponseInfo, null);
}
@@ -751,7 +773,8 @@ public final class CronetUrlRequest implements UrlRequest {
// Native methods are implemented in cronet_url_request_adapter.cc.
private native long nativeCreateRequestAdapter(long urlRequestContextAdapter, String url,
- int priority, boolean disableCache, boolean disableConnectionMigration);
+ int priority, boolean disableCache, boolean disableConnectionMigration,
+ boolean enableMetrics);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeSetHttpMethod(long nativePtr, String method);

Powered by Google App Engine
This is Rietveld 408576698