Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
9f02730
get libraries to generate
bparrishMines Apr 26, 2024
5f767fb
add a bunch of classes
bparrishMines Apr 26, 2024
b3317a0
some more videview stuff
bparrishMines Apr 26, 2024
631c1e0
some display implementation for android
bparrishMines Apr 27, 2024
35a4445
add the minimum required wrappings
bparrishMines Apr 29, 2024
8ac0311
fix build error
bparrishMines Apr 29, 2024
bc4d770
implement other platform classes
bparrishMines Apr 30, 2024
1f74ead
start creating an implementation
bparrishMines Apr 30, 2024
4320f50
move interfaces to bottom and format
bparrishMines Apr 30, 2024
e85027d
fix callback events
bparrishMines May 6, 2024
6739d7f
remove prints
bparrishMines May 7, 2024
e803962
fix removeStrongReference error
bparrishMines May 7, 2024
0d59a8e
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 9, 2024
6b22ebc
also send time updates
bparrishMines May 9, 2024
957e2ba
combine implementation files
bparrishMines May 9, 2024
d0be873
fix lint warnings
bparrishMines May 9, 2024
875d6be
fix Android dartPluginClass
bparrishMines May 9, 2024
0122f6c
fix missing params call
bparrishMines May 9, 2024
d0971db
make tracking ad progress in ad display container
bparrishMines May 10, 2024
6b8ee3a
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 14, 2024
b1ace40
add missing error codes
bparrishMines May 14, 2024
cc728d2
discard ad break
bparrishMines May 14, 2024
f345071
licenses
bparrishMines May 14, 2024
90965aa
copyright header
bparrishMines May 14, 2024
93c239b
first test file
bparrishMines May 14, 2024
c1b00f1
working tests
bparrishMines May 14, 2024
dce1723
more working tests
bparrishMines May 14, 2024
76af339
more tests
bparrishMines May 14, 2024
c2d6f67
media player test
bparrishMines May 14, 2024
9dde9d6
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 14, 2024
15aa049
some more tests
bparrishMines May 14, 2024
7c3dc18
finish platform unit tests
bparrishMines May 14, 2024
48c7a42
switch tests to use TestProxyApiRegistrar
bparrishMines May 14, 2024
c5842ad
fix ad size
bparrishMines May 14, 2024
8157448
version bump
bparrishMines May 15, 2024
37fce6f
fix name
bparrishMines May 15, 2024
f00caf2
remove pigeon bro
bparrishMines May 15, 2024
979ad8c
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 15, 2024
bdac900
start proxy
bparrishMines May 15, 2024
9250e8d
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 16, 2024
1dc6a07
change calls to proxy
bparrishMines May 16, 2024
713bdbd
remove pigeon
bparrishMines May 16, 2024
828ea3a
documentation
bparrishMines May 16, 2024
b4e8cda
fix key and some cleanup
bparrishMines May 16, 2024
c25d360
working addisplaycontainer test
bparrishMines May 16, 2024
849ca63
erge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 17, 2024
b182af5
onerror and oncompletion test
bparrishMines May 19, 2024
e2fb27e
on prepared test
bparrishMines May 19, 2024
48fb4de
pause ad and play ad tests
bparrishMines May 19, 2024
0bbba9a
assert and tests
bparrishMines May 20, 2024
1ce77c1
request ads and onAdsLoaded test
bparrishMines May 20, 2024
c7a320e
finish tests
bparrishMines May 20, 2024
a558a54
finish basic tests
bparrishMines May 20, 2024
1c3a2c2
finish all tests
bparrishMines May 20, 2024
428ecec
formatting
bparrishMines May 20, 2024
e8d822c
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 20, 2024
5311d85
version bump and license
bparrishMines May 20, 2024
ba23b1d
lower kotlin version
bparrishMines May 20, 2024
52a2c49
try fix lint
bparrishMines May 20, 2024
f32e74f
update generated kotlin
bparrishMines May 20, 2024
75957f2
override pigeonRegistrar type
bparrishMines May 20, 2024
6743d69
make platform classes base to be mockable
bparrishMines May 20, 2024
3edc221
separate some logic
bparrishMines May 20, 2024
3893efe
separate class implementations
bparrishMines May 20, 2024
1c5fac7
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 20, 2024
a30c9fc
doc improvements
bparrishMines May 20, 2024
8fa430b
lower meta version to 1.12.0
bparrishMines May 20, 2024
220e2f0
move meta to 1.10.0
bparrishMines May 20, 2024
f55805f
only null ad duration on stop and error
bparrishMines May 21, 2024
284098a
stop any ad tracking before starting a new one
bparrishMines May 21, 2024
69e088c
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 21, 2024
48828e3
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 22, 2024
891f4d4
stop ad progress tracking on video completion
bparrishMines May 22, 2024
9ada3ef
change generated kotlin library name
bparrishMines May 30, 2024
84d1ff5
docs for kotlin classes
bparrishMines May 30, 2024
1abcabc
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 30, 2024
b4b2152
variable docs
bparrishMines May 31, 2024
519c68e
beef up docs and some formatting
bparrishMines May 31, 2024
f7d25c6
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines May 31, 2024
8923d5f
uncomment pigeon file
bparrishMines Jun 1, 2024
9145273
an
bparrishMines Jun 2, 2024
c3ce374
add an unknown value for enum
bparrishMines Jun 3, 2024
5e11462
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines Jun 3, 2024
24f0baa
Merge branch 'main' of github.com:flutter/packages into ima_android
bparrishMines Jun 25, 2024
dc6f38a
comment pigeon
bparrishMines Jun 25, 2024
819441a
add flutter request agent
bparrishMines Jun 25, 2024
eda9cac
request agent test
bparrishMines Jun 25, 2024
6a18fac
formatting and lint
bparrishMines Jun 25, 2024
4829c85
only run example on Android
bparrishMines Jun 25, 2024
463bfe4
small nits
bparrishMines Jun 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add an unknown value for enum
  • Loading branch information
bparrishMines committed Jun 3, 2024
commit c3ce374ca0b40efe5f8e0e7974e4c51a5c997e7a
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class AdErrorProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
AdError.AdErrorCode.INVALID_ARGUMENTS -> AdErrorCode.INVALID_ARGUMENTS
AdError.AdErrorCode.PLAYLIST_NO_CONTENT_TRACKING -> AdErrorCode.PLAYLIST_NO_CONTENT_TRACKING
AdError.AdErrorCode.UNEXPECTED_ADS_LOADED_EVENT -> AdErrorCode.UNEXPECTED_ADS_LOADED_EVENT
else -> AdErrorCode.UNKNOWN
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,10 +303,11 @@ private class PigeonInstanceManagerApi(val binaryMessenger: BinaryMessenger) {
codec)
if (instanceManager != null) {
channel.setMessageHandler { message, reply ->
val identifier = message as Number
val args = message as List<Any?>
val identifierArg = args[0].let { num -> if (num is Int) num.toLong() else num as Long }
val wrapped: List<Any?> =
try {
instanceManager.remove<Any?>(identifier.toLong())
instanceManager.remove<Any?>(identifierArg)
listOf<Any?>(null)
} catch (exception: Throwable) {
wrapError(exception)
Expand Down Expand Up @@ -341,11 +342,11 @@ private class PigeonInstanceManagerApi(val binaryMessenger: BinaryMessenger) {
}
}

fun removeStrongReference(identifier: Long, callback: (Result<Unit>) -> Unit) {
fun removeStrongReference(identifierArg: Long, callback: (Result<Unit>) -> Unit) {
val channelName =
"dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.removeStrongReference"
val channel = BasicMessageChannel<Any?>(binaryMessenger, channelName, codec)
channel.send(identifier) {
channel.send(listOf(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?)))
Expand All @@ -358,7 +359,6 @@ private class PigeonInstanceManagerApi(val binaryMessenger: BinaryMessenger) {
}
}
}

/**
* Provides implementations for each ProxyApi implementation and provides access to resources needed
* by any implementation.
Expand Down Expand Up @@ -395,13 +395,17 @@ abstract class PigeonProxyApiRegistrar(val binaryMessenger: BinaryMessenger) {
* An implementation of [PigeonApiBaseDisplayContainer] used to add a new Dart instance of
* `BaseDisplayContainer` to the Dart `InstanceManager`.
*/
abstract fun getPigeonApiBaseDisplayContainer(): PigeonApiBaseDisplayContainer
open fun getPigeonApiBaseDisplayContainer(): PigeonApiBaseDisplayContainer {
return PigeonApiBaseDisplayContainer(this)
}

/**
* An implementation of [PigeonApiAdDisplayContainer] used to add a new Dart instance of
* `AdDisplayContainer` to the Dart `InstanceManager`.
*/
abstract fun getPigeonApiAdDisplayContainer(): PigeonApiAdDisplayContainer
open fun getPigeonApiAdDisplayContainer(): PigeonApiAdDisplayContainer {
return PigeonApiAdDisplayContainer(this)
}

/**
* An implementation of [PigeonApiAdsLoader] used to add a new Dart instance of `AdsLoader` to the
Expand Down Expand Up @@ -437,7 +441,9 @@ abstract class PigeonProxyApiRegistrar(val binaryMessenger: BinaryMessenger) {
* An implementation of [PigeonApiContentProgressProvider] used to add a new Dart instance of
* `ContentProgressProvider` to the Dart `InstanceManager`.
*/
abstract fun getPigeonApiContentProgressProvider(): PigeonApiContentProgressProvider
open fun getPigeonApiContentProgressProvider(): PigeonApiContentProgressProvider {
return PigeonApiContentProgressProvider(this)
}

/**
* An implementation of [PigeonApiAdsManager] used to add a new Dart instance of `AdsManager` to
Expand Down Expand Up @@ -467,7 +473,9 @@ abstract class PigeonProxyApiRegistrar(val binaryMessenger: BinaryMessenger) {
* An implementation of [PigeonApiImaSdkSettings] used to add a new Dart instance of
* `ImaSdkSettings` to the Dart `InstanceManager`.
*/
abstract fun getPigeonApiImaSdkSettings(): PigeonApiImaSdkSettings
open fun getPigeonApiImaSdkSettings(): PigeonApiImaSdkSettings {
return PigeonApiImaSdkSettings(this)
}

/**
* An implementation of [PigeonApiVideoProgressUpdate] used to add a new Dart instance of
Expand Down Expand Up @@ -509,7 +517,9 @@ abstract class PigeonProxyApiRegistrar(val binaryMessenger: BinaryMessenger) {
* An implementation of [PigeonApiView] used to add a new Dart instance of `View` to the Dart
* `InstanceManager`.
*/
abstract fun getPigeonApiView(): PigeonApiView
open fun getPigeonApiView(): PigeonApiView {
return PigeonApiView(this)
}

/**
* An implementation of [PigeonApiMediaPlayer] used to add a new Dart instance of `MediaPlayer` to
Expand Down Expand Up @@ -732,7 +742,9 @@ enum class AdErrorCode(val raw: Int) {
*/
VAST_TRAFFICKING_ERROR(21),
/** There was an error playing the video ad. */
VIDEO_PLAY_ERROR(22);
VIDEO_PLAY_ERROR(22),
/** The error code is not recognized by this wrapper. */
UNKNOWN(23);

companion object {
fun ofRaw(raw: Int): AdErrorCode? {
Expand Down Expand Up @@ -842,7 +854,7 @@ enum class AdEventType(val raw: Int) {
* https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/BaseDisplayContainer.html.
*/
@Suppress("UNCHECKED_CAST")
abstract class PigeonApiBaseDisplayContainer(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
open class PigeonApiBaseDisplayContainer(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
@Suppress("LocalVariableName", "FunctionName")
/** Creates a Dart instance of BaseDisplayContainer and attaches it to [pigeon_instanceArg]. */
fun pigeon_newInstance(
Expand Down Expand Up @@ -880,7 +892,7 @@ abstract class PigeonApiBaseDisplayContainer(open val pigeonRegistrar: PigeonPro
* https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdDisplayContainer.
*/
@Suppress("UNCHECKED_CAST")
abstract class PigeonApiAdDisplayContainer(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
open class PigeonApiAdDisplayContainer(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
@Suppress("LocalVariableName", "FunctionName")
/** Creates a Dart instance of AdDisplayContainer and attaches it to [pigeon_instanceArg]. */
fun pigeon_newInstance(
Expand Down Expand Up @@ -1325,7 +1337,7 @@ abstract class PigeonApiAdsRequest(open val pigeonRegistrar: PigeonProxyApiRegis
* https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/android/api/reference/com/google/ads/interactivemedia/v3/api/player/ContentProgressProvider.html.
*/
@Suppress("UNCHECKED_CAST")
abstract class PigeonApiContentProgressProvider(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
open class PigeonApiContentProgressProvider(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
@Suppress("LocalVariableName", "FunctionName")
/** Creates a Dart instance of ContentProgressProvider and attaches it to [pigeon_instanceArg]. */
fun pigeon_newInstance(
Expand Down Expand Up @@ -1872,7 +1884,7 @@ abstract class PigeonApiImaSdkFactory(open val pigeonRegistrar: PigeonProxyApiRe
* https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/ImaSdkSettings.html.
*/
@Suppress("UNCHECKED_CAST")
abstract class PigeonApiImaSdkSettings(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
open class PigeonApiImaSdkSettings(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
@Suppress("LocalVariableName", "FunctionName")
/** Creates a Dart instance of ImaSdkSettings and attaches it to [pigeon_instanceArg]. */
fun pigeon_newInstance(
Expand Down Expand Up @@ -2484,7 +2496,7 @@ abstract class PigeonApiVideoView(open val pigeonRegistrar: PigeonProxyApiRegist
* See https://developer.android.com/reference/android/view/View.
*/
@Suppress("UNCHECKED_CAST")
abstract class PigeonApiView(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
open class PigeonApiView(open val pigeonRegistrar: PigeonProxyApiRegistrar) {
@Suppress("LocalVariableName", "FunctionName")
/** Creates a Dart instance of View and attaches it to [pigeon_instanceArg]. */
fun pigeon_newInstance(pigeon_instanceArg: android.view.View, callback: (Result<Unit>) -> Unit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ extension NativeAdErrorCodeConverter on ima.AdErrorCode {
ima.AdErrorCode.vastTooManyRedirects => AdErrorCode.vastTooManyRedirects,
ima.AdErrorCode.vastTraffickingError => AdErrorCode.vastTraffickingError,
ima.AdErrorCode.videoPlayError => AdErrorCode.videoPlayError,
ima.AdErrorCode.unknown => AdErrorCode.unknownError,
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -328,56 +328,67 @@ class PigeonInstanceManager {
class _PigeonInstanceManagerApi {
/// Constructor for [_PigeonInstanceManagerApi].
_PigeonInstanceManagerApi({BinaryMessenger? binaryMessenger})
: _binaryMessenger = binaryMessenger;
: __pigeon_binaryMessenger = binaryMessenger;

final BinaryMessenger? _binaryMessenger;
final BinaryMessenger? __pigeon_binaryMessenger;

static const MessageCodec<Object?> pigeonChannelCodec =
StandardMessageCodec();

static void setUpMessageHandlers({
bool pigeon_clearHandlers = false,
BinaryMessenger? binaryMessenger,
PigeonInstanceManager? instanceManager,
}) {
const String channelName =
r'dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.removeStrongReference';
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
channelName,
pigeonChannelCodec,
binaryMessenger: binaryMessenger,
);
channel.setMessageHandler((Object? message) async {
assert(
message != null,
'Argument for $channelName was null.',
);
final int? identifier = message as int?;
assert(
identifier != null,
r'Argument for $channelName, expected non-null int.',
);
(instanceManager ?? PigeonInstanceManager.instance).remove(identifier!);
return <Object?>[];
});
{
final BasicMessageChannel<Object?> __pigeon_channel = BasicMessageChannel<
Object?>(
'dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.removeStrongReference',
pigeonChannelCodec,
binaryMessenger: binaryMessenger);
if (pigeon_clearHandlers) {
__pigeon_channel.setMessageHandler(null);
} else {
__pigeon_channel.setMessageHandler((Object? message) async {
assert(message != null,
'Argument for dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.removeStrongReference was null.');
final List<Object?> args = (message as List<Object?>?)!;
final int? arg_identifier = (args[0] as int?);
assert(arg_identifier != null,
'Argument for dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.removeStrongReference was null, expected non-null int.');
try {
(instanceManager ?? PigeonInstanceManager.instance)
.remove(arg_identifier!);
return wrapResponse(empty: true);
} on PlatformException catch (e) {
return wrapResponse(error: e);
} catch (e) {
return wrapResponse(
error: PlatformException(code: 'error', message: e.toString()));
}
});
}
}
}

Future<void> removeStrongReference(int identifier) async {
const String channelName =
r'dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.removeStrongReference';
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
channelName,
const String __pigeon_channelName =
'dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.removeStrongReference';
final BasicMessageChannel<Object?> __pigeon_channel =
BasicMessageChannel<Object?>(
__pigeon_channelName,
pigeonChannelCodec,
binaryMessenger: _binaryMessenger,
binaryMessenger: __pigeon_binaryMessenger,
);
final List<Object?>? replyList =
await channel.send(identifier) as List<Object?>?;
if (replyList == null) {
throw _createConnectionError(channelName);
} else if (replyList.length > 1) {
final List<Object?>? __pigeon_replyList =
await __pigeon_channel.send(<Object?>[identifier]) as List<Object?>?;
if (__pigeon_replyList == null) {
throw _createConnectionError(__pigeon_channelName);
} else if (__pigeon_replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
code: __pigeon_replyList[0]! as String,
message: __pigeon_replyList[1] as String?,
details: __pigeon_replyList[2],
);
} else {
return;
Expand All @@ -388,21 +399,23 @@ class _PigeonInstanceManagerApi {
///
/// This is typically called after a hot restart.
Future<void> clear() async {
const String channelName =
r'dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.clear';
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
channelName,
const String __pigeon_channelName =
'dev.flutter.pigeon.interactive_media_ads.PigeonInstanceManagerApi.clear';
final BasicMessageChannel<Object?> __pigeon_channel =
BasicMessageChannel<Object?>(
__pigeon_channelName,
pigeonChannelCodec,
binaryMessenger: _binaryMessenger,
binaryMessenger: __pigeon_binaryMessenger,
);
final List<Object?>? replyList = await channel.send(null) as List<Object?>?;
if (replyList == null) {
throw _createConnectionError(channelName);
} else if (replyList.length > 1) {
final List<Object?>? __pigeon_replyList =
await __pigeon_channel.send(null) as List<Object?>?;
if (__pigeon_replyList == null) {
throw _createConnectionError(__pigeon_channelName);
} else if (__pigeon_replyList.length > 1) {
throw PlatformException(
code: replyList[0]! as String,
message: replyList[1] as String?,
details: replyList[2],
code: __pigeon_replyList[0]! as String,
message: __pigeon_replyList[1] as String?,
details: __pigeon_replyList[2],
);
} else {
return;
Expand Down Expand Up @@ -513,6 +526,9 @@ enum AdErrorCode {

/// There was an error playing the video ad.
videoPlayError,

/// The error code is not recognized by this wrapper.
unknown,
}

/// Specifies when the error was encountered, during either ad loading or playback.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ enum AdErrorCode {

/// There was an error playing the video ad.
videoPlayError,

/// The error code is not recognized by this wrapper.
unknown,
}

/// Specifies when the error was encountered, during either ad loading or playback.
Expand Down
10 changes: 5 additions & 5 deletions packages/interactive_media_ads/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ dev_dependencies:
flutter_test:
sdk: flutter
mockito: 5.4.4
# pigeon:
# git:
# url: [email protected]:bparrishMines/packages.git
# ref: pigeon_kotlin_split
# path: packages/pigeon
pigeon:
git:
url: [email protected]:bparrishMines/packages.git
ref: pigeon_kotlin_split
path: packages/pigeon

topics:
- ads