diff options
author | Peng Liu <peng.liu@mapbox.com> | 2019-09-12 18:17:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-12 18:17:45 +0300 |
commit | 69bc5244eaaecb708e8a492f7017a451245d92bb (patch) | |
tree | eb2fa3497f03ae332272786d16133c49756f238f /platform | |
parent | 1b35d39cc1ea5b89545f79f5d917fab5c35fa493 (diff) | |
download | qtlocation-mapboxgl-69bc5244eaaecb708e8a492f7017a451245d92bb.tar.gz |
[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.
Diffstat (limited to 'platform')
6 files changed, 24 insertions, 10 deletions
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<String, Bitmap> 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), |