summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Paczos <lukasz.paczos@mapbox.com>2018-12-19 16:03:10 +0100
committerŁukasz Paczos <lukasz.paczos@mapbox.com>2019-01-02 11:38:53 +0100
commit034cb1cf178d750f270416ef4114db420dd0113f (patch)
tree841154d527c8cfc11a8c1ec7c07f164685292204
parent2c19356ae6537b42e90db8c77cf317b53f628c4f (diff)
downloadqtlocation-mapboxgl-upstream/lp-13590-inital-animation.tar.gz
[android] cancel camera transitions only when set CameraMode is not Noneupstream/lp-13590-inital-animation
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java6
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationCameraControllerTest.java54
2 files changed, 52 insertions, 8 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
index e426a587d0..5e972c51d6 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
@@ -89,7 +89,11 @@ final class LocationCameraController implements MapboxAnimator.OnCameraAnimation
@Nullable OnLocationCameraTransitionListener internalTransitionListener) {
final boolean wasTracking = isLocationTracking();
this.cameraMode = cameraMode;
- mapboxMap.cancelTransitions();
+
+ if (cameraMode != CameraMode.NONE) {
+ mapboxMap.cancelTransitions();
+ }
+
adjustGesturesThresholds();
notifyCameraTrackingChangeListener(wasTracking);
transitionToCurrentLocation(wasTracking, lastLocation, internalTransitionListener);
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationCameraControllerTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationCameraControllerTest.java
index 475426f77c..1b56cfac52 100644
--- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationCameraControllerTest.java
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationCameraControllerTest.java
@@ -25,6 +25,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -124,6 +125,45 @@ public class LocationCameraControllerTest {
}
@Test
+ public void setCameraMode_cancelTransitionsWhenSet() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ when(mapboxMap.getProjection()).thenReturn(mock(Projection.class));
+ LocationCameraController camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationComponentOptions.class));
+
+ camera.setCameraMode(CameraMode.NONE_COMPASS);
+ verify(mapboxMap, times(1)).cancelTransitions();
+
+ camera.setCameraMode(CameraMode.NONE_GPS);
+ verify(mapboxMap, times(2)).cancelTransitions();
+
+ camera.setCameraMode(CameraMode.TRACKING);
+ verify(mapboxMap, times(3)).cancelTransitions();
+
+ camera.setCameraMode(CameraMode.TRACKING_COMPASS);
+ verify(mapboxMap, times(4)).cancelTransitions();
+
+ camera.setCameraMode(CameraMode.TRACKING_GPS);
+ verify(mapboxMap, times(5)).cancelTransitions();
+
+ camera.setCameraMode(CameraMode.TRACKING_GPS_NORTH);
+ verify(mapboxMap, times(6)).cancelTransitions();
+ }
+
+ @Test
+ public void setCameraMode_dontCancelTransitionsWhenNoneSet() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ when(mapboxMap.getProjection()).thenReturn(mock(Projection.class));
+ LocationCameraController camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationComponentOptions.class));
+
+ camera.setCameraMode(CameraMode.NONE);
+ verify(mapboxMap, never()).cancelTransitions();
+ }
+
+ @Test
public void onNewLatLngValue_cameraModeTrackingUpdatesLatLng() {
MapboxMap mapboxMap = mock(MapboxMap.class);
when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
@@ -367,7 +407,7 @@ public class LocationCameraControllerTest {
}
@Test
- public void onMove_cancellingTransitionWhileNone() {
+ public void onMove_notCancellingTransitionWhileNone() {
MapboxMap mapboxMap = mock(MapboxMap.class);
when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class);
@@ -376,12 +416,12 @@ public class LocationCameraControllerTest {
camera.setCameraMode(CameraMode.NONE);
camera.onMoveListener.onMove(moveGestureDetector);
- verify(mapboxMap, times(1)).cancelTransitions();
+ verify(mapboxMap, times(0)).cancelTransitions();
verify(moveGestureDetector, times(0)).interrupt();
// testing subsequent calls
camera.onMoveListener.onMove(moveGestureDetector);
- verify(mapboxMap, times(1)).cancelTransitions();
+ verify(mapboxMap, times(0)).cancelTransitions();
verify(moveGestureDetector, times(0)).interrupt();
}
@@ -395,12 +435,12 @@ public class LocationCameraControllerTest {
camera.setCameraMode(CameraMode.TRACKING);
camera.onMoveListener.onMove(moveGestureDetector);
- verify(mapboxMap, times(2)).cancelTransitions();
+ verify(mapboxMap, times(1)).cancelTransitions();
verify(moveGestureDetector, times(1)).interrupt();
// testing subsequent calls
camera.onMoveListener.onMove(moveGestureDetector);
- verify(mapboxMap, times(2)).cancelTransitions();
+ verify(mapboxMap, times(1)).cancelTransitions();
verify(moveGestureDetector, times(1)).interrupt();
}
@@ -413,12 +453,12 @@ public class LocationCameraControllerTest {
camera.setCameraMode(CameraMode.NONE_COMPASS);
camera.onMoveListener.onMove(moveGestureDetector);
- verify(mapboxMap, times(2)).cancelTransitions();
+ verify(mapboxMap, times(1)).cancelTransitions();
verify(moveGestureDetector, times(1)).interrupt();
// testing subsequent calls
camera.onMoveListener.onMove(moveGestureDetector);
- verify(mapboxMap, times(2)).cancelTransitions();
+ verify(mapboxMap, times(1)).cancelTransitions();
verify(moveGestureDetector, times(1)).interrupt();
}