From 69bc5244eaaecb708e8a492f7017a451245d92bb Mon Sep 17 00:00:00 2001 From: Peng Liu Date: Thu, 12 Sep 2019 18:17:45 +0300 Subject: [android] Fix MapSnapshotter regression and add activity sanity tests (#15580) * [android] Include more generated sanity tests for Android test app. * [android] Add null check for camera position padding. * [android] Skip map load tests if no mapView is found, include more generated sanity tests for Android test app. * [android] Set mapboxMap to null during the mapView destroy process, fix failed sanity tests. * [android] Add file source related activities to the sanity test exclude list. * [android] Fixes according to @tobrun's review. * [android] Add more activities to exclude list, keep MapSnapshotterActivity for regression test. --- .../java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java | 12 +++++++++++- .../testapp/activity/fragment/MapFragmentActivity.java | 4 +++- .../testapp/activity/location/LocationFragmentActivity.kt | 2 +- .../testapp/activity/style/SymbolGeneratorActivity.java | 7 ++++++- platform/android/scripts/exclude-activity-gen.json | 5 +---- platform/android/src/map/camera_position.cpp | 4 ++-- 6 files changed, 24 insertions(+), 10 deletions(-) (limited to 'platform') diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java index 45dac23611..b6c16c8147 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java @@ -4,6 +4,7 @@ import android.content.Context; import android.support.annotation.CallSuper; import android.support.annotation.UiThread; import android.support.test.rule.ActivityTestRule; +import android.support.test.rule.GrantPermissionRule; import com.mapbox.mapboxsdk.AppCenter; import com.mapbox.mapboxsdk.Mapbox; @@ -35,6 +36,10 @@ public abstract class BaseTest extends AppCenter { @Rule public TestName testName = new TestName(); + @Rule + public GrantPermissionRule grantLocationPermissionRule = GrantPermissionRule + .grant(android.Manifest.permission.ACCESS_FINE_LOCATION); + protected MapboxMap mapboxMap; protected MapView mapView; private final CountDownLatch latch = new CountDownLatch(1); @@ -75,7 +80,12 @@ public abstract class BaseTest extends AppCenter { try { rule.runOnUiThread(() -> { mapView = rule.getActivity().findViewById(R.id.mapView); - mapView.getMapAsync(this::initMap); + if (mapView != null) { + mapView.getMapAsync(this::initMap); + } else { + Timber.w("Skipping map load test since mapView is not found."); + latch.countDown(); + } }); } catch (Throwable throwable) { throwable.printStackTrace(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java index 40ea7509b1..a0e8b31fcd 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java @@ -81,7 +81,9 @@ public class MapFragmentActivity extends AppCompatActivity implements MapFragmen @Override protected void onDestroy() { super.onDestroy(); - mapView.removeOnDidFinishRenderingFrameListener(this); + if (mapView != null) { + mapView.removeOnDidFinishRenderingFrameListener(this); + } } @Override diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt index ff2afb50c5..7e18cbfa2f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt @@ -116,7 +116,7 @@ class LocationFragmentActivity : AppCompatActivity() { } override fun onSuccess(result: LocationEngineResult?) { - mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(result?.lastLocation), 12.0)) + if (!mapView.isDestroyed) mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(result?.lastLocation), 12.0)) } override fun onFailure(exception: Exception) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java index 24bfe62e75..e80d6fe3e1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java @@ -362,7 +362,12 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR @Override protected void onPostExecute(HashMap bitmapHashMap) { super.onPostExecute(bitmapHashMap); - mapboxMap.getStyle().addImagesAsync(bitmapHashMap); + mapboxMap.getStyle(new Style.OnStyleLoaded() { + @Override + public void onStyleLoaded(@NonNull Style style) { + style.addImagesAsync(bitmapHashMap); + } + }); } } } \ No newline at end of file diff --git a/platform/android/scripts/exclude-activity-gen.json b/platform/android/scripts/exclude-activity-gen.json index 0f5bb81b55..ab84957e34 100644 --- a/platform/android/scripts/exclude-activity-gen.json +++ b/platform/android/scripts/exclude-activity-gen.json @@ -5,7 +5,6 @@ "MapSnapshotterLocalStyleActivity", "LatLngBoundsActivity", "BottomSheetActivity", - "MapSnapshotterActivity", "MockLocationEngine", "DeleteRegionActivity", "RealTimeGeoJsonActivity", @@ -50,7 +49,5 @@ "EspressoTestActivity", "FragmentBackStackActivity", "ChildFragmentMapInDialogActivity", - "PerformanceMeasurementActivity", - "DownloadRegionActivity", - "CacheManagementActivity" + "PerformanceMeasurementActivity" ] diff --git a/platform/android/src/map/camera_position.cpp b/platform/android/src/map/camera_position.cpp index 03aca79bda..cbf5f2e408 100644 --- a/platform/android/src/map/camera_position.cpp +++ b/platform/android/src/map/camera_position.cpp @@ -50,8 +50,8 @@ mbgl::CameraOptions CameraPosition::getCameraOptions(jni::JNIEnv& env, const jni return mbgl::CameraOptions { center, - EdgeInsets {padding.Get(env, 1) * pixelRatio, padding.Get(env, 0) * pixelRatio, - padding.Get(env, 3) * pixelRatio, padding.Get(env, 2) * pixelRatio}, + padding ? EdgeInsets {padding.Get(env, 1) * pixelRatio, padding.Get(env, 0) * pixelRatio, + padding.Get(env, 3) * pixelRatio, padding.Get(env, 2) * pixelRatio} : (EdgeInsets) {}, {}, position.Get(env, zoom), position.Get(env, bearing), -- cgit v1.2.1