diff --git a/packages/interactive_media_ads/CHANGELOG.md b/packages/interactive_media_ads/CHANGELOG.md
index 02d26a048a1..c188eda3cd8 100644
--- a/packages/interactive_media_ads/CHANGELOG.md
+++ b/packages/interactive_media_ads/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.2.3+3
+
+* Adds internal wrapper for Android native `CompanionAdSlot` and `CompanionAdSlot.ClickListener`.
+
## 0.2.3+2
* Bumps `com.google.ads.interactivemedia.v3:interactivemedia` from 3.35.1 to 3.36.0.
diff --git a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt
index c067b5d40e2..b4a7fa16559 100644
--- a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt
+++ b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt
@@ -21,7 +21,7 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
*
* This must match the version in pubspec.yaml.
*/
- const val pluginVersion = "0.2.3+2"
+ const val pluginVersion = "0.2.3+3"
}
override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) {
diff --git a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotClickListenerProxyApi.kt b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotClickListenerProxyApi.kt
new file mode 100644
index 00000000000..ce92e8eaa2f
--- /dev/null
+++ b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotClickListenerProxyApi.kt
@@ -0,0 +1,26 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package dev.flutter.packages.interactive_media_ads
+
+import com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener
+
+/**
+ * ProxyApi implementation for [ClickListener].
+ *
+ *
This class may handle instantiating native object instances that are attached to a Dart
+ * instance or handle method calls on the associated native class or an instance of that class.
+ */
+class CompanionAdSlotClickListenerProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
+ PigeonApiCompanionAdSlotClickListener(pigeonRegistrar) {
+ internal class ClickListenerImpl(val api: CompanionAdSlotClickListenerProxyApi) : ClickListener {
+ override fun onCompanionAdClick() {
+ api.pigeonRegistrar.runOnMainThread { api.onCompanionAdClick(this) {} }
+ }
+ }
+
+ override fun pigeon_defaultConstructor(): ClickListener {
+ return ClickListenerImpl(this)
+ }
+}
diff --git a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotProxyApi.kt b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotProxyApi.kt
new file mode 100644
index 00000000000..ec0bdafdbd2
--- /dev/null
+++ b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotProxyApi.kt
@@ -0,0 +1,50 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package dev.flutter.packages.interactive_media_ads
+
+import android.view.ViewGroup
+import com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+import com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener
+
+/**
+ * ProxyApi implementation for [CompanionAdSlot].
+ *
+ *
This class may handle instantiating native object instances that are attached to a Dart
+ * instance or handle method calls on the associated native class or an instance of that class.
+ */
+class CompanionAdSlotProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
+ PigeonApiCompanionAdSlot(pigeonRegistrar) {
+ override fun addClickListener(pigeon_instance: CompanionAdSlot, clickListener: ClickListener) {
+ return pigeon_instance.addClickListener(clickListener)
+ }
+
+ override fun getContainer(pigeon_instance: CompanionAdSlot): ViewGroup {
+ return pigeon_instance.container
+ }
+
+ override fun getHeight(pigeon_instance: CompanionAdSlot): Long {
+ return pigeon_instance.height.toLong()
+ }
+
+ override fun getWidth(pigeon_instance: CompanionAdSlot): Long {
+ return pigeon_instance.width.toLong()
+ }
+
+ override fun isFilled(pigeon_instance: CompanionAdSlot): Boolean {
+ return pigeon_instance.isFilled
+ }
+
+ override fun removeClickListener(pigeon_instance: CompanionAdSlot, clickListener: ClickListener) {
+ pigeon_instance.removeClickListener(clickListener)
+ }
+
+ override fun setContainer(pigeon_instance: CompanionAdSlot, container: ViewGroup) {
+ pigeon_instance.container = container
+ }
+
+ override fun setSize(pigeon_instance: CompanionAdSlot, width: Long, height: Long) {
+ pigeon_instance.setSize(width.toInt(), height.toInt())
+ }
+}
diff --git a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/InteractiveMediaAdsLibrary.g.kt b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/InteractiveMediaAdsLibrary.g.kt
index fc3198cd86c..16e53f4c996 100644
--- a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/InteractiveMediaAdsLibrary.g.kt
+++ b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/InteractiveMediaAdsLibrary.g.kt
@@ -1,7 +1,7 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Autogenerated from Pigeon (v22.6.0), do not edit directly.
+// Autogenerated from Pigeon (v22.6.1), do not edit directly.
// See also: https://pub.dev/packages/pigeon
@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass", "SyntheticAccessor")
@@ -567,6 +567,18 @@ abstract class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar(
*/
abstract fun getPigeonApiAd(): PigeonApiAd
+ /**
+ * An implementation of [PigeonApiCompanionAdSlotClickListener] used to add a new Dart instance of
+ * `CompanionAdSlotClickListener` to the Dart `InstanceManager`.
+ */
+ abstract fun getPigeonApiCompanionAdSlotClickListener(): PigeonApiCompanionAdSlotClickListener
+
+ /**
+ * An implementation of [PigeonApiCompanionAdSlot] used to add a new Dart instance of
+ * `CompanionAdSlot` to the Dart `InstanceManager`.
+ */
+ abstract fun getPigeonApiCompanionAdSlot(): PigeonApiCompanionAdSlot
+
fun setUp() {
InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers(
binaryMessenger, instanceManager)
@@ -592,6 +604,9 @@ abstract class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar(
PigeonApiAdEventListener.setUpMessageHandlers(binaryMessenger, getPigeonApiAdEventListener())
PigeonApiAdsRenderingSettings.setUpMessageHandlers(
binaryMessenger, getPigeonApiAdsRenderingSettings())
+ PigeonApiCompanionAdSlotClickListener.setUpMessageHandlers(
+ binaryMessenger, getPigeonApiCompanionAdSlotClickListener())
+ PigeonApiCompanionAdSlot.setUpMessageHandlers(binaryMessenger, getPigeonApiCompanionAdSlot())
}
fun tearDown() {
@@ -613,6 +628,8 @@ abstract class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar(
PigeonApiAdErrorListener.setUpMessageHandlers(binaryMessenger, null)
PigeonApiAdEventListener.setUpMessageHandlers(binaryMessenger, null)
PigeonApiAdsRenderingSettings.setUpMessageHandlers(binaryMessenger, null)
+ PigeonApiCompanionAdSlotClickListener.setUpMessageHandlers(binaryMessenger, null)
+ PigeonApiCompanionAdSlot.setUpMessageHandlers(binaryMessenger, null)
}
}
@@ -713,6 +730,10 @@ private class InteractiveMediaAdsLibraryPigeonProxyApiBaseCodec(
registrar.getPigeonApiUniversalAdId().pigeon_newInstance(value) {}
} else if (value is com.google.ads.interactivemedia.v3.api.Ad) {
registrar.getPigeonApiAd().pigeon_newInstance(value) {}
+ } else if (value is com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener) {
+ registrar.getPigeonApiCompanionAdSlotClickListener().pigeon_newInstance(value) {}
+ } else if (value is com.google.ads.interactivemedia.v3.api.CompanionAdSlot) {
+ registrar.getPigeonApiCompanionAdSlot().pigeon_newInstance(value) {}
}
when {
@@ -5296,3 +5317,402 @@ abstract class PigeonApiAd(
}
}
}
+/**
+ * Listener interface for click events.
+ *
+ * See
+ * https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/CompanionAdSlot.ClickListener.html.
+ */
+@Suppress("UNCHECKED_CAST")
+abstract class PigeonApiCompanionAdSlotClickListener(
+ open val pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar
+) {
+ abstract fun pigeon_defaultConstructor():
+ com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener
+
+ companion object {
+ @Suppress("LocalVariableName")
+ fun setUpMessageHandlers(
+ binaryMessenger: BinaryMessenger,
+ api: PigeonApiCompanionAdSlotClickListener?
+ ) {
+ val codec = api?.pigeonRegistrar?.codec ?: InteractiveMediaAdsLibraryPigeonCodec()
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlotClickListener.pigeon_defaultConstructor",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_identifierArg = args[0] as Long
+ val wrapped: List =
+ try {
+ api.pigeonRegistrar.instanceManager.addDartCreatedInstance(
+ api.pigeon_defaultConstructor(), pigeon_identifierArg)
+ listOf(null)
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ }
+ }
+
+ @Suppress("LocalVariableName", "FunctionName")
+ /**
+ * Creates a Dart instance of CompanionAdSlotClickListener and attaches it to
+ * [pigeon_instanceArg].
+ */
+ fun pigeon_newInstance(
+ pigeon_instanceArg: com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener,
+ callback: (Result) -> Unit
+ ) {
+ if (pigeonRegistrar.ignoreCallsToDart) {
+ callback(
+ Result.failure(
+ FlutterError("ignore-calls-error", "Calls to Dart are being ignored.", "")))
+ return
+ }
+ if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) {
+ Result.success(Unit)
+ return
+ }
+ throw IllegalStateException(
+ "Attempting to create a new Dart instance of CompanionAdSlotClickListener, but the class has a nonnull callback method.")
+ }
+
+ /** Respond to a click on this companion ad slot. */
+ fun onCompanionAdClick(
+ pigeon_instanceArg: com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener,
+ callback: (Result) -> Unit
+ ) {
+ if (pigeonRegistrar.ignoreCallsToDart) {
+ callback(
+ Result.failure(
+ FlutterError("ignore-calls-error", "Calls to Dart are being ignored.", "")))
+ return
+ }
+ val binaryMessenger = pigeonRegistrar.binaryMessenger
+ val codec = pigeonRegistrar.codec
+ val channelName =
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlotClickListener.onCompanionAdClick"
+ val channel = BasicMessageChannel(binaryMessenger, channelName, codec)
+ channel.send(listOf(pigeon_instanceArg)) {
+ if (it is List<*>) {
+ if (it.size > 1) {
+ callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)))
+ } else {
+ callback(Result.success(Unit))
+ }
+ } else {
+ callback(Result.failure(createConnectionError(channelName)))
+ }
+ }
+ }
+}
+/**
+ * A companion ad slot for which the SDK should retrieve ads.
+ *
+ * See
+ * https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/CompanionAdSlot.html.
+ */
+@Suppress("UNCHECKED_CAST")
+abstract class PigeonApiCompanionAdSlot(
+ open val pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar
+) {
+ /** Registers a listener for companion clicks. */
+ abstract fun addClickListener(
+ pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAdSlot,
+ clickListener: com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener
+ )
+
+ /** Returns the ViewGroup into which the companion will be rendered. */
+ abstract fun getContainer(
+ pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ ): android.view.ViewGroup
+
+ /** Returns the height of the companion slot. */
+ abstract fun getHeight(
+ pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ ): Long
+
+ /** Returns the width of the companion slot. */
+ abstract fun getWidth(
+ pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ ): Long
+
+ /** Returns true if the companion slot is filled, false otherwise. */
+ abstract fun isFilled(
+ pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ ): Boolean
+
+ /** Removes a listener for companion clicks. */
+ abstract fun removeClickListener(
+ pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAdSlot,
+ clickListener: com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener
+ )
+
+ /**
+ * Sets the ViewGroup into which the companion will be rendered.
+ *
+ * Required.
+ */
+ abstract fun setContainer(
+ pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAdSlot,
+ container: android.view.ViewGroup
+ )
+
+ /**
+ * Sets the size of the slot.
+ *
+ * Only companions matching the slot size will be displayed in the slot.
+ */
+ abstract fun setSize(
+ pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAdSlot,
+ width: Long,
+ height: Long
+ )
+
+ companion object {
+ @Suppress("LocalVariableName")
+ fun setUpMessageHandlers(binaryMessenger: BinaryMessenger, api: PigeonApiCompanionAdSlot?) {
+ val codec = api?.pigeonRegistrar?.codec ?: InteractiveMediaAdsLibraryPigeonCodec()
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.addClickListener",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg =
+ args[0] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ val clickListenerArg =
+ args[1] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener
+ val wrapped: List =
+ try {
+ api.addClickListener(pigeon_instanceArg, clickListenerArg)
+ listOf(null)
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.getContainer",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg =
+ args[0] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ val wrapped: List =
+ try {
+ listOf(api.getContainer(pigeon_instanceArg))
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.getHeight",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg =
+ args[0] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ val wrapped: List =
+ try {
+ listOf(api.getHeight(pigeon_instanceArg))
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.getWidth",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg =
+ args[0] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ val wrapped: List =
+ try {
+ listOf(api.getWidth(pigeon_instanceArg))
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.isFilled",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg =
+ args[0] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ val wrapped: List =
+ try {
+ listOf(api.isFilled(pigeon_instanceArg))
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.removeClickListener",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg =
+ args[0] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ val clickListenerArg =
+ args[1] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener
+ val wrapped: List =
+ try {
+ api.removeClickListener(pigeon_instanceArg, clickListenerArg)
+ listOf(null)
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.setContainer",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg =
+ args[0] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ val containerArg = args[1] as android.view.ViewGroup
+ val wrapped: List =
+ try {
+ api.setContainer(pigeon_instanceArg, containerArg)
+ listOf(null)
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ run {
+ val channel =
+ BasicMessageChannel(
+ binaryMessenger,
+ "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.setSize",
+ codec)
+ if (api != null) {
+ channel.setMessageHandler { message, reply ->
+ val args = message as List
+ val pigeon_instanceArg =
+ args[0] as com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+ val widthArg = args[1] as Long
+ val heightArg = args[2] as Long
+ val wrapped: List =
+ try {
+ api.setSize(pigeon_instanceArg, widthArg, heightArg)
+ listOf(null)
+ } catch (exception: Throwable) {
+ wrapError(exception)
+ }
+ reply.reply(wrapped)
+ }
+ } else {
+ channel.setMessageHandler(null)
+ }
+ }
+ }
+ }
+
+ @Suppress("LocalVariableName", "FunctionName")
+ /** Creates a Dart instance of CompanionAdSlot and attaches it to [pigeon_instanceArg]. */
+ fun pigeon_newInstance(
+ pigeon_instanceArg: com.google.ads.interactivemedia.v3.api.CompanionAdSlot,
+ callback: (Result) -> Unit
+ ) {
+ if (pigeonRegistrar.ignoreCallsToDart) {
+ callback(
+ Result.failure(
+ FlutterError("ignore-calls-error", "Calls to Dart are being ignored.", "")))
+ return
+ }
+ if (pigeonRegistrar.instanceManager.containsInstance(pigeon_instanceArg)) {
+ Result.success(Unit)
+ return
+ }
+ val pigeon_identifierArg =
+ pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeon_instanceArg)
+ val binaryMessenger = pigeonRegistrar.binaryMessenger
+ val codec = pigeonRegistrar.codec
+ val channelName = "dev.flutter.pigeon.interactive_media_ads.CompanionAdSlot.pigeon_newInstance"
+ val channel = BasicMessageChannel(binaryMessenger, channelName, codec)
+ channel.send(listOf(pigeon_identifierArg)) {
+ if (it is List<*>) {
+ if (it.size > 1) {
+ callback(Result.failure(FlutterError(it[0] as String, it[1] as String, it[2] as String?)))
+ } else {
+ callback(Result.success(Unit))
+ }
+ } else {
+ callback(Result.failure(createConnectionError(channelName)))
+ }
+ }
+ }
+}
diff --git a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/ProxyApiRegistrar.kt b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/ProxyApiRegistrar.kt
index d1cfda322be..c34c6242b9f 100644
--- a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/ProxyApiRegistrar.kt
+++ b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/ProxyApiRegistrar.kt
@@ -145,4 +145,12 @@ open class ProxyApiRegistrar(binaryMessenger: BinaryMessenger, var context: Cont
override fun getPigeonApiAd(): PigeonApiAd {
return AdProxyApi(this)
}
+
+ override fun getPigeonApiCompanionAdSlotClickListener(): PigeonApiCompanionAdSlotClickListener {
+ return CompanionAdSlotClickListenerProxyApi(this)
+ }
+
+ override fun getPigeonApiCompanionAdSlot(): PigeonApiCompanionAdSlot {
+ return CompanionAdSlotProxyApi(this)
+ }
}
diff --git a/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotClickListenerProxyApiTest.kt b/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotClickListenerProxyApiTest.kt
new file mode 100644
index 00000000000..8f31f8585bb
--- /dev/null
+++ b/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotClickListenerProxyApiTest.kt
@@ -0,0 +1,34 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package dev.flutter.packages.interactive_media_ads
+
+import kotlin.test.Test
+import kotlin.test.assertTrue
+import org.mockito.kotlin.any
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+
+class CompanionAdSlotClickListenerProxyApiTest {
+ @Test
+ fun pigeon_defaultConstructor() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlotClickListener()
+
+ assertTrue(
+ api.pigeon_defaultConstructor() is CompanionAdSlotClickListenerProxyApi.ClickListenerImpl)
+ }
+
+ @Test
+ fun onCompanionAdClick() {
+ val mockApi = mock()
+ whenever(mockApi.pigeonRegistrar).thenReturn(TestProxyApiRegistrar())
+
+ val instance = CompanionAdSlotClickListenerProxyApi.ClickListenerImpl(mockApi)
+ instance.onCompanionAdClick()
+
+ verify(mockApi).onCompanionAdClick(eq(instance), any())
+ }
+}
diff --git a/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotProxyApiTest.kt b/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotProxyApiTest.kt
new file mode 100644
index 00000000000..9e85e402c14
--- /dev/null
+++ b/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/CompanionAdSlotProxyApiTest.kt
@@ -0,0 +1,104 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package dev.flutter.packages.interactive_media_ads
+
+import android.view.ViewGroup
+import com.google.ads.interactivemedia.v3.api.CompanionAdSlot
+import com.google.ads.interactivemedia.v3.api.CompanionAdSlot.ClickListener
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
+
+class CompanionAdSlotProxyApiTest {
+ @Test
+ fun addClickListener() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlot()
+
+ val instance = mock()
+ val clickListener = mock()
+ api.addClickListener(instance, clickListener)
+
+ verify(instance).addClickListener(clickListener)
+ }
+
+ @Test
+ fun getContainer() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlot()
+
+ val instance = mock()
+ val value = mock()
+ whenever(instance.container).thenReturn(value)
+
+ assertEquals(value, api.getContainer(instance))
+ }
+
+ @Test
+ fun getHeight() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlot()
+
+ val instance = mock()
+ val value = 0
+ whenever(instance.height).thenReturn(value)
+ assertEquals(value.toLong(), api.getHeight(instance))
+ }
+
+ @Test
+ fun getWidth() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlot()
+
+ val instance = mock()
+ val value = 0
+ whenever(instance.width).thenReturn(value)
+
+ assertEquals(value.toLong(), api.getWidth(instance))
+ }
+
+ @Test
+ fun isFilled() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlot()
+
+ val instance = mock()
+ val value = true
+ whenever(instance.isFilled).thenReturn(value)
+
+ assertEquals(value, api.isFilled(instance))
+ }
+
+ @Test
+ fun removeClickListener() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlot()
+
+ val instance = mock()
+ val clickListener = mock()
+ api.removeClickListener(instance, clickListener)
+
+ verify(instance).removeClickListener(clickListener)
+ }
+
+ @Test
+ fun setContainer() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlot()
+
+ val instance = mock()
+ val container = mock()
+ api.setContainer(instance, container)
+
+ verify(instance).container = container
+ }
+
+ @Test
+ fun setSize() {
+ val api = TestProxyApiRegistrar().getPigeonApiCompanionAdSlot()
+
+ val instance = mock()
+ val width = 0L
+ val height = 1L
+ api.setSize(instance, width, height)
+
+ verify(instance).setSize(width.toInt(), height.toInt())
+ }
+}
diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift
index acbf879e2f8..7b00f9c7f95 100644
--- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift
+++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift
@@ -13,7 +13,7 @@ class AdsRequestProxyAPIDelegate: PigeonApiDelegateIMAAdsRequest {
/// The current version of the `interactive_media_ads` plugin.
///
/// This must match the version in pubspec.yaml.
- static let pluginVersion = "0.2.3+2"
+ static let pluginVersion = "0.2.3+3"
func pigeonDefaultConstructor(
pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer,
diff --git a/packages/interactive_media_ads/lib/src/android/interactive_media_ads.g.dart b/packages/interactive_media_ads/lib/src/android/interactive_media_ads.g.dart
index b519ac04475..9291453b86a 100644
--- a/packages/interactive_media_ads/lib/src/android/interactive_media_ads.g.dart
+++ b/packages/interactive_media_ads/lib/src/android/interactive_media_ads.g.dart
@@ -1,7 +1,7 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Autogenerated from Pigeon (v22.6.0), do not edit directly.
+// Autogenerated from Pigeon (v22.6.1), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers
@@ -198,6 +198,10 @@ class PigeonInstanceManager {
UniversalAdId.pigeon_setUpMessageHandlers(
pigeon_instanceManager: instanceManager);
Ad.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager);
+ CompanionAdSlotClickListener.pigeon_setUpMessageHandlers(
+ pigeon_instanceManager: instanceManager);
+ CompanionAdSlot.pigeon_setUpMessageHandlers(
+ pigeon_instanceManager: instanceManager);
return instanceManager;
}
@@ -6427,3 +6431,461 @@ class Ad extends PigeonInternalProxyApiBaseClass {
);
}
}
+
+/// Listener interface for click events.
+///
+/// See https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/CompanionAdSlot.ClickListener.html.
+class CompanionAdSlotClickListener extends PigeonInternalProxyApiBaseClass {
+ CompanionAdSlotClickListener({
+ super.pigeon_binaryMessenger,
+ super.pigeon_instanceManager,
+ required this.onCompanionAdClick,
+ }) {
+ final int pigeonVar_instanceIdentifier =
+ pigeon_instanceManager.addDartCreatedInstance(this);
+ final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec =
+ _pigeonVar_codecCompanionAdSlotClickListener;
+ final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger;
+ () async {
+ const String pigeonVar_channelName =
+ 'dev.flutter.pigeon.interactive_media_ads.CompanionAdSlotClickListener.pigeon_defaultConstructor';
+ final BasicMessageChannel