Skip to content

Commit 31859c0

Browse files
[interactive_media_ads] Adds remaining methods for internal wrapper of the Android native BaseManager (#7943)
1 parent 4b2132f commit 31859c0

File tree

13 files changed

+525
-18
lines changed

13 files changed

+525
-18
lines changed

packages/interactive_media_ads/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.2.2+15
2+
3+
* Adds remaining methods for internal wrapper of the Android native `BaseManager`.
4+
15
## 0.2.2+14
26

37
* Adds internal wrapper for iOS native `IMACompanionAdSlot` and `IMACompanionDelegate`.

packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
2121
*
2222
* This must match the version in pubspec.yaml.
2323
*/
24-
const val pluginVersion = "0.2.2+14"
24+
const val pluginVersion = "0.2.2+15"
2525
}
2626

2727
override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) {

packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/BaseManagerProxyApi.kt

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44

55
package dev.flutter.packages.interactive_media_ads
66

7+
import com.google.ads.interactivemedia.v3.api.Ad
78
import com.google.ads.interactivemedia.v3.api.AdErrorEvent
89
import com.google.ads.interactivemedia.v3.api.AdEvent
10+
import com.google.ads.interactivemedia.v3.api.AdProgressInfo
11+
import com.google.ads.interactivemedia.v3.api.AdsRenderingSettings
912
import com.google.ads.interactivemedia.v3.api.BaseManager
1013

1114
/**
@@ -34,7 +37,37 @@ class BaseManagerProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
3437
pigeon_instance.destroy()
3538
}
3639

37-
override fun init(pigeon_instance: BaseManager) {
38-
pigeon_instance.init()
40+
override fun init(pigeon_instance: BaseManager, settings: AdsRenderingSettings?) {
41+
if (settings == null) {
42+
pigeon_instance.init()
43+
} else {
44+
pigeon_instance.init(settings)
45+
}
46+
}
47+
48+
override fun focus(pigeon_instance: BaseManager) {
49+
pigeon_instance.focus()
50+
}
51+
52+
override fun getAdProgressInfo(pigeon_instance: BaseManager): AdProgressInfo? {
53+
return pigeon_instance.adProgressInfo
54+
}
55+
56+
override fun getCurrentAd(pigeon_instance: BaseManager): Ad? {
57+
return pigeon_instance.currentAd
58+
}
59+
60+
override fun removeAdErrorListener(
61+
pigeon_instance: BaseManager,
62+
errorListener: AdErrorEvent.AdErrorListener
63+
) {
64+
pigeon_instance.removeAdErrorListener(errorListener)
65+
}
66+
67+
override fun removeAdEventListener(
68+
pigeon_instance: BaseManager,
69+
adEventListener: AdEvent.AdEventListener
70+
) {
71+
pigeon_instance.removeAdEventListener(adEventListener)
3972
}
4073
}

packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/InteractiveMediaAdsLibrary.g.kt

Lines changed: 150 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1861,8 +1861,36 @@ abstract class PigeonApiBaseManager(
18611861
/** Stops the ad and all tracking, then releases all assets that were loaded to play the ad. */
18621862
abstract fun destroy(pigeon_instance: com.google.ads.interactivemedia.v3.api.BaseManager)
18631863

1864-
/** Initializes the ad experience using default rendering settings */
1865-
abstract fun init(pigeon_instance: com.google.ads.interactivemedia.v3.api.BaseManager)
1864+
/** Initializes the ad experience on the manager. */
1865+
abstract fun init(
1866+
pigeon_instance: com.google.ads.interactivemedia.v3.api.BaseManager,
1867+
settings: com.google.ads.interactivemedia.v3.api.AdsRenderingSettings?
1868+
)
1869+
1870+
/** Generic focus endpoint that puts focus on the skip button if present. */
1871+
abstract fun focus(pigeon_instance: com.google.ads.interactivemedia.v3.api.BaseManager)
1872+
1873+
/** Returns the latest AdProgressInfo for the current playing ad. */
1874+
abstract fun getAdProgressInfo(
1875+
pigeon_instance: com.google.ads.interactivemedia.v3.api.BaseManager
1876+
): com.google.ads.interactivemedia.v3.api.AdProgressInfo?
1877+
1878+
/** Get currently playing ad. */
1879+
abstract fun getCurrentAd(
1880+
pigeon_instance: com.google.ads.interactivemedia.v3.api.BaseManager
1881+
): com.google.ads.interactivemedia.v3.api.Ad?
1882+
1883+
/** Removes a listener for error events. */
1884+
abstract fun removeAdErrorListener(
1885+
pigeon_instance: com.google.ads.interactivemedia.v3.api.BaseManager,
1886+
errorListener: com.google.ads.interactivemedia.v3.api.AdErrorEvent.AdErrorListener
1887+
)
1888+
1889+
/** Removes a listener for ad events. */
1890+
abstract fun removeAdEventListener(
1891+
pigeon_instance: com.google.ads.interactivemedia.v3.api.BaseManager,
1892+
adEventListener: com.google.ads.interactivemedia.v3.api.AdEvent.AdEventListener
1893+
)
18661894

18671895
companion object {
18681896
@Suppress("LocalVariableName")
@@ -1949,9 +1977,128 @@ abstract class PigeonApiBaseManager(
19491977
channel.setMessageHandler { message, reply ->
19501978
val args = message as List<Any?>
19511979
val pigeon_instanceArg = args[0] as com.google.ads.interactivemedia.v3.api.BaseManager
1980+
val settingsArg =
1981+
args[1] as com.google.ads.interactivemedia.v3.api.AdsRenderingSettings?
1982+
val wrapped: List<Any?> =
1983+
try {
1984+
api.init(pigeon_instanceArg, settingsArg)
1985+
listOf(null)
1986+
} catch (exception: Throwable) {
1987+
wrapError(exception)
1988+
}
1989+
reply.reply(wrapped)
1990+
}
1991+
} else {
1992+
channel.setMessageHandler(null)
1993+
}
1994+
}
1995+
run {
1996+
val channel =
1997+
BasicMessageChannel<Any?>(
1998+
binaryMessenger,
1999+
"dev.flutter.pigeon.interactive_media_ads.BaseManager.focus",
2000+
codec)
2001+
if (api != null) {
2002+
channel.setMessageHandler { message, reply ->
2003+
val args = message as List<Any?>
2004+
val pigeon_instanceArg = args[0] as com.google.ads.interactivemedia.v3.api.BaseManager
2005+
val wrapped: List<Any?> =
2006+
try {
2007+
api.focus(pigeon_instanceArg)
2008+
listOf(null)
2009+
} catch (exception: Throwable) {
2010+
wrapError(exception)
2011+
}
2012+
reply.reply(wrapped)
2013+
}
2014+
} else {
2015+
channel.setMessageHandler(null)
2016+
}
2017+
}
2018+
run {
2019+
val channel =
2020+
BasicMessageChannel<Any?>(
2021+
binaryMessenger,
2022+
"dev.flutter.pigeon.interactive_media_ads.BaseManager.getAdProgressInfo",
2023+
codec)
2024+
if (api != null) {
2025+
channel.setMessageHandler { message, reply ->
2026+
val args = message as List<Any?>
2027+
val pigeon_instanceArg = args[0] as com.google.ads.interactivemedia.v3.api.BaseManager
2028+
val wrapped: List<Any?> =
2029+
try {
2030+
listOf(api.getAdProgressInfo(pigeon_instanceArg))
2031+
} catch (exception: Throwable) {
2032+
wrapError(exception)
2033+
}
2034+
reply.reply(wrapped)
2035+
}
2036+
} else {
2037+
channel.setMessageHandler(null)
2038+
}
2039+
}
2040+
run {
2041+
val channel =
2042+
BasicMessageChannel<Any?>(
2043+
binaryMessenger,
2044+
"dev.flutter.pigeon.interactive_media_ads.BaseManager.getCurrentAd",
2045+
codec)
2046+
if (api != null) {
2047+
channel.setMessageHandler { message, reply ->
2048+
val args = message as List<Any?>
2049+
val pigeon_instanceArg = args[0] as com.google.ads.interactivemedia.v3.api.BaseManager
2050+
val wrapped: List<Any?> =
2051+
try {
2052+
listOf(api.getCurrentAd(pigeon_instanceArg))
2053+
} catch (exception: Throwable) {
2054+
wrapError(exception)
2055+
}
2056+
reply.reply(wrapped)
2057+
}
2058+
} else {
2059+
channel.setMessageHandler(null)
2060+
}
2061+
}
2062+
run {
2063+
val channel =
2064+
BasicMessageChannel<Any?>(
2065+
binaryMessenger,
2066+
"dev.flutter.pigeon.interactive_media_ads.BaseManager.removeAdErrorListener",
2067+
codec)
2068+
if (api != null) {
2069+
channel.setMessageHandler { message, reply ->
2070+
val args = message as List<Any?>
2071+
val pigeon_instanceArg = args[0] as com.google.ads.interactivemedia.v3.api.BaseManager
2072+
val errorListenerArg =
2073+
args[1] as com.google.ads.interactivemedia.v3.api.AdErrorEvent.AdErrorListener
2074+
val wrapped: List<Any?> =
2075+
try {
2076+
api.removeAdErrorListener(pigeon_instanceArg, errorListenerArg)
2077+
listOf(null)
2078+
} catch (exception: Throwable) {
2079+
wrapError(exception)
2080+
}
2081+
reply.reply(wrapped)
2082+
}
2083+
} else {
2084+
channel.setMessageHandler(null)
2085+
}
2086+
}
2087+
run {
2088+
val channel =
2089+
BasicMessageChannel<Any?>(
2090+
binaryMessenger,
2091+
"dev.flutter.pigeon.interactive_media_ads.BaseManager.removeAdEventListener",
2092+
codec)
2093+
if (api != null) {
2094+
channel.setMessageHandler { message, reply ->
2095+
val args = message as List<Any?>
2096+
val pigeon_instanceArg = args[0] as com.google.ads.interactivemedia.v3.api.BaseManager
2097+
val adEventListenerArg =
2098+
args[1] as com.google.ads.interactivemedia.v3.api.AdEvent.AdEventListener
19522099
val wrapped: List<Any?> =
19532100
try {
1954-
api.init(pigeon_instanceArg)
2101+
api.removeAdEventListener(pigeon_instanceArg, adEventListenerArg)
19552102
listOf(null)
19562103
} catch (exception: Throwable) {
19572104
wrapError(exception)

packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/BaseManagerProxyApiTest.kt

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44

55
package dev.flutter.packages.interactive_media_ads
66

7+
import com.google.ads.interactivemedia.v3.api.Ad
78
import com.google.ads.interactivemedia.v3.api.AdErrorEvent
89
import com.google.ads.interactivemedia.v3.api.AdEvent
10+
import com.google.ads.interactivemedia.v3.api.AdProgressInfo
11+
import com.google.ads.interactivemedia.v3.api.AdsRenderingSettings
912
import com.google.ads.interactivemedia.v3.api.BaseManager
13+
import junit.framework.TestCase.assertEquals
1014
import kotlin.test.Test
1115
import org.mockito.kotlin.mock
1216
import org.mockito.kotlin.verify
17+
import org.mockito.kotlin.whenever
1318

1419
class BaseManagerProxyApiTest {
1520
@Test
@@ -49,8 +54,63 @@ class BaseManagerProxyApiTest {
4954
val api = TestProxyApiRegistrar().getPigeonApiBaseManager()
5055

5156
val instance = mock<BaseManager>()
52-
api.init(instance)
57+
val settings = mock<AdsRenderingSettings>()
58+
api.init(instance, settings)
5359

54-
verify(instance).init()
60+
verify(instance).init(settings)
61+
}
62+
63+
@Test
64+
fun focus() {
65+
val api = TestProxyApiRegistrar().getPigeonApiBaseManager()
66+
67+
val instance = mock<BaseManager>()
68+
api.focus(instance)
69+
70+
verify(instance).focus()
71+
}
72+
73+
@Test
74+
fun getAdProgressInfo() {
75+
val api = TestProxyApiRegistrar().getPigeonApiBaseManager()
76+
77+
val instance = mock<BaseManager>()
78+
val value = mock<AdProgressInfo>()
79+
whenever(instance.adProgressInfo).thenReturn(value)
80+
81+
assertEquals(value, api.getAdProgressInfo(instance))
82+
}
83+
84+
@Test
85+
fun getCurrentAd() {
86+
val api = TestProxyApiRegistrar().getPigeonApiBaseManager()
87+
88+
val instance = mock<BaseManager>()
89+
val value = mock<Ad>()
90+
whenever(instance.currentAd).thenReturn(value)
91+
92+
assertEquals(value, api.getCurrentAd(instance))
93+
}
94+
95+
@Test
96+
fun removeAdErrorListener() {
97+
val api = TestProxyApiRegistrar().getPigeonApiBaseManager()
98+
99+
val instance = mock<BaseManager>()
100+
val errorListener = mock<AdErrorEvent.AdErrorListener>()
101+
api.removeAdErrorListener(instance, errorListener)
102+
103+
verify(instance).removeAdErrorListener(errorListener)
104+
}
105+
106+
@Test
107+
fun removeAdEventListener() {
108+
val api = TestProxyApiRegistrar().getPigeonApiBaseManager()
109+
110+
val instance = mock<BaseManager>()
111+
val adEventListener = mock<AdEvent.AdEventListener>()
112+
api.removeAdEventListener(instance, adEventListener)
113+
114+
verify(instance).removeAdEventListener(adEventListener)
55115
}
56116
}

packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class AdsRequestProxyAPIDelegate: PigeonApiDelegateIMAAdsRequest {
1313
/// The current version of the `interactive_media_ads` plugin.
1414
///
1515
/// This must match the version in pubspec.yaml.
16-
static let pluginVersion = "0.2.2+14"
16+
static let pluginVersion = "0.2.2+15"
1717

1818
func pigeonDefaultConstructor(
1919
pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer,

packages/interactive_media_ads/lib/src/android/android_ads_manager.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class AndroidAdsManager extends PlatformAdsManager {
3333

3434
@override
3535
Future<void> init(AdsManagerInitParams params) {
36-
return _manager.init();
36+
return _manager.init(null);
3737
}
3838

3939
@override

0 commit comments

Comments
 (0)