From e4fa1816a71dea9c03dde822eab5cd284df3e5f9 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Thu, 18 Feb 2016 13:31:09 +0100 Subject: [android] #4009 - add tests for tracking settings, optimise architecture to make it testable through unit tests --- .../java/com/mapbox/mapboxsdk/maps/MapView.java | 58 +++++++--------------- .../mapbox/mapboxsdk/maps/TrackingSettings.java | 26 ++++++---- .../mapbox/mapboxsdk/maps/UserLocationView.java | 10 ---- 3 files changed, 32 insertions(+), 62 deletions(-) (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java') diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 2fb83b46ca..8bdffcbd44 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -363,10 +363,11 @@ public class MapView extends FrameLayout { // User did not accept location permissions } + TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings(); //noinspection ResourceType - setMyLocationTrackingMode(savedInstanceState.getInt(MapboxConstants.STATE_MY_LOCATION_TRACKING_MODE, MyLocationTracking.TRACKING_NONE)); + trackingSettings.setMyLocationTrackingMode(savedInstanceState.getInt(MapboxConstants.STATE_MY_LOCATION_TRACKING_MODE, MyLocationTracking.TRACKING_NONE)); //noinspection ResourceType - setMyBearingTrackingMode(savedInstanceState.getInt(MapboxConstants.STATE_MY_BEARING_TRACKING_MODE, MyBearingTracking.NONE)); + trackingSettings.setMyBearingTrackingMode(savedInstanceState.getInt(MapboxConstants.STATE_MY_BEARING_TRACKING_MODE, MyBearingTracking.NONE)); } else { // Force a check for Telemetry validateTelemetryServiceConfigured(); @@ -411,8 +412,12 @@ public class MapView extends FrameLayout { outState.putString(MapboxConstants.STATE_ACCESS_TOKEN, mMapboxMap.getAccessToken()); outState.putLong(MapboxConstants.STATE_DEFAULT_TRANSITION_DURATION, mNativeMapView.getDefaultTransitionDuration()); outState.putBoolean(MapboxConstants.STATE_MY_LOCATION_ENABLED, mMapboxMap.isMyLocationEnabled()); - outState.putInt(MapboxConstants.STATE_MY_LOCATION_TRACKING_MODE, getMyLocationTrackingMode()); - outState.putInt(MapboxConstants.STATE_MY_BEARING_TRACKING_MODE, getMyBearingTrackingMode()); + + + // TrackingSettings + TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings(); + outState.putInt(MapboxConstants.STATE_MY_LOCATION_TRACKING_MODE, trackingSettings.getMyLocationTrackingMode()); + outState.putInt(MapboxConstants.STATE_MY_BEARING_TRACKING_MODE, trackingSettings.getMyBearingTrackingMode()); // UiSettings UiSettings uiSettings = mMapboxMap.getUiSettings(); @@ -1148,7 +1153,7 @@ public class MapView extends FrameLayout { /** * Sets the distance from the edges of the map view’s frame to the edges of the map * view’s logical viewport. - *

+ *

* When the value of this property is equal to {0,0,0,0}, viewport * properties such as `centerCoordinate` assume a viewport that matches the map * view’s frame. Otherwise, those properties are inset, excluding part of the @@ -1416,7 +1421,7 @@ public class MapView extends FrameLayout { /** * Sets Bearing in degrees - *

+ *

* NOTE: Used by UserLocationView * * @param bearing Bearing in degrees @@ -1550,7 +1555,7 @@ public class MapView extends FrameLayout { } // Single finger double tap - if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { + if (mMapboxMap.getTrackingSettings().isLocationTrackingDisabled()) { // Zoom in on gesture zoom(true, e.getX(), e.getY()); } else { @@ -1775,7 +1780,7 @@ public class MapView extends FrameLayout { mQuickZoom = !mTwoTap; // Scale the map - if (mMapboxMap.getUiSettings().isScrollGesturesEnabled() && !mQuickZoom && mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { + if (mMapboxMap.getUiSettings().isScrollGesturesEnabled() && !mQuickZoom && mMapboxMap.getTrackingSettings().isLocationTrackingDisabled()) { // around gesture mNativeMapView.scaleBy(detector.getScaleFactor(), detector.getFocusX() / mScreenDensity, detector.getFocusY() / mScreenDensity); } else { @@ -1853,7 +1858,7 @@ public class MapView extends FrameLayout { bearing += detector.getRotationDegreesDelta(); // Rotate the map - if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { + if (mMapboxMap.getTrackingSettings().isLocationTrackingDisabled()) { // around gesture mNativeMapView.setBearing(bearing, detector.getFocusX() / mScreenDensity, @@ -2379,7 +2384,6 @@ public class MapView extends FrameLayout { if (myLocationTrackingMode != MyLocationTracking.TRACKING_NONE && !mMapboxMap.isMyLocationEnabled()) { mMapboxMap.setMyLocationEnabled(true); } - mUserLocationView.setMyLocationTrackingMode(myLocationTrackingMode); MapboxMap.OnMyLocationTrackingModeChangeListener listener = mMapboxMap.getOnMyLocationTrackingModeChangeListener(); if (listener != null) { @@ -2387,19 +2391,6 @@ public class MapView extends FrameLayout { } } - /** - * Returns the current user location tracking mode. - * - * @return The current user location tracking mode. - * One of the values from {@link MyLocationTracking.Mode}. - * @see MyLocationTracking.Mode - */ - @UiThread - @MyLocationTracking.Mode - int getMyLocationTrackingMode() { - return mUserLocationView.getMyLocationTrackingMode(); - } - /** *

* Set the current my bearing tracking mode. @@ -2426,26 +2417,11 @@ public class MapView extends FrameLayout { } } - /** - * Returns the current user bearing tracking mode. - * See {@link MyBearingTracking} for possible return values. - * - * @return the current user bearing tracking mode. - * @see MyBearingTracking - */ - @UiThread - @MyLocationTracking.Mode - int getMyBearingTrackingMode() { - //noinspection ResourceType - return mUserLocationView.getMyBearingTrackingMode(); - } - private void resetTrackingModes() { try { - //noinspection ResourceType - setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE); - //noinspection ResourceType - setMyBearingTrackingMode(MyBearingTracking.NONE); + TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings(); + trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE); + trackingSettings.setMyBearingTrackingMode(MyBearingTracking.NONE); } catch (SecurityException ignore) { // User did not accept location permissions } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java index 57faefb92e..543ff19e56 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java @@ -1,8 +1,6 @@ package com.mapbox.mapboxsdk.maps; -import android.Manifest; import android.support.annotation.NonNull; -import android.support.annotation.RequiresPermission; import android.support.annotation.UiThread; import com.mapbox.mapboxsdk.constants.MyBearingTracking; @@ -14,6 +12,12 @@ public class TrackingSettings { private UiSettings uiSettings; private boolean dismissTrackingOnGesture = true; + @MyLocationTracking.Mode + private int mMyLocationTrackingMode; + + @MyBearingTracking.Mode + private int mMyBearingTrackingMode; + TrackingSettings(@NonNull MapView mapView, UiSettings uiSettings) { this.mapView = mapView; this.uiSettings = uiSettings; @@ -33,10 +37,8 @@ public class TrackingSettings { * @see MyLocationTracking */ @UiThread - @RequiresPermission(anyOf = { - Manifest.permission.ACCESS_COARSE_LOCATION, - Manifest.permission.ACCESS_FINE_LOCATION}) public void setMyLocationTrackingMode(@MyLocationTracking.Mode int myLocationTrackingMode) { + mMyLocationTrackingMode = myLocationTrackingMode; mapView.setMyLocationTrackingMode(myLocationTrackingMode); validateGesturesForTrackingModes(); } @@ -51,7 +53,7 @@ public class TrackingSettings { @UiThread @MyLocationTracking.Mode public int getMyLocationTrackingMode() { - return mapView.getMyLocationTrackingMode(); + return mMyLocationTrackingMode; } /** @@ -70,10 +72,8 @@ public class TrackingSettings { * @see MyBearingTracking */ @UiThread - @RequiresPermission(anyOf = { - Manifest.permission.ACCESS_COARSE_LOCATION, - Manifest.permission.ACCESS_FINE_LOCATION}) public void setMyBearingTrackingMode(@MyBearingTracking.Mode int myBearingTrackingMode) { + mMyBearingTrackingMode = myBearingTrackingMode; mapView.setMyBearingTrackingMode(myBearingTrackingMode); } @@ -87,7 +87,7 @@ public class TrackingSettings { @UiThread @MyLocationTracking.Mode public int getMyBearingTrackingMode() { - return mapView.getMyBearingTrackingMode(); + return mMyBearingTrackingMode; } public boolean isDismissTrackingOnGesture() { @@ -100,7 +100,7 @@ public class TrackingSettings { } private void validateGesturesForTrackingModes() { - if(!dismissTrackingOnGesture) { + if (!dismissTrackingOnGesture) { int myLocationTrackingMode = getMyLocationTrackingMode(); int myBearingTrackingMode = getMyBearingTrackingMode(); @@ -114,4 +114,8 @@ public class TrackingSettings { } } } + + public boolean isLocationTrackingDisabled(){ + return mMyLocationTrackingMode == MyLocationTracking.TRACKING_NONE; + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java index 70976dde7c..c90a35803c 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java @@ -255,11 +255,6 @@ public final class UserLocationView extends View { } } - @MyLocationTracking.Mode - public int getMyLocationTrackingMode() { - return mMyLocationTrackingMode; - } - @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); @@ -412,11 +407,6 @@ public final class UserLocationView extends View { update(); } - @MyBearingTracking.Mode - public int getMyBearingTrackingMode() { - return mMyBearingTrackingMode; - } - private class MyBearingListener implements SensorEventListener { private SensorManager mSensorManager; -- cgit v1.2.1