Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Harden telemetry event dispatch #8767

Merged
merged 2 commits into from
Apr 20, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions platform/android/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to
* Polygon holes [#8557](https://github.com/mapbox/mapbox-gl-native/pull/8557) and [#8722](https://github.com/mapbox/mapbox-gl-native/pull/8722)
* Custom location source [#8710](https://github.com/mapbox/mapbox-gl-native/pull/8710)
* Ensure surface is created after display and context [#8759](https://github.com/mapbox/mapbox-gl-native/pull/8759)
* Harden telemetry event dispatch [#8767](https://github.com/mapbox/mapbox-gl-native/pull/8767)

## 5.0.2 - April 3, 2017

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,9 +153,9 @@ boolean onTouchEvent(@NonNull MotionEvent event) {
&& uiSettings.isZoomGesturesEnabled();
if (twoTap) {
// Confirmed 2nd Finger Down
MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent(
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent(
getLocationFromGesture(event.getX(), event.getY()),
MapboxEvent.GESTURE_TWO_FINGER_SINGLETAP, transform.getZoom()));
MapboxEvent.GESTURE_TWO_FINGER_SINGLETAP, transform));
}
break;

Expand Down Expand Up @@ -184,8 +184,8 @@ boolean onTouchEvent(@NonNull MotionEvent event) {

// Scroll / Pan Has Stopped
if (scrollInProgress) {
MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapDragEndEvent(
getLocationFromGesture(event.getX(), event.getY()), transform.getZoom()));
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapDragEndEvent(
getLocationFromGesture(event.getX(), event.getY()), transform));
scrollInProgress = false;
}

Expand Down Expand Up @@ -284,9 +284,9 @@ public boolean onDoubleTapEvent(MotionEvent e) {
break;
}

MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent(
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent(
getLocationFromGesture(e.getX(), e.getY()),
MapboxEvent.GESTURE_DOUBLETAP, transform.getZoom()));
MapboxEvent.GESTURE_DOUBLETAP, transform));

return true;
}
Expand Down Expand Up @@ -315,9 +315,9 @@ public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
}
}

MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent(
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent(
getLocationFromGesture(motionEvent.getX(), motionEvent.getY()),
MapboxEvent.GESTURE_SINGLETAP, transform.getZoom()));
MapboxEvent.GESTURE_SINGLETAP, transform));

return true;
}
Expand Down Expand Up @@ -377,9 +377,9 @@ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float ve
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (!scrollInProgress) {
scrollInProgress = true;
MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent(
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent(
getLocationFromGesture(e1.getX(), e1.getY()),
MapboxEvent.GESTURE_PAN_START, transform.getZoom()));
MapboxEvent.GESTURE_PAN_START, transform));
}
if (!trackingSettings.isScrollGestureCurrentlyEnabled()) {
return false;
Expand Down Expand Up @@ -421,9 +421,9 @@ public boolean onScaleBegin(ScaleGestureDetector detector) {

scaleGestureOccurred = true;
beginTime = detector.getEventTime();
MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent(
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent(
getLocationFromGesture(detector.getFocusX(), detector.getFocusY()),
MapboxEvent.GESTURE_PINCH_START, transform.getZoom()));
MapboxEvent.GESTURE_PINCH_START, transform));
return true;
}

Expand Down Expand Up @@ -513,9 +513,9 @@ public boolean onRotateBegin(RotateGestureDetector detector) {
}

beginTime = detector.getEventTime();
MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent(
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent(
getLocationFromGesture(detector.getFocusX(), detector.getFocusY()),
MapboxEvent.GESTURE_ROTATION_START, transform.getZoom()));
MapboxEvent.GESTURE_ROTATION_START, transform));
return true;
}

Expand Down Expand Up @@ -594,9 +594,9 @@ public boolean onShoveBegin(ShoveGestureDetector detector) {
}

beginTime = detector.getEventTime();
MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapClickEvent(
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent(
getLocationFromGesture(detector.getFocusX(), detector.getFocusY()),
MapboxEvent.GESTURE_PITCH_START, transform.getZoom()));
MapboxEvent.GESTURE_PITCH_START, transform));
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
import com.mapbox.mapboxsdk.maps.widgets.MyLocationView;
import com.mapbox.mapboxsdk.maps.widgets.MyLocationViewSettings;
import com.mapbox.mapboxsdk.net.ConnectivityReceiver;
import com.mapbox.services.android.telemetry.MapboxEvent;
import com.mapbox.services.android.telemetry.MapboxTelemetry;

import java.lang.annotation.Retention;
Expand Down Expand Up @@ -188,7 +187,7 @@ private void initialise(@NonNull final Context context, @NonNull final MapboxMap
@UiThread
public void onCreate(@Nullable Bundle savedInstanceState) {
if (savedInstanceState == null) {
MapboxTelemetry.getInstance().pushEvent(MapboxEvent.buildMapLoadEvent());
MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapLoadEvent());
} else if (savedInstanceState.getBoolean(MapboxConstants.STATE_HAS_SAVED_STATE)) {
mapboxMap.onRestoreInstanceState(savedInstanceState);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.mapbox.mapboxsdk.maps;

import android.location.Location;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import com.mapbox.services.android.telemetry.MapboxEvent;

import java.util.Hashtable;

/**
* Wrapper class for MapboxEvent
* <p>
* Provides facility methods to use Transform and handle the case that the zoom, required for a telemetry event,
* isn't available yet.
* </p>
*/
class MapboxEventWrapper {

@Nullable
static Hashtable<String, Object> buildMapClickEvent(
@NonNull Location location, @NonNull String gestureId, Transform transform) {
try {
return MapboxEvent.buildMapClickEvent(location, gestureId, transform.getZoom());
} catch (NullPointerException exception) {
// Map/Transform is not ready yet #8650
// returning null is valid, event is ignored.
return null;
}
}

@Nullable
static Hashtable<String, Object> buildMapDragEndEvent(
@NonNull Location location, Transform transform) {
try {
return MapboxEvent.buildMapDragEndEvent(location, transform.getZoom());
} catch (NullPointerException exception) {
// Map/Transform is not ready yet #8650
// returning null is valid, event is ignored.
return null;
}
}

@Nullable
static Hashtable<String, Object> buildMapLoadEvent() {
return MapboxEvent.buildMapLoadEvent();
}
}