From 5b2d31ee911e5643228a5b99eb9c21b172e0e07c Mon Sep 17 00:00:00 2001 From: Osana Babayan <32496536+osana@users.noreply.github.com> Date: Mon, 30 Oct 2017 16:48:56 -0700 Subject: [PATCH 1/2] [android] MapboxMap.animate() and Mapbox.easeCamera() should throw IllegalArgument (#10321) if non-positive duration is passed in --- .../com/mapbox/mapboxsdk/maps/MapboxMap.java | 7 +++ .../mapbox/mapboxsdk/maps/MapboxMapTest.java | 47 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index ee21ddaaa57..7988a466be3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -846,6 +846,10 @@ public final void easeCamera(final CameraUpdate update, final int durationMs, fi */ public final void easeCamera(final CameraUpdate update, final int durationMs, final boolean easingInterpolator, final MapboxMap.CancelableCallback callback, final boolean isDismissable) { + + if (durationMs <= 0) { + throw new IllegalArgumentException("Null duration passed into easeCamera"); + } new Handler().post(new Runnable() { @Override public void run() { @@ -918,6 +922,9 @@ public final void animateCamera(CameraUpdate update, int durationMs) { */ public final void animateCamera(final CameraUpdate update, final int durationMs, final MapboxMap.CancelableCallback callback) { + if (durationMs <= 0) { + throw new IllegalArgumentException("Null duration passed into animageCamera"); + } new Handler().post(new Runnable() { @Override public void run() { diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java new file mode 100644 index 00000000000..5e9f94db28d --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java @@ -0,0 +1,47 @@ +package com.mapbox.mapboxsdk.maps; + +import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.maps.widgets.MyLocationViewSettings; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.mockito.Mockito.mock; + +public class MapboxMapTest { + + private MapboxMap mapboxMap; + + @Before + public void beforeTest() { + + mapboxMap = new MapboxMap(mock(NativeMapView.class), + mock(Transform.class), + mock(UiSettings.class), + mock(TrackingSettings.class), + mock(MyLocationViewSettings.class), + mock(Projection.class), + mock(MapboxMap.OnRegisterTouchListener.class), + mock(AnnotationManager.class), + mock(CameraChangeDispatcher.class)); + } + + @Test(expected = IllegalArgumentException.class) + public void testAnimateCameraChecksDurationPositive() { + mapboxMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(30.0, 30.0)), + 0, null); + } + + @Test(expected = IllegalArgumentException.class) + public void testEaseCameraChecksDurationPositive() { + mapboxMap.easeCamera(CameraUpdateFactory.newLatLng(new LatLng(30.0, 30.0)), + 0, null); + } + + @After + public void afterTest() { + mapboxMap = null; + } +} From 2068e1da2f489f0ee5ffacaed66e29c84b188e76 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Tue, 31 Oct 2017 13:18:41 -0700 Subject: [PATCH 2/2] [android] - rework ease interactions to take in account possitve duration requirement --- .../main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 8 ++------ .../com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java | 7 +++---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 7988a466be3..6bf8342efb1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -150,12 +150,8 @@ void onRestoreInstanceState(Bundle savedInstanceState) { trackingSettings.onRestoreInstanceState(savedInstanceState); if (cameraPosition != null) { - easeCamera(CameraUpdateFactory.newCameraPosition( - new CameraPosition.Builder(cameraPosition).build()), - 0, - false, - null, - !trackingSettings.isLocationTrackingDisabled() + moveCamera(CameraUpdateFactory.newCameraPosition( + new CameraPosition.Builder(cameraPosition).build()) ); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java index 983ba2550fa..ac91746a2a3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java @@ -49,6 +49,7 @@ *

* Use {@link MyLocationViewSettings} to manipulate the state of this view. *

+ * * @deprecated use location layer plugin from * https://github.com/mapbox/mapbox-plugins-android/tree/master/plugins/locationlayer instead. */ @@ -639,8 +640,7 @@ public void setMyLocationTrackingMode(@MyLocationTracking.Mode int myLocationTra if (location != null) { if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW) { // center map directly - mapboxMap.easeCamera(CameraUpdateFactory.newLatLng(new LatLng(location)), 0, false /*linear interpolator*/, - null, true); + mapboxMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(location))); } else { // do not use interpolated location from tracking mode latLng = null; @@ -1022,8 +1022,7 @@ void updateLatLng(@NonNull Location location) { mapboxMap.easeCamera(CameraUpdateFactory.newCameraPosition(builder.build()), animationDuration, false, null, true); } else { - mapboxMap.easeCamera(CameraUpdateFactory.newCameraPosition(builder.build()), 0, false, null, - true); + mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(builder.build())); } }