Skip to content

Commit b12ba1c

Browse files
committed
Better function definition
1 parent d867c96 commit b12ba1c

File tree

6 files changed

+31
-31
lines changed

6 files changed

+31
-31
lines changed

Diff for: extension-androidauto/CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Mapbox welcomes participation and contributions from everyone.
88
* Add `MapboxCarMapSessionInstaller` and `MapboxCarMapScreenInstaller` for simpler setup. ([#1603](https://github.com/mapbox/mapbox-maps-android/pull/1603))
99
* Add `Session.mapboxMapInstaller` and `Screen.mapboxMapInstaller` extension functions to create the installers. ([#1603](https://github.com/mapbox/mapbox-maps-android/pull/1603))
1010
* Change `MapboxCarMapGestureHandler` to an java interface so default methods can be added without breaking java backwards compatibility. ([#1670](https://github.com/mapbox/mapbox-maps-android/pull/1670))
11-
* Add support for intercepting the `SurfaceCallback#onClick` with an experimental method `MapboxCarMap.setupWithCustomCallback`.
11+
* Add support for intercepting the `SurfaceCallback#onClick` when using `MapboxCarMap.prepareSurfaceCallback`. ([#1683](https://github.com/mapbox/mapbox-maps-android/pull/1683)])
1212

1313
## Bug fixes 🐞
1414

Diff for: extension-androidauto/api/extension-androidauto.api

+1-14
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,3 @@
1-
public final class com/mapbox/maps/extension/androidauto/CarMapSurfaceOwner : androidx/car/app/SurfaceCallback {
2-
public fun <init> ()V
3-
public fun <init> (Lcom/mapbox/maps/extension/androidauto/MapboxCarMapGestureHandler;)V
4-
public synthetic fun <init> (Lcom/mapbox/maps/extension/androidauto/MapboxCarMapGestureHandler;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
5-
public fun onFling (FF)V
6-
public fun onScale (FFF)V
7-
public fun onScroll (FF)V
8-
public fun onStableAreaChanged (Landroid/graphics/Rect;)V
9-
public fun onSurfaceAvailable (Landroidx/car/app/SurfaceContainer;)V
10-
public fun onSurfaceDestroyed (Landroidx/car/app/SurfaceContainer;)V
11-
public fun onVisibleAreaChanged (Landroid/graphics/Rect;)V
12-
}
13-
141
public class com/mapbox/maps/extension/androidauto/DefaultMapboxCarMapGestureHandler : com/mapbox/maps/extension/androidauto/MapboxCarMapGestureHandler {
152
public fun <init> ()V
163
public fun onFling (Lcom/mapbox/maps/extension/androidauto/MapboxCarMapSurface;FF)V
@@ -26,10 +13,10 @@ public final class com/mapbox/maps/extension/androidauto/MapboxCarMap {
2613
public final fun getEdgeInsets ()Lcom/mapbox/maps/EdgeInsets;
2714
public final fun getMapInitOptions ()Lcom/mapbox/maps/MapInitOptions;
2815
public final fun getVisibleArea ()Landroid/graphics/Rect;
16+
public final fun prepareSurfaceCallback (Landroidx/car/app/CarContext;Lcom/mapbox/maps/MapInitOptions;)Landroidx/car/app/SurfaceCallback;
2917
public final fun registerObserver (Lcom/mapbox/maps/extension/androidauto/MapboxCarMapObserver;)Lcom/mapbox/maps/extension/androidauto/MapboxCarMap;
3018
public final fun setGestureHandler (Lcom/mapbox/maps/extension/androidauto/MapboxCarMapGestureHandler;)V
3119
public final fun setup (Landroidx/car/app/CarContext;Lcom/mapbox/maps/MapInitOptions;)Lcom/mapbox/maps/extension/androidauto/MapboxCarMap;
32-
public final fun setupWithCustomCallback (Landroidx/car/app/CarContext;Lcom/mapbox/maps/MapInitOptions;)Lcom/mapbox/maps/extension/androidauto/CarMapSurfaceOwner;
3320
public final fun unregisterObserver (Lcom/mapbox/maps/extension/androidauto/MapboxCarMapObserver;)V
3421
}
3522

Diff for: extension-androidauto/api/metalava.txt

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
// Signature format: 3.0
22
package com.mapbox.maps.extension.androidauto {
33

4-
@com.mapbox.maps.MapboxExperimental public final class CarMapSurfaceOwner implements androidx.car.app.SurfaceCallback {
5-
ctor public CarMapSurfaceOwner(com.mapbox.maps.extension.androidauto.MapboxCarMapGestureHandler? gestureHandler = com.mapbox.maps.extension.androidauto.DefaultMapboxCarMapGestureHandler());
6-
}
7-
84
@com.mapbox.maps.MapboxExperimental public class DefaultMapboxCarMapGestureHandler implements com.mapbox.maps.extension.androidauto.MapboxCarMapGestureHandler {
95
ctor public DefaultMapboxCarMapGestureHandler();
106
}
@@ -17,10 +13,10 @@ package com.mapbox.maps.extension.androidauto {
1713
method public com.mapbox.maps.EdgeInsets? getEdgeInsets();
1814
method public com.mapbox.maps.MapInitOptions getMapInitOptions();
1915
method public android.graphics.Rect? getVisibleArea();
16+
method @com.mapbox.maps.MapboxExperimental public androidx.car.app.SurfaceCallback prepareSurfaceCallback(androidx.car.app.CarContext carContext, com.mapbox.maps.MapInitOptions mapInitOptions);
2017
method public com.mapbox.maps.extension.androidauto.MapboxCarMap registerObserver(com.mapbox.maps.extension.androidauto.MapboxCarMapObserver mapboxCarMapObserver);
2118
method public void setGestureHandler(com.mapbox.maps.extension.androidauto.MapboxCarMapGestureHandler? gestureHandler);
2219
method public com.mapbox.maps.extension.androidauto.MapboxCarMap setup(androidx.car.app.CarContext carContext, com.mapbox.maps.MapInitOptions mapInitOptions);
23-
method @com.mapbox.maps.MapboxExperimental public com.mapbox.maps.extension.androidauto.CarMapSurfaceOwner setupWithCustomCallback(androidx.car.app.CarContext carContext, com.mapbox.maps.MapInitOptions mapInitOptions);
2420
method public void unregisterObserver(com.mapbox.maps.extension.androidauto.MapboxCarMapObserver mapboxCarMapObserver);
2521
property public final androidx.car.app.CarContext carContext;
2622
property public final com.mapbox.maps.extension.androidauto.MapboxCarMapSurface? carMapSurface;

Diff for: extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/CarMapSurfaceOwner.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import java.util.concurrent.CopyOnWriteArraySet
1818
* Maintains the surface state for [MapboxCarMap].
1919
*/
2020
@MapboxExperimental
21-
class CarMapSurfaceOwner @JvmOverloads constructor(
21+
internal class CarMapSurfaceOwner @JvmOverloads constructor(
2222
internal var gestureHandler: MapboxCarMapGestureHandler? = DefaultMapboxCarMapGestureHandler()
2323
) : SurfaceCallback {
2424

Diff for: extension-androidauto/src/main/java/com/mapbox/maps/extension/androidauto/MapboxCarMap.kt

+7-10
Original file line numberDiff line numberDiff line change
@@ -72,27 +72,24 @@ class MapboxCarMap {
7272
carContext: CarContext,
7373
mapInitOptions: MapInitOptions,
7474
) = apply {
75-
check(mapInitOptions.context is CarContext) {
76-
"You must set up the MapboxCarMap MapInitOptions with a CarContext"
77-
}
78-
carMapSurfaceOwner.setup(carContext, mapInitOptions)
79-
carContext.getCarService(AppManager::class.java).setSurfaceCallback(carMapSurfaceOwner)
75+
val surfaceCallback = prepareSurfaceCallback(carContext, mapInitOptions)
76+
carContext.getCarService(AppManager::class.java).setSurfaceCallback(surfaceCallback)
8077
}
8178

8279
/**
8380
* Instead of using [setup], this function allows you to create your own [SurfaceCallback] and
84-
* forward the calls to the [CarMapSurfaceOwner]. This makes it possible for you to adopt new
85-
* api versions and continue to use the [MapboxCarMap] as designed.
81+
* forward the calls to the returned [SurfaceCallback]. This makes it possible for you to adopt
82+
* new api versions or intercept the calls and continue to use the [MapboxCarMap] as designed.
8683
*
87-
* This is a temporary solution, while androidx.car.app:app:1.3.0 is rolling out
84+
* This may be a temporary solution, while androidx.car.app:app:1.3.0 is rolling out
8885
* [SurfaceCallback.onClick]. If there is no use for this function in the future, it will be
8986
* removed.
9087
*/
9188
@MapboxExperimental
92-
fun setupWithCustomCallback(
89+
fun prepareSurfaceCallback(
9390
carContext: CarContext,
9491
mapInitOptions: MapInitOptions
95-
): CarMapSurfaceOwner {
92+
): SurfaceCallback {
9693
check(mapInitOptions.context is CarContext) {
9794
"You must set up the MapboxCarMap MapInitOptions with a CarContext"
9895
}

Diff for: extension-androidauto/src/test/java/com/mapbox/maps/extension/androidauto/MapboxCarMapTest.kt

+20
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,26 @@ class MapboxCarMapTest {
7676
assertTrue(surfaceCallbackSlot.isCaptured)
7777
}
7878

79+
@Test
80+
fun `setup will call setSurfaceCallback`() {
81+
MapboxCarMap().setup(carContext, mapInitOptions)
82+
83+
val appManager = carContext.getCarService(AppManager::class.java)
84+
verify(exactly = 1) {
85+
appManager.setSurfaceCallback(any())
86+
}
87+
}
88+
89+
@Test
90+
fun `prepareSurfaceCallback does not call setSurfaceCallback`() {
91+
MapboxCarMap().prepareSurfaceCallback(carContext, mapInitOptions)
92+
93+
val appManager = carContext.getCarService(AppManager::class.java)
94+
verify(exactly = 0) {
95+
appManager.setSurfaceCallback(any())
96+
}
97+
}
98+
7999
@Test
80100
fun `carMapSurface is valid after onSurfaceAvailable`() {
81101
val mapboxCarMap = MapboxCarMap().setup(carContext, mapInitOptions)

0 commit comments

Comments
 (0)