Skip to content

Commit de83e5b

Browse files
authored
Drop proxy binary messenger (#715)
* Remove ProxyBinaryMessenger - Adopt Pigeon message channel suffix instead of own custom proxy binary messenger
1 parent 18f4818 commit de83e5b

33 files changed

+290
-365
lines changed

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/EventHandler.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ import java.util.Date
3737
class MapboxEventHandler(
3838
private val eventProvider: Observable,
3939
binaryMessenger: BinaryMessenger,
40-
eventTypes: List<Long>
40+
eventTypes: List<Long>,
41+
channelSuffix: String,
4142
) : MethodChannel.MethodCallHandler {
4243
private val channel: MethodChannel
4344
private val cancellables = HashSet<Cancelable>()
@@ -47,7 +48,8 @@ class MapboxEventHandler(
4748
.create()
4849

4950
init {
50-
channel = MethodChannel(binaryMessenger, "com.mapbox.maps.flutter.map_events")
51+
val pigeon_channelSuffix = if (channelSuffix.isNotEmpty()) ".$channelSuffix" else ""
52+
channel = MethodChannel(binaryMessenger, "com.mapbox.maps.flutter.map_events$pigeon_channelSuffix")
5153
channel.setMethodCallHandler(this)
5254

5355
eventTypes.mapNotNull { _MapEvent.ofRaw(it.toInt()) }

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/GestureController.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ class GestureController(private val mapView: MapView, private val context: Conte
3232
private var onLongClickListener: OnMapLongClickListener? = null
3333
private var onMoveListener: OnMoveListener? = null
3434

35-
fun addListeners(messenger: BinaryMessenger) {
36-
fltGestureListener = GestureListener(messenger)
35+
fun addListeners(messenger: BinaryMessenger, channelSuffix: String) {
36+
fltGestureListener = GestureListener(messenger, channelSuffix)
3737

3838
removeListeners()
3939

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/MapboxMapController.kt

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ class MapboxMapController(
4747

4848
private var mapView: MapView? = null
4949
private var mapboxMap: MapboxMap? = null
50+
5051
private val methodChannel: MethodChannel
52+
private val messenger: BinaryMessenger
53+
private val channelSuffix: String
54+
5155
private val styleController: StyleController
5256
private val cameraController: CameraController
5357
private val projectionController: MapProjectionController
@@ -61,7 +65,6 @@ class MapboxMapController(
6165
private val scaleBarController: ScaleBarController
6266
private val compassController: CompassController
6367

64-
private val proxyBinaryMessenger = ProxyBinaryMessenger(messenger, "$channelSuffix")
6568
private val eventHandler: MapboxEventHandler
6669

6770
/*
@@ -122,11 +125,14 @@ class MapboxMapController(
122125
private var lifecycleHelper: LifecycleHelper? = null
123126

124127
init {
128+
this.messenger = messenger
129+
this.channelSuffix = channelSuffix.toString()
130+
125131
val mapView = MapView(context, mapInitOptions)
126132
val mapboxMap = mapView.mapboxMap
127133
this.mapView = mapView
128134
this.mapboxMap = mapboxMap
129-
eventHandler = MapboxEventHandler(mapboxMap.styleManager, proxyBinaryMessenger, eventTypes)
135+
eventHandler = MapboxEventHandler(mapboxMap.styleManager, messenger, eventTypes, this.channelSuffix)
130136
styleController = StyleController(context, mapboxMap)
131137
cameraController = CameraController(mapboxMap, context)
132138
projectionController = MapProjectionController(mapboxMap)
@@ -142,20 +148,20 @@ class MapboxMapController(
142148

143149
changeUserAgent(pluginVersion)
144150

145-
StyleManager.setUp(proxyBinaryMessenger, styleController)
146-
_CameraManager.setUp(proxyBinaryMessenger, cameraController)
147-
Projection.setUp(proxyBinaryMessenger, projectionController)
148-
_MapInterface.setUp(proxyBinaryMessenger, mapInterfaceController)
149-
_AnimationManager.setUp(proxyBinaryMessenger, animationController)
150-
annotationController.setup(proxyBinaryMessenger)
151-
_LocationComponentSettingsInterface.setUp(proxyBinaryMessenger, locationComponentController)
152-
LogoSettingsInterface.setUp(proxyBinaryMessenger, logoController)
153-
GesturesSettingsInterface.setUp(proxyBinaryMessenger, gestureController)
154-
AttributionSettingsInterface.setUp(proxyBinaryMessenger, attributionController)
155-
ScaleBarSettingsInterface.setUp(proxyBinaryMessenger, scaleBarController)
156-
CompassSettingsInterface.setUp(proxyBinaryMessenger, compassController)
157-
158-
methodChannel = MethodChannel(proxyBinaryMessenger, "plugins.flutter.io")
151+
StyleManager.setUp(messenger, styleController, this.channelSuffix)
152+
_CameraManager.setUp(messenger, cameraController, this.channelSuffix)
153+
Projection.setUp(messenger, projectionController, this.channelSuffix)
154+
_MapInterface.setUp(messenger, mapInterfaceController, this.channelSuffix)
155+
_AnimationManager.setUp(messenger, animationController, this.channelSuffix)
156+
annotationController.setup(messenger, this.channelSuffix)
157+
_LocationComponentSettingsInterface.setUp(messenger, locationComponentController, this.channelSuffix)
158+
LogoSettingsInterface.setUp(messenger, logoController, this.channelSuffix)
159+
GesturesSettingsInterface.setUp(messenger, gestureController, this.channelSuffix)
160+
AttributionSettingsInterface.setUp(messenger, attributionController, this.channelSuffix)
161+
ScaleBarSettingsInterface.setUp(messenger, scaleBarController, this.channelSuffix)
162+
CompassSettingsInterface.setUp(messenger, compassController, this.channelSuffix)
163+
164+
methodChannel = MethodChannel(messenger, "plugins.flutter.io.$channelSuffix")
159165
methodChannel.setMethodCallHandler(this)
160166
}
161167

@@ -191,18 +197,18 @@ class MapboxMapController(
191197
mapView = null
192198
mapboxMap = null
193199
methodChannel.setMethodCallHandler(null)
194-
StyleManager.setUp(proxyBinaryMessenger, null)
195-
_CameraManager.setUp(proxyBinaryMessenger, null)
196-
Projection.setUp(proxyBinaryMessenger, null)
197-
_MapInterface.setUp(proxyBinaryMessenger, null)
198-
_AnimationManager.setUp(proxyBinaryMessenger, null)
199-
annotationController.dispose(proxyBinaryMessenger)
200-
_LocationComponentSettingsInterface.setUp(proxyBinaryMessenger, null)
201-
LogoSettingsInterface.setUp(proxyBinaryMessenger, null)
202-
GesturesSettingsInterface.setUp(proxyBinaryMessenger, null)
203-
CompassSettingsInterface.setUp(proxyBinaryMessenger, null)
204-
ScaleBarSettingsInterface.setUp(proxyBinaryMessenger, null)
205-
AttributionSettingsInterface.setUp(proxyBinaryMessenger, null)
200+
StyleManager.setUp(messenger, null, channelSuffix)
201+
_CameraManager.setUp(messenger, null, channelSuffix)
202+
Projection.setUp(messenger, null, channelSuffix)
203+
_MapInterface.setUp(messenger, null, channelSuffix)
204+
_AnimationManager.setUp(messenger, null, channelSuffix)
205+
annotationController.dispose(messenger, channelSuffix)
206+
_LocationComponentSettingsInterface.setUp(messenger, null, channelSuffix)
207+
LogoSettingsInterface.setUp(messenger, null, channelSuffix)
208+
GesturesSettingsInterface.setUp(messenger, null, channelSuffix)
209+
CompassSettingsInterface.setUp(messenger, null, channelSuffix)
210+
ScaleBarSettingsInterface.setUp(messenger, null, channelSuffix)
211+
AttributionSettingsInterface.setUp(messenger, null, channelSuffix)
206212
}
207213

208214
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
@@ -214,7 +220,7 @@ class MapboxMapController(
214220
annotationController.handleRemoveManager(call, result)
215221
}
216222
"gesture#add_listeners" -> {
217-
gestureController.addListeners(proxyBinaryMessenger)
223+
gestureController.addListeners(messenger, channelSuffix)
218224
result.success(null)
219225
}
220226
"gesture#remove_listeners" -> {

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/ProxyBinaryMessenger.kt

Lines changed: 0 additions & 27 deletions
This file was deleted.

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/annotation/AnnotationController.kt

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ class AnnotationController(private val mapView: MapView) :
2222
private val circleAnnotationController = CircleAnnotationController(this)
2323
private val polygonAnnotationController = PolygonAnnotationController(this)
2424
private val polylineAnnotationController = PolylineAnnotationController(this)
25-
private lateinit var onPointAnnotationClickListener: OnPointAnnotationClickListener
26-
private lateinit var onPolygonAnnotationClickListener: OnPolygonAnnotationClickListener
27-
private lateinit var onPolylineAnnotationController: OnPolylineAnnotationClickListener
28-
private lateinit var onCircleAnnotationClickListener: OnCircleAnnotationClickListener
25+
private var onPointAnnotationClickListener: OnPointAnnotationClickListener? = null
26+
private var onPolygonAnnotationClickListener: OnPolygonAnnotationClickListener? = null
27+
private var onPolylineAnnotationClickListener: OnPolylineAnnotationClickListener? = null
28+
private var onCircleAnnotationClickListener: OnCircleAnnotationClickListener? = null
2929
private var index = 0
3030
fun handleCreateManager(call: MethodCall, result: MethodChannel.Result) {
3131
val id = call.argument<String>("id") ?: (index++).toString()
@@ -41,7 +41,7 @@ class AnnotationController(private val mapView: MapView) :
4141
mapView.annotations.createCircleAnnotationManager(AnnotationConfig(belowLayerId, id, id)).apply {
4242
this.addClickListener(
4343
com.mapbox.maps.plugin.annotation.generated.OnCircleAnnotationClickListener { annotation ->
44-
onCircleAnnotationClickListener.onCircleAnnotationClick(annotation.toFLTCircleAnnotation()) {}
44+
onCircleAnnotationClickListener?.onCircleAnnotationClick(annotation.toFLTCircleAnnotation()) {}
4545
true
4646
}
4747
)
@@ -51,7 +51,7 @@ class AnnotationController(private val mapView: MapView) :
5151
mapView.annotations.createPointAnnotationManager(AnnotationConfig(belowLayerId, id, id)).apply {
5252
this.addClickListener(
5353
com.mapbox.maps.plugin.annotation.generated.OnPointAnnotationClickListener { annotation ->
54-
onPointAnnotationClickListener.onPointAnnotationClick(annotation.toFLTPointAnnotation()) {}
54+
onPointAnnotationClickListener?.onPointAnnotationClick(annotation.toFLTPointAnnotation()) {}
5555
true
5656
}
5757
)
@@ -61,7 +61,7 @@ class AnnotationController(private val mapView: MapView) :
6161
mapView.annotations.createPolygonAnnotationManager(AnnotationConfig(belowLayerId, id, id)).apply {
6262
this.addClickListener(
6363
com.mapbox.maps.plugin.annotation.generated.OnPolygonAnnotationClickListener { annotation ->
64-
onPolygonAnnotationClickListener.onPolygonAnnotationClick(annotation.toFLTPolygonAnnotation()) {}
64+
onPolygonAnnotationClickListener?.onPolygonAnnotationClick(annotation.toFLTPolygonAnnotation()) {}
6565
true
6666
}
6767
)
@@ -71,7 +71,7 @@ class AnnotationController(private val mapView: MapView) :
7171
mapView.annotations.createPolylineAnnotationManager(AnnotationConfig(belowLayerId, id, id)).apply {
7272
this.addClickListener(
7373
com.mapbox.maps.plugin.annotation.generated.OnPolylineAnnotationClickListener { annotation ->
74-
onPolylineAnnotationController.onPolylineAnnotationClick(annotation.toFLTPolylineAnnotation()) {}
74+
onPolylineAnnotationClickListener?.onPolylineAnnotationClick(annotation.toFLTPolylineAnnotation()) {}
7575
true
7676
}
7777
)
@@ -94,31 +94,35 @@ class AnnotationController(private val mapView: MapView) :
9494
result.success(null)
9595
}
9696

97-
fun setup(messenger: BinaryMessenger) {
98-
onPointAnnotationClickListener = OnPointAnnotationClickListener(messenger)
99-
onCircleAnnotationClickListener = OnCircleAnnotationClickListener(messenger)
100-
onPolygonAnnotationClickListener = OnPolygonAnnotationClickListener(messenger)
101-
onPolylineAnnotationController = OnPolylineAnnotationClickListener(messenger)
102-
_PointAnnotationMessenger.setUp(messenger, pointAnnotationController)
97+
fun setup(messenger: BinaryMessenger, channelSuffix: String) {
98+
onPointAnnotationClickListener = OnPointAnnotationClickListener(messenger, channelSuffix)
99+
onCircleAnnotationClickListener = OnCircleAnnotationClickListener(messenger, channelSuffix)
100+
onPolygonAnnotationClickListener = OnPolygonAnnotationClickListener(messenger, channelSuffix)
101+
onPolylineAnnotationClickListener = OnPolylineAnnotationClickListener(messenger, channelSuffix)
102+
_PointAnnotationMessenger.setUp(messenger, pointAnnotationController, channelSuffix)
103103
_CircleAnnotationMessenger.setUp(
104104
messenger,
105-
circleAnnotationController
105+
circleAnnotationController, channelSuffix
106106
)
107107
_PolylineAnnotationMessenger.setUp(
108108
messenger,
109-
polylineAnnotationController
109+
polylineAnnotationController, channelSuffix
110110
)
111111
_PolygonAnnotationMessenger.setUp(
112112
messenger,
113-
polygonAnnotationController
113+
polygonAnnotationController, channelSuffix
114114
)
115115
}
116116

117-
fun dispose(messenger: BinaryMessenger) {
118-
_PointAnnotationMessenger.setUp(messenger, null)
119-
_CircleAnnotationMessenger.setUp(messenger, null)
120-
_PolylineAnnotationMessenger.setUp(messenger, null)
121-
_PolygonAnnotationMessenger.setUp(messenger, null)
117+
fun dispose(messenger: BinaryMessenger, channelSuffix: String) {
118+
_PointAnnotationMessenger.setUp(messenger, null, channelSuffix)
119+
_CircleAnnotationMessenger.setUp(messenger, null, channelSuffix)
120+
_PolylineAnnotationMessenger.setUp(messenger, null, channelSuffix)
121+
_PolygonAnnotationMessenger.setUp(messenger, null, channelSuffix)
122+
onPointAnnotationClickListener = null
123+
onCircleAnnotationClickListener = null
124+
onPolygonAnnotationClickListener = null
125+
onPolylineAnnotationClickListener = null
122126
}
123127

124128
override fun getManager(managerId: String): AnnotationManager<*, *, *, *, *, *, *> {

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/offline/OfflineController.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@ import io.flutter.plugin.common.BinaryMessenger
1313
import io.flutter.plugin.common.EventChannel
1414
import io.flutter.plugin.common.EventChannel.StreamHandler
1515

16-
private const val EVENT_CHANNEL_PREFIX = "com.mapbox.maps.flutter/offline"
17-
1816
class OfflineController(
1917
private val context: Context,
20-
private val messenger: BinaryMessenger
18+
private val messenger: BinaryMessenger,
19+
private val channelSuffix: String,
2120
) : _OfflineManager {
2221

2322
private val offlineManager = OfflineManager()
@@ -57,7 +56,7 @@ class OfflineController(
5756
}
5857

5958
override fun addStylePackLoadProgressListener(styleURI: String) {
60-
val eventChannel = EventChannel(messenger, "com.mapbox.maps.flutter/offline/$styleURI")
59+
val eventChannel = EventChannel(messenger, "com.mapbox.maps.flutter/$channelSuffix/$styleURI")
6160
eventChannel.setStreamHandler(
6261
object : StreamHandler {
6362
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/offline/OfflineMapInstanceManager.kt

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.mapbox.maps.mapbox_maps.offline
33
import android.content.Context
44
import com.mapbox.common.TileStore
55
import com.mapbox.maps.MapboxMapsOptions
6-
import com.mapbox.maps.mapbox_maps.ProxyBinaryMessenger
76
import com.mapbox.maps.mapbox_maps.pigeons.*
87
import io.flutter.plugin.common.BinaryMessenger
98

@@ -12,31 +11,24 @@ class OfflineMapInstanceManager(
1211
private val messenger: BinaryMessenger,
1312
) : _OfflineMapInstanceManager, _TileStoreInstanceManager {
1413

15-
private var proxies = HashMap<String, ProxyBinaryMessenger>()
1614
override fun setupOfflineManager(channelSuffix: String) {
17-
val proxy = ProxyBinaryMessenger(messenger, channelSuffix)
18-
val offlineControler = OfflineController(context, messenger)
19-
_OfflineManager.setUp(proxy, offlineControler)
20-
proxies["offline-manager/$channelSuffix"] = proxy
15+
val offlineControler = OfflineController(context, messenger, channelSuffix)
16+
_OfflineManager.setUp(messenger, offlineControler, channelSuffix)
2117
}
2218

2319
override fun tearDownOfflineManager(channelSuffix: String) {
24-
val proxy = proxies["offline-manager/$channelSuffix"] ?: return
25-
_OfflineManager.setUp(proxy, null)
20+
_OfflineManager.setUp(messenger, null, channelSuffix)
2621
}
2722

2823
override fun setupTileStore(channelSuffix: String, filePath: String?) {
29-
val proxy = ProxyBinaryMessenger(messenger, channelSuffix)
3024
val tileStore = filePath?.let { TileStore.create(it) } ?: TileStore.create()
3125
MapboxMapsOptions.tileStore = tileStore
32-
val tileStoreController = TileStoreController(context, messenger, tileStore)
33-
_TileStore.setUp(proxy, tileStoreController)
34-
proxies["tilestore/$channelSuffix"] = proxy
26+
val tileStoreController = TileStoreController(context, messenger, channelSuffix, tileStore)
27+
_TileStore.setUp(messenger, tileStoreController, channelSuffix)
3528
}
3629

3730
override fun tearDownTileStore(channelSuffix: String) {
38-
val proxy = proxies["tilestore/$channelSuffix"] ?: return
39-
_TileStore.setUp(proxy, null)
31+
_TileStore.setUp(messenger, null, channelSuffix)
4032
MapboxMapsOptions.tileStore = null
4133
}
4234
}

android/src/main/kotlin/com/mapbox/maps/mapbox_maps/offline/TileStoreController.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ private const val EVENT_CHANNEL_PREFIX = "com.mapbox.maps.flutter/tilestore"
2626
class TileStoreController(
2727
private val context: Context,
2828
private val binaryMessenger: BinaryMessenger,
29+
private val channelSuffix: String,
2930
private val tileStore: TileStore
3031
) : _TileStore {
3132

@@ -56,7 +57,7 @@ class TileStoreController(
5657
}
5758

5859
override fun addTileRegionLoadProgressListener(id: String) {
59-
val eventChannel = EventChannel(binaryMessenger, "com.mapbox.maps.flutter/tilestore/tile-region-$id")
60+
val eventChannel = EventChannel(binaryMessenger, "com.mapbox.maps.flutter/$channelSuffix/tile-region-$id")
6061
eventChannel.setStreamHandler(
6162
object : EventChannel.StreamHandler {
6263
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
@@ -96,7 +97,7 @@ class TileStoreController(
9697
}
9798

9899
override fun addTileRegionEstimateProgressListener(id: String) {
99-
val eventChannel = EventChannel(binaryMessenger, "com.mapbox.maps.flutter/tilestore/tile-region-estimate$id")
100+
val eventChannel = EventChannel(binaryMessenger, "com.mapbox.maps.flutter/$channelSuffix/tile-region-estimate$id")
100101
eventChannel.setStreamHandler(
101102
object : EventChannel.StreamHandler {
102103
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {

0 commit comments

Comments
 (0)