diff --git a/app/src/common/shared/org/mozilla/vrbrowser/telemetry/TelemetryWrapper.java b/app/src/common/shared/org/mozilla/vrbrowser/telemetry/TelemetryWrapper.java index 396511183..8a32ab778 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/telemetry/TelemetryWrapper.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/telemetry/TelemetryWrapper.java @@ -118,23 +118,59 @@ public static void init(Context aContext) { @UiThread public static void start() { - TelemetryHolder.get().recordSessionStart(); - TelemetryEvent.create(Category.ACTION, Method.FOREGROUND, Object.APP).queue(); + queueHistogram(); // Call Telemetry.scheduleUpload() early. // See https://github.com/MozillaReality/FirefoxReality/issues/1353 TelemetryHolder.get() .queuePing(TelemetryCorePingBuilder.TYPE) .queuePing(TelemetryMobileEventPingBuilder.TYPE) .scheduleUpload(); + + TelemetryHolder.get().recordSessionStart(); + TelemetryEvent.create(Category.ACTION, Method.FOREGROUND, Object.APP).queue(); } @UiThread public static void stop() { + queueHistogram(); + + TelemetryEvent.create(Category.ACTION, Method.BACKGROUND, Object.APP).queue(); + TelemetryHolder.get().recordSessionEnd(); + + TelemetryHolder.get() + .queuePing(TelemetryCorePingBuilder.TYPE) + .queuePing(TelemetryMobileEventPingBuilder.TYPE) + .scheduleUpload(); + } + + @UiThread + public static void urlBarEvent(boolean aIsUrl) { + if (aIsUrl) { + TelemetryWrapper.browseEvent(); + } else { + TelemetryWrapper.searchEnterEvent(); + } + } + + @UiThread + public static void voiceInputEvent() { + Telemetry telemetry = TelemetryHolder.get(); + TelemetryEvent.create(Category.ACTION, Method.VOICE_QUERY, Object.VOICE_INPUT).queue(); + + String searchEngine = getDefaultSearchEngineIdentifierForTelemetry(telemetry.getConfiguration().getContext()); + telemetry.recordSearch(SearchesMeasurement.LOCATION_ACTIONBAR, searchEngine); + } + + private static String getDefaultSearchEngineIdentifierForTelemetry(Context aContext) { + return SearchEngineWrapper.get(aContext).getResourceURL(); + } + + private static void queueHistogram() { // Upload loading time histogram TelemetryEvent loadingHistogramEvent = TelemetryEvent.create(Category.HISTOGRAM, Method.FOREGROUND, Object.BROWSER); for (int bucketIndex = 0; bucketIndex < loadingTimeHistogram.length; ++bucketIndex) { loadingHistogramEvent.extra(Integer.toString(bucketIndex * LOADING_BUCKET_SIZE_MS), - Integer.toString(loadingTimeHistogram[bucketIndex])); + Integer.toString(loadingTimeHistogram[bucketIndex])); } loadingHistogramEvent.queue(); @@ -145,7 +181,7 @@ public static void stop() { TelemetryEvent immersiveHistogramEvent = TelemetryEvent.create(Category.HISTOGRAM, Method.IMMERSIVE_MODE, Object.BROWSER); for (int bucketIndex = 0; bucketIndex < immersiveHistogram.length; ++bucketIndex) { immersiveHistogramEvent.extra(Integer.toString(bucketIndex * IMMERSIVE_BUCKET_SIZE_MS), - Integer.toString(immersiveHistogram[bucketIndex])); + Integer.toString(immersiveHistogram[bucketIndex])); } immersiveHistogramEvent.queue(); @@ -166,35 +202,6 @@ public static void stop() { ).queue(); numUri = 0; - TelemetryEvent.create(Category.ACTION, Method.BACKGROUND, Object.APP).queue(); - TelemetryHolder.get().recordSessionEnd(); - - TelemetryHolder.get() - .queuePing(TelemetryCorePingBuilder.TYPE) - .queuePing(TelemetryMobileEventPingBuilder.TYPE) - .scheduleUpload(); - } - - @UiThread - public static void urlBarEvent(boolean aIsUrl) { - if (aIsUrl) { - TelemetryWrapper.browseEvent(); - } else { - TelemetryWrapper.searchEnterEvent(); - } - } - - @UiThread - public static void voiceInputEvent() { - Telemetry telemetry = TelemetryHolder.get(); - TelemetryEvent.create(Category.ACTION, Method.VOICE_QUERY, Object.VOICE_INPUT).queue(); - - String searchEngine = getDefaultSearchEngineIdentifierForTelemetry(telemetry.getConfiguration().getContext()); - telemetry.recordSearch(SearchesMeasurement.LOCATION_ACTIONBAR, searchEngine); - } - - private static String getDefaultSearchEngineIdentifierForTelemetry(Context aContext) { - return SearchEngineWrapper.get(aContext).getResourceURL(); } private static void searchEnterEvent() {