diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_ios/CHANGELOG.md index 3338803175e..8fee3b952a1 100644 --- a/packages/google_maps_flutter/google_maps_flutter_ios/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter_ios/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.17.2 + +* Fixes a regression in custom marker icon handling. + ## 2.17.1 * Refactors code for improved testability. diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/example/ios/RunnerTests/GoogleMapsGroundOverlayControllerTests.m b/packages/google_maps_flutter/google_maps_flutter_ios/example/ios/RunnerTests/GoogleMapsGroundOverlayControllerTests.m index 14a607c8487..158d050c9b3 100644 --- a/packages/google_maps_flutter/google_maps_flutter_ios/example/ios/RunnerTests/GoogleMapsGroundOverlayControllerTests.m +++ b/packages/google_maps_flutter/google_maps_flutter_ios/example/ios/RunnerTests/GoogleMapsGroundOverlayControllerTests.m @@ -8,6 +8,7 @@ #import "PartiallyMockedMapView.h" #import "TestAssetProvider.h" +#import "TestMapEventHandler.h" /// A GMSGroundOverlay that ensures that property updates are made before the map is set. @interface PropertyOrderValidatingGroundOverlay : GMSGroundOverlay { @@ -211,6 +212,21 @@ - (void)testUpdateGroundOverlaySetsVisibilityLast { XCTAssertTrue(groundOverlay.hasSetMap); } +- (void)testAssetProviderIsRetained { + FLTGroundOverlaysController *groundOverlayController; + __weak TestAssetProvider *weakAssetProvider; + @autoreleasepool { + TestAssetProvider *assetProvider = [[TestAssetProvider alloc] init]; + weakAssetProvider = assetProvider; + groundOverlayController = [[FLTGroundOverlaysController alloc] + initWithMapView:[GoogleMapsGroundOverlayControllerTests mapView] + eventDelegate:[[TestMapEventHandler alloc] init] + assetProvider:assetProvider]; + } + XCTAssertNotNil(groundOverlayController); + XCTAssertNotNil(weakAssetProvider); +} + /// Returns a simple map view to add map objects to. + (GMSMapView *)mapView { GMSMapViewOptions *mapViewOptions = [[GMSMapViewOptions alloc] init]; diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/example/ios/RunnerTests/GoogleMapsMarkerControllerTests.m b/packages/google_maps_flutter/google_maps_flutter_ios/example/ios/RunnerTests/GoogleMapsMarkerControllerTests.m index a34b11ae3cc..9e651429114 100644 --- a/packages/google_maps_flutter/google_maps_flutter_ios/example/ios/RunnerTests/GoogleMapsMarkerControllerTests.m +++ b/packages/google_maps_flutter/google_maps_flutter_ios/example/ios/RunnerTests/GoogleMapsMarkerControllerTests.m @@ -268,6 +268,23 @@ - (void)testUpdateMarkerSetsVisibilityLast { XCTAssertTrue(marker.hasSetMap); } +- (void)testAssetProviderIsRetained { + FLTMarkersController *markerController; + __weak TestAssetProvider *weakAssetProvider; + @autoreleasepool { + TestAssetProvider *assetProvider = [[TestAssetProvider alloc] init]; + weakAssetProvider = assetProvider; + + markerController = + [[FLTMarkersController alloc] initWithMapView:[GoogleMapsMarkerControllerTests mapView] + eventDelegate:[[TestMapEventHandler alloc] init] + clusterManagersController:nil + assetProvider:assetProvider]; + } + XCTAssertNotNil(markerController); + XCTAssertNotNil(weakAssetProvider, @"AssetProvider should be retained by the marker controller"); +} + @end @implementation PropertyOrderValidatingMarker diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/ios/google_maps_flutter_ios/Sources/google_maps_flutter_ios/FGMGroundOverlayController.m b/packages/google_maps_flutter/google_maps_flutter_ios/ios/google_maps_flutter_ios/Sources/google_maps_flutter_ios/FGMGroundOverlayController.m index f1fe7281dc0..c5e45188510 100644 --- a/packages/google_maps_flutter/google_maps_flutter_ios/ios/google_maps_flutter_ios/Sources/google_maps_flutter_ios/FGMGroundOverlayController.m +++ b/packages/google_maps_flutter/google_maps_flutter_ios/ios/google_maps_flutter_ios/Sources/google_maps_flutter_ios/FGMGroundOverlayController.m @@ -89,7 +89,7 @@ @interface FLTGroundOverlaysController () @property(weak, nonatomic) NSObject *eventDelegate; /// Asset provider used to load images. -@property(weak, nonatomic) NSObject *assetProvider; +@property(strong, nonatomic) NSObject *assetProvider; /// The map view used to generate the controllers. @property(weak, nonatomic) GMSMapView *mapView; diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/ios/google_maps_flutter_ios/Sources/google_maps_flutter_ios/GoogleMapMarkerController.m b/packages/google_maps_flutter/google_maps_flutter_ios/ios/google_maps_flutter_ios/Sources/google_maps_flutter_ios/GoogleMapMarkerController.m index 9d061eec8b0..09a05db2840 100644 --- a/packages/google_maps_flutter/google_maps_flutter_ios/ios/google_maps_flutter_ios/Sources/google_maps_flutter_ios/GoogleMapMarkerController.m +++ b/packages/google_maps_flutter/google_maps_flutter_ios/ios/google_maps_flutter_ios/Sources/google_maps_flutter_ios/GoogleMapMarkerController.m @@ -113,7 +113,7 @@ @interface FLTMarkersController () @property(weak, nonatomic) NSObject *eventDelegate; /// Controller for adding/removing/fetching cluster managers @property(weak, nonatomic, nullable) FGMClusterManagersController *clusterManagersController; -@property(weak, nonatomic) NSObject *assetProvider; +@property(strong, nonatomic) NSObject *assetProvider; @property(weak, nonatomic) GMSMapView *mapView; @end diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_ios/pubspec.yaml index f971ae9b567..b9c5ab33e51 100644 --- a/packages/google_maps_flutter/google_maps_flutter_ios/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter_ios/pubspec.yaml @@ -2,7 +2,7 @@ name: google_maps_flutter_ios description: iOS implementation of the google_maps_flutter plugin. repository: https://github.com/flutter/packages/tree/main/packages/google_maps_flutter/google_maps_flutter_ios issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22 -version: 2.17.1 +version: 2.17.2 environment: sdk: ^3.9.0