Bug 1326018 - Process telemetry for highlight click before url open action r=sebastian
MozReview-Commit-ID: 8Tlth9GvqOb
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java
@@ -116,29 +116,32 @@ public class StreamRecyclerAdapter exten
}
int actualPosition = translatePositionToCursor(position);
highlightsCursor.moveToPosition(actualPosition);
final String url = highlightsCursor.getString(
highlightsCursor.getColumnIndexOrThrow(BrowserContract.Combined.URL));
- onUrlOpenListener.onUrlOpen(url, EnumSet.of(HomePager.OnUrlOpenListener.Flags.ALLOW_SWITCH_TO_TAB));
-
ActivityStreamTelemetry.Extras.Builder extras = ActivityStreamTelemetry.Extras.builder()
.forHighlightSource(Utils.highlightSource(highlightsCursor))
.set(ActivityStreamTelemetry.Contract.SOURCE_TYPE, ActivityStreamTelemetry.Contract.TYPE_HIGHLIGHTS)
.set(ActivityStreamTelemetry.Contract.ACTION_POSITION, actualPosition)
.set(ActivityStreamTelemetry.Contract.COUNT, highlightsCursor.getCount());
Telemetry.sendUIEvent(
TelemetryContract.Event.LOAD_URL,
TelemetryContract.Method.LIST_ITEM,
extras.build()
);
+
+ // NB: This is hacky. We need to process telemetry data first, otherwise we run a risk of
+ // not having a cursor to work with once url is opened and BrowserApp closes A-S home screen
+ // and clears its resources (read: cursors). See Bug 1326018.
+ onUrlOpenListener.onUrlOpen(url, EnumSet.of(HomePager.OnUrlOpenListener.Flags.ALLOW_SWITCH_TO_TAB));
}
@Override
public int getItemCount() {
final int highlightsCount;
if (highlightsCursor != null) {
highlightsCount = highlightsCursor.getCount();