[android] cancel camera transitions only when set CameraMode is not None

This commit is contained in:
Łukasz Paczos
2018-12-19 16:03:10 +01:00
parent c621b8100d
commit f3971bd6e7
2 changed files with 52 additions and 8 deletions

View File

@@ -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);

View File

@@ -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;
@@ -123,6 +124,45 @@ public class LocationCameraControllerTest {
verify(internalTrackingChangedListener).onCameraTrackingChanged(cameraMode);
}
@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);
@@ -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();
}