@@ -445,6 +445,10 @@ protocol InteractiveMediaAdsLibraryPigeonProxyApiDelegate {
445445 func pigeonApiIMAFriendlyObstruction(
446446 _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar
447447 ) -> PigeonApiIMAFriendlyObstruction
448+ /// An implementation of [PigeonApiIMACompanionAd] used to add a new Dart instance of
449+ /// `IMACompanionAd` to the Dart `InstanceManager` and make calls to Dart.
450+ func pigeonApiIMACompanionAd( _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar )
451+ -> PigeonApiIMACompanionAd
448452}
449453
450454extension InteractiveMediaAdsLibraryPigeonProxyApiDelegate {
@@ -769,8 +773,20 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter:
769773 return
770774 }
771775
772- if let instance = value as? NSObject {
773- pigeonRegistrar. apiDelegate. pigeonApiNSObject ( pigeonRegistrar) . pigeonNewInstance (
776+ if let instance = value as? IMAFriendlyObstruction {
777+ pigeonRegistrar. apiDelegate. pigeonApiIMAFriendlyObstruction ( pigeonRegistrar)
778+ . pigeonNewInstance (
779+ pigeonInstance: instance
780+ ) { _ in }
781+ super. writeByte ( 128 )
782+ super. writeValue (
783+ pigeonRegistrar. instanceManager. identifierWithStrongReference (
784+ forInstance: instance as AnyObject ) !)
785+ return
786+ }
787+
788+ if let instance = value as? IMACompanionAd {
789+ pigeonRegistrar. apiDelegate. pigeonApiIMACompanionAd ( pigeonRegistrar) . pigeonNewInstance (
774790 pigeonInstance: instance
775791 ) { _ in }
776792 super. writeByte ( 128 )
@@ -780,11 +796,10 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter:
780796 return
781797 }
782798
783- if let instance = value as? IMAFriendlyObstruction {
784- pigeonRegistrar. apiDelegate. pigeonApiIMAFriendlyObstruction ( pigeonRegistrar)
785- . pigeonNewInstance (
786- pigeonInstance: instance
787- ) { _ in }
799+ if let instance = value as? NSObject {
800+ pigeonRegistrar. apiDelegate. pigeonApiNSObject ( pigeonRegistrar) . pigeonNewInstance (
801+ pigeonInstance: instance
802+ ) { _ in }
788803 super. writeByte ( 128 )
789804 super. writeValue (
790805 pigeonRegistrar. instanceManager. identifierWithStrongReference (
@@ -3156,6 +3171,11 @@ protocol PigeonApiProtocolIMAFriendlyObstruction {
31563171final class PigeonApiIMAFriendlyObstruction : PigeonApiProtocolIMAFriendlyObstruction {
31573172 unowned let pigeonRegistrar : InteractiveMediaAdsLibraryPigeonProxyApiRegistrar
31583173 let pigeonDelegate : PigeonApiDelegateIMAFriendlyObstruction
3174+ ///An implementation of [NSObject] used to access callback methods
3175+ var pigeonApiNSObject : PigeonApiNSObject {
3176+ return pigeonRegistrar. apiDelegate. pigeonApiNSObject ( pigeonRegistrar)
3177+ }
3178+
31593179 init (
31603180 pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar ,
31613181 delegate: PigeonApiDelegateIMAFriendlyObstruction
@@ -3244,3 +3264,86 @@ final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruc
32443264 }
32453265 }
32463266}
3267+ protocol PigeonApiDelegateIMACompanionAd {
3268+ /// The value for the resource of this companion.
3269+ func resourceValue( pigeonApi: PigeonApiIMACompanionAd , pigeonInstance: IMACompanionAd ) throws
3270+ -> String ?
3271+ /// The API needed to execute this ad, or nil if unavailable.
3272+ func apiFramework( pigeonApi: PigeonApiIMACompanionAd , pigeonInstance: IMACompanionAd ) throws
3273+ -> String ?
3274+ /// The width of the companion in pixels.
3275+ ///
3276+ /// 0 if unavailable.
3277+ func width( pigeonApi: PigeonApiIMACompanionAd , pigeonInstance: IMACompanionAd ) throws -> Int64
3278+ /// The height of the companion in pixels.
3279+ ///
3280+ /// 0 if unavailable.
3281+ func height( pigeonApi: PigeonApiIMACompanionAd , pigeonInstance: IMACompanionAd ) throws -> Int64
3282+ }
3283+
3284+ protocol PigeonApiProtocolIMACompanionAd {
3285+ }
3286+
3287+ final class PigeonApiIMACompanionAd : PigeonApiProtocolIMACompanionAd {
3288+ unowned let pigeonRegistrar : InteractiveMediaAdsLibraryPigeonProxyApiRegistrar
3289+ let pigeonDelegate : PigeonApiDelegateIMACompanionAd
3290+ ///An implementation of [NSObject] used to access callback methods
3291+ var pigeonApiNSObject : PigeonApiNSObject {
3292+ return pigeonRegistrar. apiDelegate. pigeonApiNSObject ( pigeonRegistrar)
3293+ }
3294+
3295+ init (
3296+ pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar ,
3297+ delegate: PigeonApiDelegateIMACompanionAd
3298+ ) {
3299+ self . pigeonRegistrar = pigeonRegistrar
3300+ self . pigeonDelegate = delegate
3301+ }
3302+ ///Creates a Dart instance of IMACompanionAd and attaches it to [pigeonInstance].
3303+ func pigeonNewInstance(
3304+ pigeonInstance: IMACompanionAd , completion: @escaping ( Result < Void , PigeonError > ) -> Void
3305+ ) {
3306+ if pigeonRegistrar. ignoreCallsToDart {
3307+ completion (
3308+ . failure(
3309+ PigeonError (
3310+ code: " ignore-calls-error " ,
3311+ message: " Calls to Dart are being ignored. " , details: " " ) ) )
3312+ return
3313+ }
3314+ if pigeonRegistrar. instanceManager. containsInstance ( pigeonInstance as AnyObject ) {
3315+ completion ( . success( Void ( ) ) )
3316+ return
3317+ }
3318+ let pigeonIdentifierArg = pigeonRegistrar. instanceManager. addHostCreatedInstance (
3319+ pigeonInstance as AnyObject )
3320+ let resourceValueArg = try ! pigeonDelegate. resourceValue (
3321+ pigeonApi: self , pigeonInstance: pigeonInstance)
3322+ let apiFrameworkArg = try ! pigeonDelegate. apiFramework (
3323+ pigeonApi: self , pigeonInstance: pigeonInstance)
3324+ let widthArg = try ! pigeonDelegate. width ( pigeonApi: self , pigeonInstance: pigeonInstance)
3325+ let heightArg = try ! pigeonDelegate. height ( pigeonApi: self , pigeonInstance: pigeonInstance)
3326+ let binaryMessenger = pigeonRegistrar. binaryMessenger
3327+ let codec = pigeonRegistrar. codec
3328+ let channelName : String =
3329+ " dev.flutter.pigeon.interactive_media_ads.IMACompanionAd.pigeon_newInstance "
3330+ let channel = FlutterBasicMessageChannel (
3331+ name: channelName, binaryMessenger: binaryMessenger, codec: codec)
3332+ channel. sendMessage (
3333+ [ pigeonIdentifierArg, resourceValueArg, apiFrameworkArg, widthArg, heightArg] as [ Any ? ]
3334+ ) { response in
3335+ guard let listResponse = response as? [ Any ? ] else {
3336+ completion ( . failure( createConnectionError ( withChannelName: channelName) ) )
3337+ return
3338+ }
3339+ if listResponse. count > 1 {
3340+ let code : String = listResponse [ 0 ] as! String
3341+ let message : String ? = nilOrValue ( listResponse [ 1 ] )
3342+ let details : String ? = nilOrValue ( listResponse [ 2 ] )
3343+ completion ( . failure( PigeonError ( code: code, message: message, details: details) ) )
3344+ } else {
3345+ completion ( . success( Void ( ) ) )
3346+ }
3347+ }
3348+ }
3349+ }
0 commit comments