From e8c5bd07c6ac3e5d9a0cd7860b588ff8d454f6f8 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Wed, 4 May 2022 21:19:05 -0700 Subject: [PATCH] fix: Ensure CameraPositionState map reference clears when GoogleMap leaves composition. Change-Id: Iccf615e1a468ea7fbddb652052cec51b5d98a763 --- .../com/google/maps/android/compose/GoogleMapViewTests.kt | 8 ++++++++ .../java/com/google/maps/android/compose/MapApplier.kt | 3 +++ 2 files changed, 11 insertions(+) diff --git a/app/src/androidTest/java/com/google/maps/android/compose/GoogleMapViewTests.kt b/app/src/androidTest/java/com/google/maps/android/compose/GoogleMapViewTests.kt index 80ee4a3a..e2d6a22f 100644 --- a/app/src/androidTest/java/com/google/maps/android/compose/GoogleMapViewTests.kt +++ b/app/src/androidTest/java/com/google/maps/android/compose/GoogleMapViewTests.kt @@ -208,6 +208,14 @@ class GoogleMapViewTests { assertTrue(mapLoaded) } + @Test + fun testCameraPositionStateMapClears() { + // TODO(Complete) +// composeTestRule.setContent { +// } +// assertTrue(cameraPositionState.map) + } + private fun zoom( shouldAnimate: Boolean, zoomIn: Boolean, diff --git a/maps-compose/src/main/java/com/google/maps/android/compose/MapApplier.kt b/maps-compose/src/main/java/com/google/maps/android/compose/MapApplier.kt index 09b68361..2940046d 100644 --- a/maps-compose/src/main/java/com/google/maps/android/compose/MapApplier.kt +++ b/maps-compose/src/main/java/com/google/maps/android/compose/MapApplier.kt @@ -26,6 +26,7 @@ import com.google.android.gms.maps.model.Polyline internal interface MapNode { fun onAttached() {} fun onRemoved() {} + fun onCleared() {} } private object MapNodeRoot : MapNode @@ -43,6 +44,8 @@ internal class MapApplier( override fun onClear() { map.clear() + decorations.forEach { it.onCleared() } + decorations.clear() } override fun insertBottomUp(index: Int, instance: MapNode) {