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

Unified Diff: components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedService.java

Issue 2442823002: Re-land "Add histograms that monitor variation seed fetching from Java." (Closed)
Patch Set: 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedService.java
diff --git a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedService.java b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedService.java
index 7b1c7bb843b959a492261f8f3dd15d33f44fe3f3..26957722001f66647fd6e2629dfad0bd2ed2b12d 100644
--- a/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedService.java
+++ b/components/variations/android/java/src/org/chromium/components/variations/firstrun/VariationsSeedService.java
@@ -6,15 +6,19 @@ package org.chromium.components.variations.firstrun;
import android.app.IntentService;
import android.content.Intent;
+import android.os.SystemClock;
import org.chromium.base.Log;
+import org.chromium.base.metrics.CachedMetrics.SparseHistogramSample;
+import org.chromium.base.metrics.CachedMetrics.TimesHistogramSample;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
+import java.net.SocketTimeoutException;
import java.net.URL;
+import java.util.concurrent.TimeUnit;
/**
* Background service that fetches the variations seed before the actual first run of Chrome.
@@ -27,6 +31,12 @@ public class VariationsSeedService extends IntentService {
private static final int READ_TIMEOUT = 10000; // time in ms
private static final int REQUEST_TIMEOUT = 15000; // time in ms
+ // Values for the "Variations.FirstRun.SeedFetchResult" sparse histogram, which also logs
+ // HTTP result codes. These are negative so that they don't conflict with the HTTP codes.
+ // These values should not be renumbered or re-used since they are logged to UMA.
+ private static final int SEED_FETCH_RESULT_TIMEOUT = -2;
+ private static final int SEED_FETCH_RESULT_IOEXCEPTION = -1;
+
// Static variable that indicates a status of the variations seed fetch. If one request is in
// progress, we do not start another fetch.
private static boolean sFetchInProgress = false;
@@ -45,9 +55,7 @@ public class VariationsSeedService extends IntentService {
}
setFetchInProgressFlagValue(true);
try {
- downloadContent(new URL(VARIATIONS_SERVER_URL));
- } catch (MalformedURLException e) {
- Log.w(TAG, "Variations server URL is malformed.", e);
+ downloadContent();
} finally {
setFetchInProgressFlagValue(false);
}
@@ -59,16 +67,32 @@ public class VariationsSeedService extends IntentService {
sFetchInProgress = value;
}
- private boolean downloadContent(URL variationsServerUrl) {
+ private void recordFetchResultOrCode(int resultOrCode) {
+ SparseHistogramSample histogram =
+ new SparseHistogramSample("Variations.FirstRun.SeedFetchResult");
+ histogram.record(resultOrCode);
+ }
+
+ private void recordSeedFetchTime(long timeDeltaMillis) {
+ Log.i(TAG, "Fetched first run seed in " + timeDeltaMillis + " ms");
+ TimesHistogramSample histogram = new TimesHistogramSample(
+ "Variations.FirstRun.SeedFetchTime", TimeUnit.MILLISECONDS);
+ histogram.record(timeDeltaMillis);
+ }
+
+ private boolean downloadContent() {
HttpURLConnection connection = null;
try {
- connection = (HttpURLConnection) variationsServerUrl.openConnection();
+ long startTimeMillis = SystemClock.elapsedRealtime();
+ URL url = new URL(VARIATIONS_SERVER_URL);
+ connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(READ_TIMEOUT);
connection.setConnectTimeout(REQUEST_TIMEOUT);
connection.setDoInput(true);
connection.setRequestProperty("A-IM", "gzip");
connection.connect();
int responseCode = connection.getResponseCode();
+ recordFetchResultOrCode(responseCode);
if (responseCode != HttpURLConnection.HTTP_OK) {
Log.w(TAG, "Non-OK response code = %d", responseCode);
return false;
@@ -82,8 +106,14 @@ public class VariationsSeedService extends IntentService {
boolean isGzipCompressed = getHeaderFieldOrEmpty(connection, "IM").equals("gzip");
VariationsSeedBridge.setVariationsFirstRunSeed(
getApplicationContext(), rawSeed, signature, country, date, isGzipCompressed);
+ recordSeedFetchTime(SystemClock.elapsedRealtime() - startTimeMillis);
return true;
+ } catch (SocketTimeoutException e) {
+ recordFetchResultOrCode(SEED_FETCH_RESULT_TIMEOUT);
+ Log.w(TAG, "SocketTimeoutException fetching first run seed: ", e);
+ return false;
} catch (IOException e) {
+ recordFetchResultOrCode(SEED_FETCH_RESULT_IOEXCEPTION);
Log.w(TAG, "IOException fetching first run seed: ", e);
return false;
} finally {
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698