From 4e43b536734afddf4a1100400b35d288ac9f8d26 Mon Sep 17 00:00:00 2001 From: David Iglesias Teixeira Date: Wed, 14 Oct 2020 16:50:10 -0700 Subject: [PATCH 1/3] [google_maps_flutter_web] Fix InfoWindow snippets. --- .../google_maps_flutter_web/CHANGELOG.md | 4 ++++ .../lib/src/convert.dart | 12 ++++++++--- .../google_maps_flutter_web/pubspec.yaml | 4 ++-- .../test/test_driver/markers_integration.dart | 20 +++++++++++++++++++ 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md index 42805c34926d..bb4d3d93730f 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.0+4 + +* Fix crash when InfoWindow title/snippet has links. [Issue](https://github.com/flutter/flutter/issues/67854). + ## 0.1.0+3 * Fix crash when converting initial polylines and polygons. [Issue](https://github.com/flutter/flutter/issues/65152). diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart index 3e1b1f182fc9..6acba62cb3f7 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart +++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart @@ -379,9 +379,9 @@ gmaps.InfoWindowOptions _infoWindowOptionsFromMarker(Marker marker) { } final content = '

' + - sanitizeHtml(marker.infoWindow.title ?? "") + + _doSanitizeHtml(marker.infoWindow.title ?? "") + '

' + - sanitizeHtml(marker.infoWindow.snippet ?? ""); + _doSanitizeHtml(marker.infoWindow.snippet ?? ""); return gmaps.InfoWindowOptions() ..content = content @@ -424,7 +424,7 @@ gmaps.MarkerOptions _markerOptionsFromMarker( marker.position.latitude, marker.position.longitude, ) - ..title = sanitizeHtml(marker.infoWindow?.title ?? "") + ..title = _doSanitizeHtml(marker.infoWindow?.title ?? "") ..zIndex = marker.zIndex ..visible = marker.visible ..opacity = marker.alpha @@ -547,6 +547,12 @@ void _applyCameraUpdate(gmaps.GMap map, CameraUpdate update) { } } +// Pass a noop `adLinkRel` callback to sanitizeHtml. +// This is required until this is fixed: https://github.com/google/dart-neats/issues/71 +String _doSanitizeHtml(String text) { + return sanitizeHtml(text, addLinkRel: (_) => []); +} + // original JS by: Byron Singh (https://stackoverflow.com/a/30541162) gmaps.LatLng _pixelToLatLng(gmaps.GMap map, int x, int y) { final ne = map.bounds.northEast; diff --git a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml index 3fb80d4a5c18..71e5959ca456 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml @@ -1,7 +1,7 @@ name: google_maps_flutter_web description: Web platform implementation of google_maps_flutter homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter -version: 0.1.0+3 +version: 0.1.0+4 flutter: plugin: @@ -19,7 +19,7 @@ dependencies: google_maps_flutter_platform_interface: ^1.0.4 google_maps: ^3.0.0 stream_transform: ^1.2.0 - sanitize_html: ^1.3.0 + sanitize_html: ^1.4.0 dev_dependencies: flutter_test: diff --git a/packages/google_maps_flutter/google_maps_flutter_web/test/test_driver/markers_integration.dart b/packages/google_maps_flutter/google_maps_flutter_web/test/test_driver/markers_integration.dart index 76ddf017985c..75e1af708010 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/test/test_driver/markers_integration.dart +++ b/packages/google_maps_flutter/google_maps_flutter_web/test/test_driver/markers_integration.dart @@ -110,5 +110,25 @@ void main() { expect(controller.markers.length, 1); expect(controller.markers[MarkerId('1')].marker.icon, isNull); }); + + // https://github.com/flutter/flutter/issues/67854 + testWidgets('InfoWindow snippet can have links', + (WidgetTester tester) async { + final markers = { + Marker( + markerId: MarkerId('1'), + infoWindow: InfoWindow( + title: 'title for test', + snippet: 'Go to Google >>>', + ), + ), + }; + + controller.addMarkers(markers); + + expect(controller.markers.length, 1); + expect(controller.markers[MarkerId('1')].marker.title, + equals('title for test')); + }); }); } From b4657fb0f5d8c8acdeb48ac360e66772018fe2bf Mon Sep 17 00:00:00 2001 From: David Iglesias Teixeira Date: Thu, 15 Oct 2020 10:53:22 -0700 Subject: [PATCH 2/3] Use fixed version of sanitize_html --- .../google_maps_flutter_web/lib/src/convert.dart | 12 +++--------- .../google_maps_flutter_web/pubspec.yaml | 2 +- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart index 6acba62cb3f7..3e1b1f182fc9 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart +++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/convert.dart @@ -379,9 +379,9 @@ gmaps.InfoWindowOptions _infoWindowOptionsFromMarker(Marker marker) { } final content = '

' + - _doSanitizeHtml(marker.infoWindow.title ?? "") + + sanitizeHtml(marker.infoWindow.title ?? "") + '

' + - _doSanitizeHtml(marker.infoWindow.snippet ?? ""); + sanitizeHtml(marker.infoWindow.snippet ?? ""); return gmaps.InfoWindowOptions() ..content = content @@ -424,7 +424,7 @@ gmaps.MarkerOptions _markerOptionsFromMarker( marker.position.latitude, marker.position.longitude, ) - ..title = _doSanitizeHtml(marker.infoWindow?.title ?? "") + ..title = sanitizeHtml(marker.infoWindow?.title ?? "") ..zIndex = marker.zIndex ..visible = marker.visible ..opacity = marker.alpha @@ -547,12 +547,6 @@ void _applyCameraUpdate(gmaps.GMap map, CameraUpdate update) { } } -// Pass a noop `adLinkRel` callback to sanitizeHtml. -// This is required until this is fixed: https://github.com/google/dart-neats/issues/71 -String _doSanitizeHtml(String text) { - return sanitizeHtml(text, addLinkRel: (_) => []); -} - // original JS by: Byron Singh (https://stackoverflow.com/a/30541162) gmaps.LatLng _pixelToLatLng(gmaps.GMap map, int x, int y) { final ne = map.bounds.northEast; diff --git a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml index 71e5959ca456..6d0c917631bd 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml @@ -19,7 +19,7 @@ dependencies: google_maps_flutter_platform_interface: ^1.0.4 google_maps: ^3.0.0 stream_transform: ^1.2.0 - sanitize_html: ^1.4.0 + sanitize_html: ^1.4.1 dev_dependencies: flutter_test: From c188d28a4f162d042475943c3a5981c185159f60 Mon Sep 17 00:00:00 2001 From: David Iglesias Date: Thu, 15 Oct 2020 11:45:45 -0700 Subject: [PATCH 3/3] Update CHANGELOG.md Updated changelog description to better reflect the change. --- .../google_maps_flutter/google_maps_flutter_web/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md index bb4d3d93730f..1d40d67ccdf2 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.1.0+4 -* Fix crash when InfoWindow title/snippet has links. [Issue](https://github.com/flutter/flutter/issues/67854). +* Update `package:sanitize_html` to `^1.4.1` to prevent [a crash](https://github.com/flutter/flutter/issues/67854) when InfoWindow title/snippet have links. ## 0.1.0+3