From 131811f9c024cb0da394935b75123da513d92bd9 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 11 Aug 2025 17:51:33 -0400 Subject: [PATCH 01/30] run pigeon --- packages/interactive_media_ads/CHANGELOG.md | 4 + packages/interactive_media_ads/README.md | 3 +- .../AdsRequestProxyApi.kt | 2 +- .../AdsRequestProxyAPIDelegate.swift | 2 +- .../InteractiveMediaAdsLibrary.g.swift | 288 ++++++++++ .../lib/src/ios/interactive_media_ads.g.dart | 498 ++++++++++++++++++ .../pigeons/interactive_media_ads_ios.dart | 131 +++++ 7 files changed, 924 insertions(+), 4 deletions(-) diff --git a/packages/interactive_media_ads/CHANGELOG.md b/packages/interactive_media_ads/CHANGELOG.md index 7a4e068c4a0..88ed0a0b6dc 100644 --- a/packages/interactive_media_ads/CHANGELOG.md +++ b/packages/interactive_media_ads/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.6+3 + +* Adds internal wrappers for iOS native `IMAAd` and `IMAUniversalAdID`. + ## 0.2.6+2 * Updates kotlin version to 2.2.0 to enable gradle 8.11 support. diff --git a/packages/interactive_media_ads/README.md b/packages/interactive_media_ads/README.md index b80b5a10d5f..cdefce296a9 100644 --- a/packages/interactive_media_ads/README.md +++ b/packages/interactive_media_ads/README.md @@ -14,8 +14,7 @@ a separate video player positioned on top of the app's content video player. | **Support** | SDK 21+ | 12.0+ | **NOTE:** -* Companion ads, Background Audio ads and Google Dynamic Ad Insertion methods are currently not - supported. +* Background Audio ads and Google Dynamic Ad Insertion methods are currently not supported. ## IMA client-side overview 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 d5928fe1a48..8b48a5a2db4 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.6+2" + const val pluginVersion = "0.2.6+3" } override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) { 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 d98862c976d..baf2bcab164 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.6+2" + static let pluginVersion = "0.2.6+3" func pigeonDefaultConstructor( pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift index a7c0614893d..3a8b92df129 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift @@ -472,6 +472,14 @@ protocol InteractiveMediaAdsLibraryPigeonProxyApiDelegate { /// `IMAAdPodInfo` to the Dart `InstanceManager` and make calls to Dart. func pigeonApiIMAAdPodInfo(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdPodInfo + /// An implementation of [PigeonApiIMAAd] used to add a new Dart instance of + /// `IMAAd` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiIMAAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAd + /// An implementation of [PigeonApiIMAUniversalAdID] used to add a new Dart instance of + /// `IMAUniversalAdID` to the Dart `InstanceManager` and make calls to Dart. + func pigeonApiIMAUniversalAdID(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAUniversalAdID } extension InteractiveMediaAdsLibraryPigeonProxyApiDelegate { @@ -868,6 +876,28 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: return } + if let instance = value as? IMAAd { + pigeonRegistrar.apiDelegate.pigeonApiIMAAd(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) + return + } + + if let instance = value as? IMAUniversalAdID { + pigeonRegistrar.apiDelegate.pigeonApiIMAUniversalAdID(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } + super.writeByte(128) + super.writeValue( + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) + return + } + if let instance = value as AnyObject?, pigeonRegistrar.instanceManager.containsInstance(instance) { @@ -4655,3 +4685,261 @@ final class PigeonApiIMAAdPodInfo: PigeonApiProtocolIMAAdPodInfo { } } } +protocol PigeonApiDelegateIMAAd { + /// The ad ID as specified in the VAST response. + func adId(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// The ad title from the VAST response. + func adTitle(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// The ad description. + func adDescription(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// The source ad server information included in the ad response. + func adSystem(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// The companion ads specified in the VAST response when using DAI. + /// + /// Empty for client-side ads. + func companionAds(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMACompanionAd] + /// Content type of the currently selected creative. + /// + /// For linear creatives returns the content type of the currently selected + /// media file. Returns empty string if no creative or media file is selected + /// on this ad. + func contentType(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// The duration of the ad from the VAST response. + func duration(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Double + /// The UI elements that will be displayed during ad playback. + func uiElements(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [UIElementType] + /// The width of the ad asset. + /// + /// For non-linear ads, this is the actual width of the ad representation. + /// For linear ads, since they scale seamlessly, we currently return 0 for + /// width. + func width(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 + /// The height of the ad asset. + /// + /// For non-linear ads, this is the actual height of the ad representation. + /// For linear ads, since they scale seamlessly, we currently return 0 for + /// height. + func height(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 + /// The width of the selected creative as specified in the VAST response. + func vastMediaWidth(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 + /// The height of the selected creative as specified in the VAST response. + func vastMediaHeight(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 + /// The bitrate of the selected creative as specified in the VAST response. + func vastMediaBitrate(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 + /// Specifies whether the ad is linear or non-linear. + func isLinear(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Bool + /// Specifies whether the ad is skippable. + func isSkippable(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Bool + /// The number of seconds of playback before the ad becomes skippable. + /// + /// -1 is returned for non skippable ads or if this is unavailable. + func skipTimeOffset(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Double + /// Set of ad podding properties. + func adPodInfo(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> IMAAdPodInfo + /// String representing custom trafficking parameters from the VAST response. + func traffickingParameters(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// Returns the ID of the selected creative for the ad. + func creativeID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// Returns the ISCI (Industry Standard Commercial Identifier) code for an ad. + /// + /// This is the Ad-ID of the selected creative in the VAST response. + func creativeAdID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// The list of all UniversalAdIds of the selected creative for this ad. + /// + /// Returns an empty array if no universal ad IDs are found. + func universalAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMAUniversalAdID] + /// The advertiser name as defined by the serving party. + func advertiserName(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// Returns the URL associated with the survey for the given ad. + func surveyURL(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String? + /// Returns the first deal ID present in the wrapper chain for the current ad, + /// starting from the top. + func dealID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String + /// The IDs of the ads, starting with the first wrapper ad. + func wrapperAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] + /// The IDs of the ads’ creatives, starting with the first wrapper ad. + func wrapperCreativeIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] + /// Ad systems used for wrapper ads. + /// + /// The ad systems returned begin with the first wrapper ad and continue to + /// each wrapper ad recursively. + func wrapperSystems(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] +} + +protocol PigeonApiProtocolIMAAd { +} + +final class PigeonApiIMAAd: PigeonApiProtocolIMAAd { + unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateIMAAd + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAd + ) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + ///Creates a Dart instance of IMAAd and attaches it to [pigeonInstance]. + func pigeonNewInstance( + pigeonInstance: IMAAd, completion: @escaping (Result) -> Void + ) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) + let adIdArg = try! pigeonDelegate.adId(pigeonApi: self, pigeonInstance: pigeonInstance) + let adTitleArg = try! pigeonDelegate.adTitle(pigeonApi: self, pigeonInstance: pigeonInstance) + let adDescriptionArg = try! pigeonDelegate.adDescription( + pigeonApi: self, pigeonInstance: pigeonInstance) + let adSystemArg = try! pigeonDelegate.adSystem( + pigeonApi: self, pigeonInstance: pigeonInstance) + let companionAdsArg = try! pigeonDelegate.companionAds( + pigeonApi: self, pigeonInstance: pigeonInstance) + let contentTypeArg = try! pigeonDelegate.contentType( + pigeonApi: self, pigeonInstance: pigeonInstance) + let durationArg = try! pigeonDelegate.duration( + pigeonApi: self, pigeonInstance: pigeonInstance) + let uiElementsArg = try! pigeonDelegate.uiElements( + pigeonApi: self, pigeonInstance: pigeonInstance) + let widthArg = try! pigeonDelegate.width(pigeonApi: self, pigeonInstance: pigeonInstance) + let heightArg = try! pigeonDelegate.height(pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaWidthArg = try! pigeonDelegate.vastMediaWidth( + pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaHeightArg = try! pigeonDelegate.vastMediaHeight( + pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaBitrateArg = try! pigeonDelegate.vastMediaBitrate( + pigeonApi: self, pigeonInstance: pigeonInstance) + let isLinearArg = try! pigeonDelegate.isLinear( + pigeonApi: self, pigeonInstance: pigeonInstance) + let isSkippableArg = try! pigeonDelegate.isSkippable( + pigeonApi: self, pigeonInstance: pigeonInstance) + let skipTimeOffsetArg = try! pigeonDelegate.skipTimeOffset( + pigeonApi: self, pigeonInstance: pigeonInstance) + let adPodInfoArg = try! pigeonDelegate.adPodInfo( + pigeonApi: self, pigeonInstance: pigeonInstance) + let traffickingParametersArg = try! pigeonDelegate.traffickingParameters( + pigeonApi: self, pigeonInstance: pigeonInstance) + let creativeIDArg = try! pigeonDelegate.creativeID( + pigeonApi: self, pigeonInstance: pigeonInstance) + let creativeAdIDArg = try! pigeonDelegate.creativeAdID( + pigeonApi: self, pigeonInstance: pigeonInstance) + let universalAdIDsArg = try! pigeonDelegate.universalAdIDs( + pigeonApi: self, pigeonInstance: pigeonInstance) + let advertiserNameArg = try! pigeonDelegate.advertiserName( + pigeonApi: self, pigeonInstance: pigeonInstance) + let surveyURLArg = try! pigeonDelegate.surveyURL( + pigeonApi: self, pigeonInstance: pigeonInstance) + let dealIDArg = try! pigeonDelegate.dealID(pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperAdIDsArg = try! pigeonDelegate.wrapperAdIDs( + pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperCreativeIDsArg = try! pigeonDelegate.wrapperCreativeIDs( + pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperSystemsArg = try! pigeonDelegate.wrapperSystems( + pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage( + [ + pigeonIdentifierArg, adIdArg, adTitleArg, adDescriptionArg, adSystemArg, companionAdsArg, + contentTypeArg, durationArg, uiElementsArg, widthArg, heightArg, vastMediaWidthArg, + vastMediaHeightArg, vastMediaBitrateArg, isLinearArg, isSkippableArg, skipTimeOffsetArg, + adPodInfoArg, traffickingParametersArg, creativeIDArg, creativeAdIDArg, universalAdIDsArg, + advertiserNameArg, surveyURLArg, dealIDArg, wrapperAdIDsArg, wrapperCreativeIDsArg, + wrapperSystemsArg, + ] as [Any?] + ) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} +protocol PigeonApiDelegateIMAUniversalAdID { + /// The universal ad ID value. + /// + /// This will be “unknown” if it isn’t defined by the ad. + func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws + -> String + /// The universal ad ID registry with which the value is registered. + /// + /// This will be “unknown” if it isn’t defined by the ad. + func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws + -> String +} + +protocol PigeonApiProtocolIMAUniversalAdID { +} + +final class PigeonApiIMAUniversalAdID: PigeonApiProtocolIMAUniversalAdID { + unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateIMAUniversalAdID + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAUniversalAdID + ) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + ///Creates a Dart instance of IMAUniversalAdID and attaches it to [pigeonInstance]. + func pigeonNewInstance( + pigeonInstance: IMAUniversalAdID, completion: @escaping (Result) -> Void + ) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) + let adIDValueArg = try! pigeonDelegate.adIDValue( + pigeonApi: self, pigeonInstance: pigeonInstance) + let adIDRegistryArg = try! pigeonDelegate.adIDRegistry( + pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, adIDValueArg, adIDRegistryArg] as [Any?]) { + response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} diff --git a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart index 0b3b490a609..72e486e0cd2 100644 --- a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart +++ b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart @@ -321,6 +321,9 @@ class PigeonInstanceManager { pigeon_instanceManager: instanceManager); IMAAdPodInfo.pigeon_setUpMessageHandlers( pigeon_instanceManager: instanceManager); + IMAAd.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAUniversalAdID.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); return instanceManager; } @@ -5919,3 +5922,498 @@ class IMAAdPodInfo extends PigeonInternalProxyApiBaseClass { ); } } + +/// Data object representing a single ad. +/// +/// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAAd. +class IMAAd extends PigeonInternalProxyApiBaseClass { + /// Constructs [IMAAd] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + IMAAd.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + required this.adId, + required this.adTitle, + required this.adDescription, + required this.adSystem, + required this.companionAds, + required this.contentType, + required this.duration, + required this.uiElements, + required this.width, + required this.height, + required this.vastMediaWidth, + required this.vastMediaHeight, + required this.vastMediaBitrate, + required this.isLinear, + required this.isSkippable, + required this.skipTimeOffset, + required this.adPodInfo, + required this.traffickingParameters, + required this.creativeID, + required this.creativeAdID, + required this.universalAdIDs, + required this.advertiserName, + this.surveyURL, + required this.dealID, + required this.wrapperAdIDs, + required this.wrapperCreativeIDs, + required this.wrapperSystems, + }); + + /// The ad ID as specified in the VAST response. + final String adId; + + /// The ad title from the VAST response. + final String adTitle; + + /// The ad description. + final String adDescription; + + /// The source ad server information included in the ad response. + final String adSystem; + + /// The companion ads specified in the VAST response when using DAI. + /// + /// Empty for client-side ads. + final List companionAds; + + /// Content type of the currently selected creative. + /// + /// For linear creatives returns the content type of the currently selected + /// media file. Returns empty string if no creative or media file is selected + /// on this ad. + final String contentType; + + /// The duration of the ad from the VAST response. + final double duration; + + /// The UI elements that will be displayed during ad playback. + final List uiElements; + + /// The width of the ad asset. + /// + /// For non-linear ads, this is the actual width of the ad representation. + /// For linear ads, since they scale seamlessly, we currently return 0 for + /// width. + final int width; + + /// The height of the ad asset. + /// + /// For non-linear ads, this is the actual height of the ad representation. + /// For linear ads, since they scale seamlessly, we currently return 0 for + /// height. + final int height; + + /// The width of the selected creative as specified in the VAST response. + final int vastMediaWidth; + + /// The height of the selected creative as specified in the VAST response. + final int vastMediaHeight; + + /// The bitrate of the selected creative as specified in the VAST response. + final int vastMediaBitrate; + + /// Specifies whether the ad is linear or non-linear. + final bool isLinear; + + /// Specifies whether the ad is skippable. + final bool isSkippable; + + /// The number of seconds of playback before the ad becomes skippable. + /// + /// -1 is returned for non skippable ads or if this is unavailable. + final double skipTimeOffset; + + /// Set of ad podding properties. + final IMAAdPodInfo adPodInfo; + + /// String representing custom trafficking parameters from the VAST response. + final String traffickingParameters; + + /// Returns the ID of the selected creative for the ad. + final String creativeID; + + /// Returns the ISCI (Industry Standard Commercial Identifier) code for an ad. + /// + /// This is the Ad-ID of the selected creative in the VAST response. + final String creativeAdID; + + /// The list of all UniversalAdIds of the selected creative for this ad. + /// + /// Returns an empty array if no universal ad IDs are found. + final List universalAdIDs; + + /// The advertiser name as defined by the serving party. + final String advertiserName; + + /// Returns the URL associated with the survey for the given ad. + final String? surveyURL; + + /// Returns the first deal ID present in the wrapper chain for the current ad, + /// starting from the top. + final String dealID; + + /// The IDs of the ads, starting with the first wrapper ad. + final List wrapperAdIDs; + + /// The IDs of the ads’ creatives, starting with the first wrapper ad. + final List wrapperCreativeIDs; + + /// Ad systems used for wrapper ads. + /// + /// The ad systems returned begin with the first wrapper ad and continue to + /// each wrapper ad recursively. + final List wrapperSystems; + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + IMAAd Function( + String adId, + String adTitle, + String adDescription, + String adSystem, + List companionAds, + String contentType, + double duration, + List uiElements, + int width, + int height, + int vastMediaWidth, + int vastMediaHeight, + int vastMediaBitrate, + bool isLinear, + bool isSkippable, + double skipTimeOffset, + IMAAdPodInfo adPodInfo, + String traffickingParameters, + String creativeID, + String creativeAdID, + List universalAdIDs, + String advertiserName, + String? surveyURL, + String dealID, + List wrapperAdIDs, + List wrapperCreativeIDs, + List wrapperSystems, + )? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null int.'); + final String? arg_adId = (args[1] as String?); + assert(arg_adId != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final String? arg_adTitle = (args[2] as String?); + assert(arg_adTitle != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final String? arg_adDescription = (args[3] as String?); + assert(arg_adDescription != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final String? arg_adSystem = (args[4] as String?); + assert(arg_adSystem != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final List? arg_companionAds = + (args[5] as List?)?.cast(); + assert(arg_companionAds != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null List.'); + final String? arg_contentType = (args[6] as String?); + assert(arg_contentType != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final double? arg_duration = (args[7] as double?); + assert(arg_duration != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null double.'); + final List? arg_uiElements = + (args[8] as List?)?.cast(); + assert(arg_uiElements != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null List.'); + final int? arg_width = (args[9] as int?); + assert(arg_width != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null int.'); + final int? arg_height = (args[10] as int?); + assert(arg_height != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null int.'); + final int? arg_vastMediaWidth = (args[11] as int?); + assert(arg_vastMediaWidth != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null int.'); + final int? arg_vastMediaHeight = (args[12] as int?); + assert(arg_vastMediaHeight != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null int.'); + final int? arg_vastMediaBitrate = (args[13] as int?); + assert(arg_vastMediaBitrate != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null int.'); + final bool? arg_isLinear = (args[14] as bool?); + assert(arg_isLinear != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null bool.'); + final bool? arg_isSkippable = (args[15] as bool?); + assert(arg_isSkippable != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null bool.'); + final double? arg_skipTimeOffset = (args[16] as double?); + assert(arg_skipTimeOffset != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null double.'); + final IMAAdPodInfo? arg_adPodInfo = (args[17] as IMAAdPodInfo?); + assert(arg_adPodInfo != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null IMAAdPodInfo.'); + final String? arg_traffickingParameters = (args[18] as String?); + assert(arg_traffickingParameters != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final String? arg_creativeID = (args[19] as String?); + assert(arg_creativeID != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final String? arg_creativeAdID = (args[20] as String?); + assert(arg_creativeAdID != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final List? arg_universalAdIDs = + (args[21] as List?)?.cast(); + assert(arg_universalAdIDs != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null List.'); + final String? arg_advertiserName = (args[22] as String?); + assert(arg_advertiserName != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final String? arg_surveyURL = (args[23] as String?); + final String? arg_dealID = (args[24] as String?); + assert(arg_dealID != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null String.'); + final List? arg_wrapperAdIDs = + (args[25] as List?)?.cast(); + assert(arg_wrapperAdIDs != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null List.'); + final List? arg_wrapperCreativeIDs = + (args[26] as List?)?.cast(); + assert(arg_wrapperCreativeIDs != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null List.'); + final List? arg_wrapperSystems = + (args[27] as List?)?.cast(); + assert(arg_wrapperSystems != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance was null, expected non-null List.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call( + arg_adId!, + arg_adTitle!, + arg_adDescription!, + arg_adSystem!, + arg_companionAds!, + arg_contentType!, + arg_duration!, + arg_uiElements!, + arg_width!, + arg_height!, + arg_vastMediaWidth!, + arg_vastMediaHeight!, + arg_vastMediaBitrate!, + arg_isLinear!, + arg_isSkippable!, + arg_skipTimeOffset!, + arg_adPodInfo!, + arg_traffickingParameters!, + arg_creativeID!, + arg_creativeAdID!, + arg_universalAdIDs!, + arg_advertiserName!, + arg_surveyURL, + arg_dealID!, + arg_wrapperAdIDs!, + arg_wrapperCreativeIDs!, + arg_wrapperSystems!) ?? + IMAAd.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + adId: arg_adId!, + adTitle: arg_adTitle!, + adDescription: arg_adDescription!, + adSystem: arg_adSystem!, + companionAds: arg_companionAds!, + contentType: arg_contentType!, + duration: arg_duration!, + uiElements: arg_uiElements!, + width: arg_width!, + height: arg_height!, + vastMediaWidth: arg_vastMediaWidth!, + vastMediaHeight: arg_vastMediaHeight!, + vastMediaBitrate: arg_vastMediaBitrate!, + isLinear: arg_isLinear!, + isSkippable: arg_isSkippable!, + skipTimeOffset: arg_skipTimeOffset!, + adPodInfo: arg_adPodInfo!, + traffickingParameters: arg_traffickingParameters!, + creativeID: arg_creativeID!, + creativeAdID: arg_creativeAdID!, + universalAdIDs: arg_universalAdIDs!, + advertiserName: arg_advertiserName!, + surveyURL: arg_surveyURL, + dealID: arg_dealID!, + wrapperAdIDs: arg_wrapperAdIDs!, + wrapperCreativeIDs: arg_wrapperCreativeIDs!, + wrapperSystems: arg_wrapperSystems!, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + @override + IMAAd pigeon_copy() { + return IMAAd.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + adId: adId, + adTitle: adTitle, + adDescription: adDescription, + adSystem: adSystem, + companionAds: companionAds, + contentType: contentType, + duration: duration, + uiElements: uiElements, + width: width, + height: height, + vastMediaWidth: vastMediaWidth, + vastMediaHeight: vastMediaHeight, + vastMediaBitrate: vastMediaBitrate, + isLinear: isLinear, + isSkippable: isSkippable, + skipTimeOffset: skipTimeOffset, + adPodInfo: adPodInfo, + traffickingParameters: traffickingParameters, + creativeID: creativeID, + creativeAdID: creativeAdID, + universalAdIDs: universalAdIDs, + advertiserName: advertiserName, + surveyURL: surveyURL, + dealID: dealID, + wrapperAdIDs: wrapperAdIDs, + wrapperCreativeIDs: wrapperCreativeIDs, + wrapperSystems: wrapperSystems, + ); + } +} + +/// Simple data object containing universal ad ID information. +/// +/// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAUniversalAdID.html. +class IMAUniversalAdID extends PigeonInternalProxyApiBaseClass { + /// Constructs [IMAUniversalAdID] without creating the associated native object. + /// + /// This should only be used by subclasses created by this library or to + /// create copies for an [PigeonInstanceManager]. + @protected + IMAUniversalAdID.pigeon_detached({ + super.pigeon_binaryMessenger, + super.pigeon_instanceManager, + required this.adIDValue, + required this.adIDRegistry, + }); + + /// The universal ad ID value. + /// + /// This will be “unknown” if it isn’t defined by the ad. + final String adIDValue; + + /// The universal ad ID registry with which the value is registered. + /// + /// This will be “unknown” if it isn’t defined by the ad. + final String adIDRegistry; + + static void pigeon_setUpMessageHandlers({ + bool pigeon_clearHandlers = false, + BinaryMessenger? pigeon_binaryMessenger, + PigeonInstanceManager? pigeon_instanceManager, + IMAUniversalAdID Function( + String adIDValue, + String adIDRegistry, + )? pigeon_newInstance, + }) { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _PigeonInternalProxyApiBaseCodec( + pigeon_instanceManager ?? PigeonInstanceManager.instance); + final BinaryMessenger? binaryMessenger = pigeon_binaryMessenger; + { + final BasicMessageChannel< + Object?> pigeonVar_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance', + pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (pigeon_clearHandlers) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance was null.'); + final List args = (message as List?)!; + final int? arg_pigeon_instanceIdentifier = (args[0] as int?); + assert(arg_pigeon_instanceIdentifier != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance was null, expected non-null int.'); + final String? arg_adIDValue = (args[1] as String?); + assert(arg_adIDValue != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance was null, expected non-null String.'); + final String? arg_adIDRegistry = (args[2] as String?); + assert(arg_adIDRegistry != null, + 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance was null, expected non-null String.'); + try { + (pigeon_instanceManager ?? PigeonInstanceManager.instance) + .addHostCreatedInstance( + pigeon_newInstance?.call(arg_adIDValue!, arg_adIDRegistry!) ?? + IMAUniversalAdID.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + adIDValue: arg_adIDValue!, + adIDRegistry: arg_adIDRegistry!, + ), + arg_pigeon_instanceIdentifier!, + ); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } + + @override + IMAUniversalAdID pigeon_copy() { + return IMAUniversalAdID.pigeon_detached( + pigeon_binaryMessenger: pigeon_binaryMessenger, + pigeon_instanceManager: pigeon_instanceManager, + adIDValue: adIDValue, + adIDRegistry: adIDRegistry, + ); + } +} diff --git a/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart b/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart index ebf2bac37e7..f77c0639358 100644 --- a/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart +++ b/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart @@ -887,3 +887,134 @@ abstract class IMAAdPodInfo { /// Bumpers are short videos used to open and close ad breaks. late final bool isBumper; } + +/// Data object representing a single ad. +/// +/// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAAd. +@ProxyApi( + swiftOptions: SwiftProxyApiOptions(import: 'GoogleInteractiveMediaAds'), +) +abstract class IMAAd { + /// The ad ID as specified in the VAST response. + late final String adId; + + /// The ad title from the VAST response. + late final String adTitle; + + /// The ad description. + late final String adDescription; + + /// The source ad server information included in the ad response. + late final String adSystem; + + /// The companion ads specified in the VAST response when using DAI. + /// + /// Empty for client-side ads. + late final List companionAds; + + /// Content type of the currently selected creative. + /// + /// For linear creatives returns the content type of the currently selected + /// media file. Returns empty string if no creative or media file is selected + /// on this ad. + late final String contentType; + + /// The duration of the ad from the VAST response. + late final double duration; + + /// The UI elements that will be displayed during ad playback. + late final List uiElements; + + /// The width of the ad asset. + /// + /// For non-linear ads, this is the actual width of the ad representation. + /// For linear ads, since they scale seamlessly, we currently return 0 for + /// width. + late final int width; + + /// The height of the ad asset. + /// + /// For non-linear ads, this is the actual height of the ad representation. + /// For linear ads, since they scale seamlessly, we currently return 0 for + /// height. + late final int height; + + /// The width of the selected creative as specified in the VAST response. + late final int vastMediaWidth; + + /// The height of the selected creative as specified in the VAST response. + late final int vastMediaHeight; + + /// The bitrate of the selected creative as specified in the VAST response. + late final int vastMediaBitrate; + + /// Specifies whether the ad is linear or non-linear. + late final bool isLinear; + + /// Specifies whether the ad is skippable. + late final bool isSkippable; + + /// The number of seconds of playback before the ad becomes skippable. + /// + /// -1 is returned for non skippable ads or if this is unavailable. + late final double skipTimeOffset; + + /// Set of ad podding properties. + late final IMAAdPodInfo adPodInfo; + + /// String representing custom trafficking parameters from the VAST response. + late final String traffickingParameters; + + /// Returns the ID of the selected creative for the ad. + late final String creativeID; + + /// Returns the ISCI (Industry Standard Commercial Identifier) code for an ad. + /// + /// This is the Ad-ID of the selected creative in the VAST response. + late final String creativeAdID; + + /// The list of all UniversalAdIds of the selected creative for this ad. + /// + /// Returns an empty array if no universal ad IDs are found. + late final List universalAdIDs; + + /// The advertiser name as defined by the serving party. + late final String advertiserName; + + /// Returns the URL associated with the survey for the given ad. + late final String? surveyURL; + + /// Returns the first deal ID present in the wrapper chain for the current ad, + /// starting from the top. + late final String dealID; + + /// The IDs of the ads, starting with the first wrapper ad. + late final List wrapperAdIDs; + + /// The IDs of the ads’ creatives, starting with the first wrapper ad. + late final List wrapperCreativeIDs; + + /// Ad systems used for wrapper ads. + /// + /// The ad systems returned begin with the first wrapper ad and continue to + /// each wrapper ad recursively. + late final List wrapperSystems; +} + +/// Simple data object containing universal ad ID information. +/// +/// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAUniversalAdID.html. +@ProxyApi( + swiftOptions: SwiftProxyApiOptions(import: 'GoogleInteractiveMediaAds'), +) +abstract class IMAUniversalAdID { + /// The universal ad ID value. + /// + /// This will be “unknown” if it isn’t defined by the ad. + late final String adIDValue; + + /// The universal ad ID registry with which the value is registered. + /// + /// This will be “unknown” if it isn’t defined by the ad. + late final String adIDRegistry; +} From dc9ed24c4546648363ac4fdbfea1aeacbe18de3f Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 11 Aug 2025 18:11:43 -0400 Subject: [PATCH 02/30] add missing apis --- .../ios/Runner.xcodeproj/project.pbxproj | 36 +- .../AdProxyAPIDelegate.swift | 131 + ...FriendlyObstructionProxyAPIDelegate.swift} | 0 .../InteractiveMediaAdsLibrary.g.swift | 5218 ++++++++++++----- .../ProxyApiDelegate.swift | 8 + .../UniversalAdIDProxyAPIDelegate.swift | 21 + .../lib/src/ios/interactive_media_ads.g.dart | 243 +- 7 files changed, 3996 insertions(+), 1661 deletions(-) create mode 100644 packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift rename packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/{FriendlyObstructionAPIDelegate.swift => FriendlyObstructionProxyAPIDelegate.swift} (100%) create mode 100644 packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/UniversalAdIDProxyAPIDelegate.swift diff --git a/packages/interactive_media_ads/example/ios/Runner.xcodeproj/project.pbxproj b/packages/interactive_media_ads/example/ios/Runner.xcodeproj/project.pbxproj index 7950738349b..cf164f39c3e 100644 --- a/packages/interactive_media_ads/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/interactive_media_ads/example/ios/Runner.xcodeproj/project.pbxproj @@ -14,6 +14,9 @@ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 8F0EDFD12E0A2906001938E6 /* SettingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F0EDFD02E0A2906001938E6 /* SettingsTests.swift */; }; + 8F0EDFD62E4AA191001938E6 /* UniversalAdIDProxyAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F0EDFD52E4AA191001938E6 /* UniversalAdIDProxyAPITests.swift */; }; + 8F0EDFD72E4AA191001938E6 /* AdProxyAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F0EDFD42E4AA191001938E6 /* AdProxyAPITests.swift */; }; + 8F0EDFD92E4AA1B0001938E6 /* ViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F0EDFD82E4AA1B0001938E6 /* ViewTests.swift */; }; 8F599BB12C2DD1FD0090A0DF /* AdsManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F599BB02C2DD1FD0090A0DF /* AdsManagerTests.swift */; }; 8F599BB32C2DD87D0090A0DF /* AdsLoaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F599BB22C2DD87D0090A0DF /* AdsLoaderTests.swift */; }; 8F599BB52C2DD8EC0090A0DF /* AdsLoaderDelegateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F599BB42C2DD8EC0090A0DF /* AdsLoaderDelegateTests.swift */; }; @@ -77,6 +80,9 @@ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 89C6230E68C80A6F4B207726 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 8F0EDFD02E0A2906001938E6 /* SettingsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsTests.swift; sourceTree = ""; }; + 8F0EDFD42E4AA191001938E6 /* AdProxyAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdProxyAPITests.swift; sourceTree = ""; }; + 8F0EDFD52E4AA191001938E6 /* UniversalAdIDProxyAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UniversalAdIDProxyAPITests.swift; sourceTree = ""; }; + 8F0EDFD82E4AA1B0001938E6 /* ViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewTests.swift; sourceTree = ""; }; 8F599BB02C2DD1FD0090A0DF /* AdsManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdsManagerTests.swift; sourceTree = ""; }; 8F599BB22C2DD87D0090A0DF /* AdsLoaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdsLoaderTests.swift; sourceTree = ""; }; 8F599BB42C2DD8EC0090A0DF /* AdsLoaderDelegateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdsLoaderDelegateTests.swift; sourceTree = ""; }; @@ -130,6 +136,9 @@ 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( + 8F0EDFD82E4AA1B0001938E6 /* ViewTests.swift */, + 8F0EDFD42E4AA191001938E6 /* AdProxyAPITests.swift */, + 8F0EDFD52E4AA191001938E6 /* UniversalAdIDProxyAPITests.swift */, 8F0EDFD02E0A2906001938E6 /* SettingsTests.swift */, 8FC919912CA5D86F00188068 /* FriendlyObstructionTests.swift */, 8F977DCE2C2B99C600A90D4B /* AdDisplayContainerTests.swift */, @@ -256,6 +265,7 @@ 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 776DEB6D359E63A1B5E520A7 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -371,6 +381,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 776DEB6D359E63A1B5E520A7 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 8BF613E92E45E672229E9718 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -418,8 +445,11 @@ 8F599BBF2C3335B40090A0DF /* ViewControllerTests.swift in Sources */, 8F8382A32CBDB4A4007F28E0 /* CompanionAdProxyApiTests.swift in Sources */, 8F0EDFD12E0A2906001938E6 /* SettingsTests.swift in Sources */, + 8F0EDFD62E4AA191001938E6 /* UniversalAdIDProxyAPITests.swift in Sources */, + 8F0EDFD72E4AA191001938E6 /* AdProxyAPITests.swift in Sources */, 8FC919922CA5D86F00188068 /* FriendlyObstructionTests.swift in Sources */, 8F977DD92C2C8C6A00A90D4B /* AdLoadingErrorDataTests.swift in Sources */, + 8F0EDFD92E4AA1B0001938E6 /* ViewTests.swift in Sources */, 8F599BB32C2DD87D0090A0DF /* AdsLoaderTests.swift in Sources */, 8F977DD72C2C89A600A90D4B /* AdEventTests.swift in Sources */, 8F977DD32C2BA15100A90D4B /* TestProxyApiRegistrar.swift in Sources */, @@ -520,7 +550,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -650,7 +680,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -701,7 +731,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift new file mode 100644 index 00000000000..0ec18b354b4 --- /dev/null +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift @@ -0,0 +1,131 @@ +// 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. + +import Foundation +import GoogleInteractiveMediaAds + + +/// ProxyApi implementation for `IMAAd`. +/// +/// 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 AdProxyAPIDelegate : PigeonApiDelegateIMAAd { + func adId(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.adId + } + + func adTitle(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.adTitle + } + + func adDescription(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.adDescription + } + + func adSystem(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.adSystem + } + + func companionAds(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMACompanionAd] { + return pigeonInstance.companionAds + } + + func contentType(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.contentType + } + + func duration(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Double { + return pigeonInstance.duration + } + + func uiElements(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [UIElementType] { + return pigeonInstance.uiElements.map { + switch($0.intValue) { + case IMAUiElementType.elements_AD_ATTRIBUTION.rawValue: + return UIElementType.adAttribution; + case IMAUiElementType.elements_COUNTDOWN.rawValue: + return UIElementType.countdown; + default: + return UIElementType.unknown; + } + } + } + + func width(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return Int64(pigeonInstance.width) + } + + func height(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return Int64(pigeonInstance.height) + } + + func vastMediaWidth(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return Int64(pigeonInstance.vastMediaWidth) + } + + func vastMediaHeight(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return Int64(pigeonInstance.vastMediaHeight) + } + + func vastMediaBitrate(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return Int64(pigeonInstance.vastMediaBitrate) + } + + func isLinear(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Bool { + return pigeonInstance.isLinear + } + + func isSkippable(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Bool { + return pigeonInstance.isSkippable + } + + func skipTimeOffset(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Double { + return pigeonInstance.skipTimeOffset + } + + func adPodInfo(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> IMAAdPodInfo { + return pigeonInstance.adPodInfo + } + + func traffickingParameters(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.traffickingParameters + } + + func creativeID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.creativeID + } + + func creativeAdID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.creativeAdID + } + + func universalAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMAUniversalAdID] { + return pigeonInstance.universalAdIDs + } + + func advertiserName(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.advertiserName + } + + func surveyURL(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String? { + return pigeonInstance.surveyURL + } + + func dealID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.dealID + } + + func wrapperAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { + return pigeonInstance.wrapperAdIDs + } + + func wrapperCreativeIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { + return pigeonInstance.wrapperCreativeIDs + } + + func wrapperSystems(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { + return pigeonInstance.wrapperSystems + } + +} diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/FriendlyObstructionAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/FriendlyObstructionProxyAPIDelegate.swift similarity index 100% rename from packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/FriendlyObstructionAPIDelegate.swift rename to packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/FriendlyObstructionProxyAPIDelegate.swift diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift index 3a8b92df129..81f15958c36 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift @@ -61,9 +61,7 @@ private func wrapError(_ error: Any) -> [Any?] { } private func createConnectionError(withChannelName channelName: String) -> PigeonError { - return PigeonError( - code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", - details: "") + return PigeonError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "") } private func isNullish(_ value: Any?) -> Bool { @@ -81,6 +79,7 @@ protocol InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate: AnyObject { func onDeinit(identifier: Int64) } + // Attaches to an object to receive a callback when the object is deallocated. internal final class InteractiveMediaAdsLibraryPigeonInternalFinalizer { internal static let associatedObjectKey = malloc(1)! @@ -90,26 +89,20 @@ internal final class InteractiveMediaAdsLibraryPigeonInternalFinalizer { // `InstanceManager` is deallocated. internal weak var delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate? - private init( - identifier: Int64, delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate - ) { + private init(identifier: Int64, delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate) { self.identifier = identifier self.delegate = delegate } internal static func attach( - to instance: AnyObject, identifier: Int64, - delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate + to instance: AnyObject, identifier: Int64, delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate ) { - let finalizer = InteractiveMediaAdsLibraryPigeonInternalFinalizer( - identifier: identifier, delegate: delegate) + let finalizer = InteractiveMediaAdsLibraryPigeonInternalFinalizer(identifier: identifier, delegate: delegate) objc_setAssociatedObject(instance, associatedObjectKey, finalizer, .OBJC_ASSOCIATION_RETAIN) } static func detach(from instance: AnyObject) { - let finalizer = - objc_getAssociatedObject(instance, associatedObjectKey) - as? InteractiveMediaAdsLibraryPigeonInternalFinalizer + let finalizer = objc_getAssociatedObject(instance, associatedObjectKey) as? InteractiveMediaAdsLibraryPigeonInternalFinalizer if let finalizer = finalizer { finalizer.delegate = nil objc_setAssociatedObject(instance, associatedObjectKey, nil, .OBJC_ASSOCIATION_ASSIGN) @@ -121,6 +114,7 @@ internal final class InteractiveMediaAdsLibraryPigeonInternalFinalizer { } } + /// Maintains instances used to communicate with the corresponding objects in Dart. /// /// Objects stored in this container are represented by an object in Dart that is also stored in @@ -224,8 +218,7 @@ final class InteractiveMediaAdsLibraryPigeonInstanceManager { identifiers.setObject(NSNumber(value: identifier), forKey: instance) weakInstances.setObject(instance, forKey: NSNumber(value: identifier)) strongInstances.setObject(instance, forKey: NSNumber(value: identifier)) - InteractiveMediaAdsLibraryPigeonInternalFinalizer.attach( - to: instance, identifier: identifier, delegate: finalizerDelegate) + InteractiveMediaAdsLibraryPigeonInternalFinalizer.attach(to: instance, identifier: identifier, delegate: finalizerDelegate) } /// Retrieves the identifier paired with an instance. @@ -306,6 +299,7 @@ final class InteractiveMediaAdsLibraryPigeonInstanceManager { } } + private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { /// The codec used for serializing messages. var codec: FlutterStandardMessageCodec { InteractiveMediaAdsLibraryPigeonCodec.shared } @@ -318,15 +312,9 @@ private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { } /// Sets up an instance of `InteractiveMediaAdsLibraryPigeonInstanceManagerApi` to handle messages through the `binaryMessenger`. - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, - instanceManager: InteractiveMediaAdsLibraryPigeonInstanceManager? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, instanceManager: InteractiveMediaAdsLibraryPigeonInstanceManager?) { let codec = InteractiveMediaAdsLibraryPigeonCodec.shared - let removeStrongReferenceChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.removeStrongReference", - binaryMessenger: binaryMessenger, codec: codec) + let removeStrongReferenceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.removeStrongReference", binaryMessenger: binaryMessenger, codec: codec) if let instanceManager = instanceManager { removeStrongReferenceChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -341,9 +329,7 @@ private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { } else { removeStrongReferenceChannel.setMessageHandler(nil) } - let clearChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.clear", - binaryMessenger: binaryMessenger, codec: codec) + let clearChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.clear", binaryMessenger: binaryMessenger, codec: codec) if let instanceManager = instanceManager { clearChannel.setMessageHandler { _, reply in do { @@ -359,13 +345,9 @@ private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { } /// Sends a message to the Dart `InstanceManager` to remove the strong reference of the instance associated with `identifier`. - func removeStrongReference( - identifier identifierArg: Int64, completion: @escaping (Result) -> Void - ) { - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.removeStrongReference" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + func removeStrongReference(identifier identifierArg: Int64, completion: @escaping (Result) -> Void) { + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.removeStrongReference" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([identifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -385,107 +367,77 @@ private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { protocol InteractiveMediaAdsLibraryPigeonProxyApiDelegate { /// An implementation of [PigeonApiIMAAdDisplayContainer] used to add a new Dart instance of /// `IMAAdDisplayContainer` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdDisplayContainer( - _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - ) -> PigeonApiIMAAdDisplayContainer + func pigeonApiIMAAdDisplayContainer(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdDisplayContainer /// An implementation of [PigeonApiUIView] used to add a new Dart instance of /// `UIView` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiUIView(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiUIView + func pigeonApiUIView(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiUIView /// An implementation of [PigeonApiUIViewController] used to add a new Dart instance of /// `UIViewController` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiUIViewController(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiUIViewController + func pigeonApiUIViewController(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiUIViewController /// An implementation of [PigeonApiIMAContentPlayhead] used to add a new Dart instance of /// `IMAContentPlayhead` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAContentPlayhead(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAContentPlayhead + func pigeonApiIMAContentPlayhead(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAContentPlayhead /// An implementation of [PigeonApiIMAAdsLoader] used to add a new Dart instance of /// `IMAAdsLoader` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsLoader(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAdsLoader + func pigeonApiIMAAdsLoader(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsLoader /// An implementation of [PigeonApiIMASettings] used to add a new Dart instance of /// `IMASettings` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMASettings(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMASettings + func pigeonApiIMASettings(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMASettings /// An implementation of [PigeonApiIMAAdsRequest] used to add a new Dart instance of /// `IMAAdsRequest` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsRequest(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAdsRequest + func pigeonApiIMAAdsRequest(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsRequest /// An implementation of [PigeonApiIMAAdsLoaderDelegate] used to add a new Dart instance of /// `IMAAdsLoaderDelegate` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsLoaderDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAdsLoaderDelegate + func pigeonApiIMAAdsLoaderDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsLoaderDelegate /// An implementation of [PigeonApiIMAAdsLoadedData] used to add a new Dart instance of /// `IMAAdsLoadedData` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsLoadedData(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAdsLoadedData + func pigeonApiIMAAdsLoadedData(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsLoadedData /// An implementation of [PigeonApiIMAAdLoadingErrorData] used to add a new Dart instance of /// `IMAAdLoadingErrorData` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdLoadingErrorData( - _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - ) -> PigeonApiIMAAdLoadingErrorData + func pigeonApiIMAAdLoadingErrorData(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdLoadingErrorData /// An implementation of [PigeonApiIMAAdError] used to add a new Dart instance of /// `IMAAdError` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdError(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAdError + func pigeonApiIMAAdError(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdError /// An implementation of [PigeonApiIMAAdsManager] used to add a new Dart instance of /// `IMAAdsManager` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsManager(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAdsManager + func pigeonApiIMAAdsManager(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsManager /// An implementation of [PigeonApiIMAAdsManagerDelegate] used to add a new Dart instance of /// `IMAAdsManagerDelegate` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsManagerDelegate( - _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - ) -> PigeonApiIMAAdsManagerDelegate + func pigeonApiIMAAdsManagerDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsManagerDelegate /// An implementation of [PigeonApiIMAAdEvent] used to add a new Dart instance of /// `IMAAdEvent` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdEvent(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAdEvent + func pigeonApiIMAAdEvent(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdEvent /// An implementation of [PigeonApiIMAAdsRenderingSettings] used to add a new Dart instance of /// `IMAAdsRenderingSettings` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsRenderingSettings( - _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - ) -> PigeonApiIMAAdsRenderingSettings + func pigeonApiIMAAdsRenderingSettings(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsRenderingSettings /// An implementation of [PigeonApiNSObject] used to add a new Dart instance of /// `NSObject` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiNSObject(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiNSObject + func pigeonApiNSObject(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiNSObject /// An implementation of [PigeonApiIMAFriendlyObstruction] used to add a new Dart instance of /// `IMAFriendlyObstruction` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAFriendlyObstruction( - _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - ) -> PigeonApiIMAFriendlyObstruction + func pigeonApiIMAFriendlyObstruction(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAFriendlyObstruction /// An implementation of [PigeonApiIMACompanionAd] used to add a new Dart instance of /// `IMACompanionAd` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMACompanionAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMACompanionAd + func pigeonApiIMACompanionAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMACompanionAd /// An implementation of [PigeonApiIMACompanionAdSlot] used to add a new Dart instance of /// `IMACompanionAdSlot` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMACompanionAdSlot(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMACompanionAdSlot + func pigeonApiIMACompanionAdSlot(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMACompanionAdSlot /// An implementation of [PigeonApiIMACompanionDelegate] used to add a new Dart instance of /// `IMACompanionDelegate` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMACompanionDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMACompanionDelegate + func pigeonApiIMACompanionDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMACompanionDelegate /// An implementation of [PigeonApiIMAAdPodInfo] used to add a new Dart instance of /// `IMAAdPodInfo` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdPodInfo(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAdPodInfo + func pigeonApiIMAAdPodInfo(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdPodInfo /// An implementation of [PigeonApiIMAAd] used to add a new Dart instance of /// `IMAAd` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAAd + func pigeonApiIMAAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAd /// An implementation of [PigeonApiIMAUniversalAdID] used to add a new Dart instance of /// `IMAUniversalAdID` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAUniversalAdID(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiIMAUniversalAdID + func pigeonApiIMAUniversalAdID(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAUniversalAdID } extension InteractiveMediaAdsLibraryPigeonProxyApiDelegate { - func pigeonApiNSObject(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) - -> PigeonApiNSObject - { + func pigeonApiNSObject(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiNSObject { return PigeonApiNSObject(pigeonRegistrar: registrar, delegate: PigeonApiDelegateNSObject()) } } @@ -500,15 +452,12 @@ open class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar { var codec: FlutterStandardMessageCodec { if _codec == nil { _codec = FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: self)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: self)) } return _codec! } - private class InstanceManagerApiFinalizerDelegate: - InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate - { + private class InstanceManagerApiFinalizerDelegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate { let api: InteractiveMediaAdsLibraryPigeonInstanceManagerApi init(_ api: InteractiveMediaAdsLibraryPigeonInstanceManagerApi) { @@ -522,10 +471,7 @@ open class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar { } } - init( - binaryMessenger: FlutterBinaryMessenger, - apiDelegate: InteractiveMediaAdsLibraryPigeonProxyApiDelegate - ) { + init(binaryMessenger: FlutterBinaryMessenger, apiDelegate: InteractiveMediaAdsLibraryPigeonProxyApiDelegate) { self.binaryMessenger = binaryMessenger self.apiDelegate = apiDelegate self.instanceManager = InteractiveMediaAdsLibraryPigeonInstanceManager( @@ -534,40 +480,24 @@ open class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar { } func setUp() { - InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers( - binaryMessenger: binaryMessenger, instanceManager: instanceManager) - PigeonApiIMAAdDisplayContainer.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdDisplayContainer(self)) - PigeonApiUIView.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiUIView(self)) - PigeonApiUIViewController.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiUIViewController(self)) - PigeonApiIMAContentPlayhead.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAContentPlayhead(self)) - PigeonApiIMAAdsLoader.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsLoader(self)) - PigeonApiIMASettings.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMASettings(self)) - PigeonApiIMAAdsRequest.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsRequest(self)) - PigeonApiIMAAdsLoaderDelegate.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsLoaderDelegate(self)) - PigeonApiIMAAdsManager.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsManager(self)) - PigeonApiIMAAdsManagerDelegate.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsManagerDelegate(self)) - PigeonApiIMAAdsRenderingSettings.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsRenderingSettings(self)) - PigeonApiIMAFriendlyObstruction.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAFriendlyObstruction(self)) - PigeonApiIMACompanionAdSlot.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMACompanionAdSlot(self)) - PigeonApiIMACompanionDelegate.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMACompanionDelegate(self)) + InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers(binaryMessenger: binaryMessenger, instanceManager: instanceManager) + PigeonApiIMAAdDisplayContainer.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdDisplayContainer(self)) + PigeonApiUIView.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiUIView(self)) + PigeonApiUIViewController.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiUIViewController(self)) + PigeonApiIMAContentPlayhead.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAContentPlayhead(self)) + PigeonApiIMAAdsLoader.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsLoader(self)) + PigeonApiIMASettings.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMASettings(self)) + PigeonApiIMAAdsRequest.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsRequest(self)) + PigeonApiIMAAdsLoaderDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsLoaderDelegate(self)) + PigeonApiIMAAdsManager.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsManager(self)) + PigeonApiIMAAdsManagerDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsManagerDelegate(self)) + PigeonApiIMAAdsRenderingSettings.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsRenderingSettings(self)) + PigeonApiIMAFriendlyObstruction.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAFriendlyObstruction(self)) + PigeonApiIMACompanionAdSlot.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMACompanionAdSlot(self)) + PigeonApiIMACompanionDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMACompanionDelegate(self)) } func tearDown() { - InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers( - binaryMessenger: binaryMessenger, instanceManager: nil) + InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers(binaryMessenger: binaryMessenger, instanceManager: nil) PigeonApiIMAAdDisplayContainer.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiUIView.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiUIViewController.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) @@ -578,21 +508,16 @@ open class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar { PigeonApiIMAAdsLoaderDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMAAdsManager.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMAAdsManagerDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) - PigeonApiIMAAdsRenderingSettings.setUpMessageHandlers( - binaryMessenger: binaryMessenger, api: nil) + PigeonApiIMAAdsRenderingSettings.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMAFriendlyObstruction.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMACompanionAdSlot.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMACompanionDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) } } -private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: - FlutterStandardReaderWriter -{ +private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: FlutterStandardReaderWriter { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReader: - InteractiveMediaAdsLibraryPigeonCodecReader - { + private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReader: InteractiveMediaAdsLibraryPigeonCodecReader { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar init(data: Data, pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) { @@ -616,9 +541,7 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: } } - private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter: - InteractiveMediaAdsLibraryPigeonCodecWriter - { + private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter: InteractiveMediaAdsLibraryPigeonCodecWriter { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar init(data: NSMutableData, pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) { @@ -627,288 +550,273 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: } override func writeValue(_ value: Any) { - if value is [Any] || value is Bool || value is Data || value is [AnyHashable: Any] - || value is Double || value is FlutterStandardTypedData || value is Int64 || value is String - || value is AdErrorType || value is AdErrorCode || value is AdEventType - || value is KeyValueObservingOptions || value is KeyValueChange - || value is KeyValueChangeKey || value is FriendlyObstructionPurpose - || value is UIElementType - { + if value is [Any] || value is Bool || value is Data || value is [AnyHashable: Any] || value is Double || value is FlutterStandardTypedData || value is Int64 || value is String || value is AdErrorType || value is AdErrorCode || value is AdEventType || value is KeyValueObservingOptions || value is KeyValueChange || value is KeyValueChangeKey || value is FriendlyObstructionPurpose || value is UIElementType { super.writeValue(value) return } + if let instance = value as? IMAAdDisplayContainer { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdDisplayContainer(pigeonRegistrar) - .pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdDisplayContainer(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? UIView { pigeonRegistrar.apiDelegate.pigeonApiUIView(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? UIViewController { pigeonRegistrar.apiDelegate.pigeonApiUIViewController(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAContentPlayhead { pigeonRegistrar.apiDelegate.pigeonApiIMAContentPlayhead(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdsLoader { pigeonRegistrar.apiDelegate.pigeonApiIMAAdsLoader(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMASettings { pigeonRegistrar.apiDelegate.pigeonApiIMASettings(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdsRequest { pigeonRegistrar.apiDelegate.pigeonApiIMAAdsRequest(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdsLoaderDelegate { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdsLoaderDelegate(pigeonRegistrar) - .pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdsLoaderDelegate(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdsLoadedData { pigeonRegistrar.apiDelegate.pigeonApiIMAAdsLoadedData(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdLoadingErrorData { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdLoadingErrorData(pigeonRegistrar) - .pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdLoadingErrorData(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdError { pigeonRegistrar.apiDelegate.pigeonApiIMAAdError(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdsManager { pigeonRegistrar.apiDelegate.pigeonApiIMAAdsManager(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdsManagerDelegate { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdsManagerDelegate(pigeonRegistrar) - .pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdsManagerDelegate(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdEvent { pigeonRegistrar.apiDelegate.pigeonApiIMAAdEvent(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdsRenderingSettings { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(pigeonRegistrar) - .pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAFriendlyObstruction { - pigeonRegistrar.apiDelegate.pigeonApiIMAFriendlyObstruction(pigeonRegistrar) - .pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAFriendlyObstruction(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMACompanionAd { pigeonRegistrar.apiDelegate.pigeonApiIMACompanionAd(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMACompanionAdSlot { pigeonRegistrar.apiDelegate.pigeonApiIMACompanionAdSlot(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMACompanionDelegate { - pigeonRegistrar.apiDelegate.pigeonApiIMACompanionDelegate(pigeonRegistrar) - .pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMACompanionDelegate(pigeonRegistrar).pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? NSObject { pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAdPodInfo { pigeonRegistrar.apiDelegate.pigeonApiIMAAdPodInfo(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAAd { pigeonRegistrar.apiDelegate.pigeonApiIMAAd(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } + if let instance = value as? IMAUniversalAdID { pigeonRegistrar.apiDelegate.pigeonApiIMAUniversalAdID(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference( - forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) return } - if let instance = value as AnyObject?, - pigeonRegistrar.instanceManager.containsInstance(instance) + + if let instance = value as AnyObject?, pigeonRegistrar.instanceManager.containsInstance(instance) { super.writeByte(128) super.writeValue( pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance)!) } else { print("Unsupported value: \(value) of \(type(of: value))") - assert( - false, "Unsupported value for InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter" - ) + assert(false, "Unsupported value for InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter") } } @@ -919,13 +827,11 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: } override func reader(with data: Data) -> FlutterStandardReader { - return InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReader( - data: data, pigeonRegistrar: pigeonRegistrar) + return InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReader(data: data, pigeonRegistrar: pigeonRegistrar) } override func writer(with data: NSMutableData) -> FlutterStandardWriter { - return InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter( - data: data, pigeonRegistrar: pigeonRegistrar) + return InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter(data: data, pigeonRegistrar: pigeonRegistrar) } } @@ -1249,49 +1155,35 @@ private class InteractiveMediaAdsLibraryPigeonCodecReaderWriter: FlutterStandard } class InteractiveMediaAdsLibraryPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { - static let shared = InteractiveMediaAdsLibraryPigeonCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonCodecReaderWriter()) + static let shared = InteractiveMediaAdsLibraryPigeonCodec(readerWriter: InteractiveMediaAdsLibraryPigeonCodecReaderWriter()) } protocol PigeonApiDelegateIMAAdDisplayContainer { /// Initializes IMAAdDisplayContainer for rendering the ad and displaying the /// sad UI. - func pigeonDefaultConstructor( - pigeonApi: PigeonApiIMAAdDisplayContainer, adContainer: UIView, - companionSlots: [IMACompanionAdSlot]?, adContainerViewController: UIViewController? - ) throws -> IMAAdDisplayContainer + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdDisplayContainer, adContainer: UIView, companionSlots: [IMACompanionAdSlot]?, adContainerViewController: UIViewController?) throws -> IMAAdDisplayContainer /// View containing the video display and ad related UI. /// /// This view must be present in the view hierarchy in order to make ad or /// stream requests. - func adContainer(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) - throws -> UIView + func adContainer(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> UIView /// List of companion ad slots. - func companionSlots( - pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer - ) throws -> [IMACompanionAdSlot]? + func companionSlots(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> [IMACompanionAdSlot]? /// View controller containing the ad container. - func setAdContainerViewController( - pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, - controller: UIViewController?) throws + func setAdContainerViewController(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, controller: UIViewController?) throws /// View controller containing the ad container. - func getAdContainerViewController( - pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer - ) throws -> UIViewController? + func getAdContainerViewController(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> UIViewController? /// Registers a view that overlays or obstructs this container as “friendly” /// for viewability measurement purposes. - func registerFriendlyObstruction( - pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, - friendlyObstruction: IMAFriendlyObstruction) throws + func registerFriendlyObstruction(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, friendlyObstruction: IMAFriendlyObstruction) throws /// Unregisters all previously registered friendly obstructions. - func unregisterAllFriendlyObstructions( - pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws + func unregisterAllFriendlyObstructions(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws } protocol PigeonApiProtocolIMAAdDisplayContainer { } -final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContainer { +final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContainer { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdDisplayContainer ///An implementation of [NSObject] used to access callback methods @@ -1299,26 +1191,17 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdDisplayContainer - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdDisplayContainer) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdDisplayContainer? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdDisplayContainer?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -1328,10 +1211,8 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain let adContainerViewControllerArg: UIViewController? = nilOrValue(args[3]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor( - pigeonApi: api, adContainer: adContainerArg, companionSlots: companionSlotsArg, - adContainerViewController: adContainerViewControllerArg), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, adContainer: adContainerArg, companionSlots: companionSlotsArg, adContainerViewController: adContainerViewControllerArg), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1340,18 +1221,14 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let setAdContainerViewControllerChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.setAdContainerViewController", - binaryMessenger: binaryMessenger, codec: codec) + let setAdContainerViewControllerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.setAdContainerViewController", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setAdContainerViewControllerChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdDisplayContainer let controllerArg: UIViewController? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setAdContainerViewController( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, controller: controllerArg) + try api.pigeonDelegate.setAdContainerViewController(pigeonApi: api, pigeonInstance: pigeonInstanceArg, controller: controllerArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1360,17 +1237,13 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain } else { setAdContainerViewControllerChannel.setMessageHandler(nil) } - let getAdContainerViewControllerChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.getAdContainerViewController", - binaryMessenger: binaryMessenger, codec: codec) + let getAdContainerViewControllerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.getAdContainerViewController", binaryMessenger: binaryMessenger, codec: codec) if let api = api { getAdContainerViewControllerChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdDisplayContainer do { - let result = try api.pigeonDelegate.getAdContainerViewController( - pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.getAdContainerViewController(pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -1379,19 +1252,14 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain } else { getAdContainerViewControllerChannel.setMessageHandler(nil) } - let registerFriendlyObstructionChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.registerFriendlyObstruction", - binaryMessenger: binaryMessenger, codec: codec) + let registerFriendlyObstructionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.registerFriendlyObstruction", binaryMessenger: binaryMessenger, codec: codec) if let api = api { registerFriendlyObstructionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdDisplayContainer let friendlyObstructionArg = args[1] as! IMAFriendlyObstruction do { - try api.pigeonDelegate.registerFriendlyObstruction( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, - friendlyObstruction: friendlyObstructionArg) + try api.pigeonDelegate.registerFriendlyObstruction(pigeonApi: api, pigeonInstance: pigeonInstanceArg, friendlyObstruction: friendlyObstructionArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1400,17 +1268,13 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain } else { registerFriendlyObstructionChannel.setMessageHandler(nil) } - let unregisterAllFriendlyObstructionsChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.unregisterAllFriendlyObstructions", - binaryMessenger: binaryMessenger, codec: codec) + let unregisterAllFriendlyObstructionsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.unregisterAllFriendlyObstructions", binaryMessenger: binaryMessenger, codec: codec) if let api = api { unregisterAllFriendlyObstructionsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdDisplayContainer do { - try api.pigeonDelegate.unregisterAllFriendlyObstructions( - pigeonApi: api, pigeonInstance: pigeonInstanceArg) + try api.pigeonDelegate.unregisterAllFriendlyObstructions(pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1422,32 +1286,24 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain } ///Creates a Dart instance of IMAAdDisplayContainer and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdDisplayContainer, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdDisplayContainer, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) - let adContainerArg = try! pigeonDelegate.adContainer( - pigeonApi: self, pigeonInstance: pigeonInstance) - let companionSlotsArg = try! pigeonDelegate.companionSlots( - pigeonApi: self, pigeonInstance: pigeonInstance) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let adContainerArg = try! pigeonDelegate.adContainer(pigeonApi: self, pigeonInstance: pigeonInstance) + let companionSlotsArg = try! pigeonDelegate.companionSlots(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, adContainerArg, companionSlotsArg] as [Any?]) { - response in + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, adContainerArg, companionSlotsArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -1464,6 +1320,168 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain } } } + +/* +// 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. + +import Foundation +import GoogleInteractiveMediaAds +import UIKit + + +/// ProxyApi implementation for `IMAAdDisplayContainer`. +/// +/// 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 AdDisplayContainerProxyAPIDelegate : PigeonApiDelegateIMAAdDisplayContainer { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdDisplayContainer, adContainer: UIView, companionSlots: [IMACompanionAdSlot]?, adContainerViewController: UIViewController?) throws -> IMAAdDisplayContainer { + return IMAAdDisplayContainer(,adContainerViewController: adContainerViewController) + } + + func adContainer(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> UIView { + return pigeonInstance.adContainer + } + + func companionSlots(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> [IMACompanionAdSlot]? { + return pigeonInstance.companionSlots + } + + func setAdContainerViewController(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, controller: UIViewController?) throws { + pigeonInstance.adContainerViewController = controller + } + + func getAdContainerViewController(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> UIViewController? { + return pigeonInstance.adContainerViewController + } + + func registerFriendlyObstruction(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, friendlyObstruction: IMAFriendlyObstruction) throws { + pigeonInstance.registerFriendlyObstruction(friendlyObstruction: friendlyObstruction) + } + + func unregisterAllFriendlyObstructions(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws { + pigeonInstance.unregisterAllFriendlyObstructions() + } + +} +*/ + +/* +// 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. + +import GoogleInteractiveMediaAds +import UIKit +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdDisplayContainerTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, adContainer: TestView, companionSlots: [TestCompanionAdSlot], adContainerViewController: TestViewController) + XCTAssertNotNil(instance) + } + + func testAdContainer() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) + + let instance = TestAdDisplayContainer() + let value = try? api.pigeonDelegate.adContainer(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adContainer) + } + + func testCompanionSlots() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) + + let instance = TestAdDisplayContainer() + let value = try? api.pigeonDelegate.companionSlots(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.companionSlots) + } + + func testSetAdContainerViewController() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) + + let instance = TestAdDisplayContainer() + let controller = TestViewController + try? api.pigeonDelegate.setAdContainerViewController(pigeonApi: api, pigeonInstance: instance, controller: controller) + + XCTAssertEqual(instance.setAdContainerViewControllerArgs, [controller]) + } + + func testGetAdContainerViewController() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) + + let instance = TestAdDisplayContainer() + let value = try? api.pigeonDelegate.getAdContainerViewController(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.getAdContainerViewControllerCalled) + XCTAssertEqual(value, instance.getAdContainerViewController()) + } + + func testRegisterFriendlyObstruction() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) + + let instance = TestAdDisplayContainer() + let friendlyObstruction = TestFriendlyObstruction + try? api.pigeonDelegate.registerFriendlyObstruction(pigeonApi: api, pigeonInstance: instance, friendlyObstruction: friendlyObstruction) + + XCTAssertEqual(instance.registerFriendlyObstructionArgs, [friendlyObstruction]) + } + + func testUnregisterAllFriendlyObstructions() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) + + let instance = TestAdDisplayContainer() + try? api.pigeonDelegate.unregisterAllFriendlyObstructions(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.unregisterAllFriendlyObstructionsCalled) + } + +} +class TestAdDisplayContainer: IMAAdDisplayContainer { + private var adContainerTestValue = TestView + private var companionSlotsTestValue = [TestCompanionAdSlot] + var setAdContainerViewControllerArgs: [AnyHashable?]? = nil + var getAdContainerViewControllerCalled = false + var registerFriendlyObstructionArgs: [AnyHashable?]? = nil + var unregisterAllFriendlyObstructionsCalled = false + + override var adContainer: UIView { + return adContainerTestValue + } + override var companionSlots: [IMACompanionAdSlot] { + return companionSlotsTestValue + } + + override func setAdContainerViewController() { + setAdContainerViewControllerArgs = [controller] + } + override func getAdContainerViewController() { + getAdContainerViewControllerCalled = true + } + override func registerFriendlyObstruction() { + registerFriendlyObstructionArgs = [friendlyObstruction] + } + override func unregisterAllFriendlyObstructions() { + unregisterAllFriendlyObstructionsCalled = true + } +} +*/ + protocol PigeonApiDelegateUIView { func pigeonDefaultConstructor(pigeonApi: PigeonApiUIView) throws -> UIView } @@ -1471,7 +1489,7 @@ protocol PigeonApiDelegateUIView { protocol PigeonApiProtocolUIView { } -final class PigeonApiUIView: PigeonApiProtocolUIView { +final class PigeonApiUIView: PigeonApiProtocolUIView { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateUIView ///An implementation of [NSObject] used to access callback methods @@ -1479,10 +1497,7 @@ final class PigeonApiUIView: PigeonApiProtocolUIView { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateUIView - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateUIView) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } @@ -1490,20 +1505,17 @@ final class PigeonApiUIView: PigeonApiProtocolUIView { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.UIView.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.UIView.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1515,25 +1527,21 @@ final class PigeonApiUIView: PigeonApiProtocolUIView { } ///Creates a Dart instance of UIView and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: UIView, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: UIView, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec let channelName: String = "dev.flutter.pigeon.interactive_media_ads.UIView.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1551,6 +1559,51 @@ final class PigeonApiUIView: PigeonApiProtocolUIView { } } } + +/* +// 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. + +import Foundation +import UIKit + + +/// ProxyApi implementation for `UIView`. +/// +/// 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 ViewProxyAPIDelegate : PigeonApiDelegateUIView { + func pigeonDefaultConstructor(pigeonApi: PigeonApiUIView) throws -> UIView { + return UIView() + } + +} +*/ + +/* +// 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. + +import UIKit +import Flutter +import XCTest + +@testable import interactive_media_ads + +class ViewTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiUIView(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) + XCTAssertNotNil(instance) + } + +} +*/ + protocol PigeonApiDelegateUIViewController { func pigeonDefaultConstructor(pigeonApi: PigeonApiUIViewController) throws -> UIViewController /// Retrieves the view that the controller manages. @@ -1564,12 +1617,10 @@ protocol PigeonApiDelegateUIViewController { protocol PigeonApiProtocolUIViewController { /// Notifies the view controller that its view was added to a view hierarchy. - func viewDidAppear( - pigeonInstance pigeonInstanceArg: UIViewController, animated animatedArg: Bool, - completion: @escaping (Result) -> Void) + func viewDidAppear(pigeonInstance pigeonInstanceArg: UIViewController, animated animatedArg: Bool, completion: @escaping (Result) -> Void) } -final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { +final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateUIViewController ///An implementation of [NSObject] used to access callback methods @@ -1577,33 +1628,25 @@ final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateUIViewController - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateUIViewController) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiUIViewController? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiUIViewController?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.UIViewController.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.UIViewController.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1612,18 +1655,14 @@ final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let viewChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.UIViewController.view", - binaryMessenger: binaryMessenger, codec: codec) + let viewChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.UIViewController.view", binaryMessenger: binaryMessenger, codec: codec) if let api = api { viewChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! UIViewController let pigeonIdentifierArg = args[1] as! Int64 do { - api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: pigeonInstanceArg), - withIdentifier: pigeonIdentifierArg) + api.pigeonRegistrar.instanceManager.addDartCreatedInstance(try api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: pigeonInstanceArg), withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1635,26 +1674,21 @@ final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { } ///Creates a Dart instance of UIViewController and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: UIViewController, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: UIViewController, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.UIViewController.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.UIViewController.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1672,10 +1706,7 @@ final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { } } /// Notifies the view controller that its view was added to a view hierarchy. - func viewDidAppear( - pigeonInstance pigeonInstanceArg: UIViewController, animated animatedArg: Bool, - completion: @escaping (Result) -> Void - ) { + func viewDidAppear(pigeonInstance pigeonInstanceArg: UIViewController, animated animatedArg: Bool, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -1686,10 +1717,8 @@ final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.UIViewController.viewDidAppear" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.UIViewController.viewDidAppear" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, animatedArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1707,18 +1736,111 @@ final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { } } + +/* +// 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. + +import Foundation +import UIKit + +/// Implementation of `UIViewController` that calls to Dart in callback methods. +class ViewControllerImpl: UIViewController { + let api: PigeonApiProtocolUIViewController + + init(api: PigeonApiProtocolUIViewController) { + self.api = api + } + + func fixMe() { + api.viewDidAppear(pigeonInstance: self, animated: animated) { _ in } + } +} + +/// ProxyApi implementation for `UIViewController`. +/// +/// 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 ViewControllerProxyAPIDelegate : PigeonApiDelegateUIViewController { + func pigeonDefaultConstructor(pigeonApi: PigeonApiUIViewController) throws -> UIViewController { + return UIViewControllerImpl(api: pigeonApi) + } + + func view(pigeonApi: PigeonApiUIViewController, pigeonInstance: UIViewController): UIView { + return pigeonInstance.view + } + +} +*/ + +/* +// 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. + +import UIKit +import Flutter +import XCTest + +@testable import interactive_media_ads + +class ViewControllerTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiUIViewController(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) + XCTAssertNotNil(instance) + } + + func testView() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiUIViewController(registrar) + + let instance = TestViewController() + let value = try? api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.view) + } + + func testViewDidAppear() { + let api = TestViewControllerApi() + let instance = ViewControllerImpl(api: api) + let animated = true + instance.viewDidAppear(animated: animated) + + XCTAssertEqual(api.viewDidAppearArgs, [animated]) + } + +} +class TestViewController: UIViewController { + private var viewTestValue = TestView + + override var view: UIView { + return viewTestValue + } + +} +class TestViewControllerApi: PigeonApiProtocolUIViewController { + var viewDidAppearArgs: [AnyHashable?]? = nil + + func viewDidAppear(animated: Bool) throws { + viewDidAppearArgs = [animatedArg] + } +} +*/ + protocol PigeonApiDelegateIMAContentPlayhead { func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAContentPlayhead) throws -> IMAContentPlayhead /// Reflects the current playback time in seconds for the content. - func setCurrentTime( - pigeonApi: PigeonApiIMAContentPlayhead, pigeonInstance: IMAContentPlayhead, timeInterval: Double - ) throws + func setCurrentTime(pigeonApi: PigeonApiIMAContentPlayhead, pigeonInstance: IMAContentPlayhead, timeInterval: Double) throws } protocol PigeonApiProtocolIMAContentPlayhead { } -final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { +final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAContentPlayhead ///An implementation of [NSObject] used to access callback methods @@ -1726,33 +1848,25 @@ final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAContentPlayhead - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAContentPlayhead) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAContentPlayhead? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAContentPlayhead?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1761,17 +1875,14 @@ final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let setCurrentTimeChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.setCurrentTime", - binaryMessenger: binaryMessenger, codec: codec) + let setCurrentTimeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.setCurrentTime", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setCurrentTimeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAContentPlayhead let timeIntervalArg = args[1] as! Double do { - try api.pigeonDelegate.setCurrentTime( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, timeInterval: timeIntervalArg) + try api.pigeonDelegate.setCurrentTime(pigeonApi: api, pigeonInstance: pigeonInstanceArg, timeInterval: timeIntervalArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1783,26 +1894,21 @@ final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { } ///Creates a Dart instance of IMAContentPlayhead and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAContentPlayhead, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAContentPlayhead, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1820,26 +1926,90 @@ final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { } } } + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMAContentPlayhead`. +/// +/// 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 ContentPlayheadProxyAPIDelegate : PigeonApiDelegateIMAContentPlayhead { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAContentPlayhead) throws -> IMAContentPlayhead { + return IMAContentPlayhead() + } + + func setCurrentTime(pigeonApi: PigeonApiIMAContentPlayhead, pigeonInstance: IMAContentPlayhead, timeInterval: Double) throws { + pigeonInstance.currentTime = timeInterval + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class ContentPlayheadTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAContentPlayhead(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) + XCTAssertNotNil(instance) + } + + func testSetCurrentTime() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAContentPlayhead(registrar) + + let instance = TestContentPlayhead() + let timeInterval = 1.0 + try? api.pigeonDelegate.setCurrentTime(pigeonApi: api, pigeonInstance: instance, timeInterval: timeInterval) + + XCTAssertEqual(instance.setCurrentTimeArgs, [timeInterval]) + } + +} +class TestContentPlayhead: IMAContentPlayhead { + var setCurrentTimeArgs: [AnyHashable?]? = nil + + + override func setCurrentTime() { + setCurrentTimeArgs = [timeInterval] + } +} +*/ + protocol PigeonApiDelegateIMAAdsLoader { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoader, settings: IMASettings?) throws - -> IMAAdsLoader + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoader, settings: IMASettings?) throws -> IMAAdsLoader /// Signal to the SDK that the content has completed. func contentComplete(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader) throws /// Request ads from the ad server. - func requestAds( - pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, request: IMAAdsRequest) throws + func requestAds(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, request: IMAAdsRequest) throws /// Delegate that receives `IMAAdsLoaderDelegate` callbacks. /// /// Note that this sets to a `weak` property in Swift. - func setDelegate( - pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, delegate: IMAAdsLoaderDelegate?) - throws + func setDelegate(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, delegate: IMAAdsLoaderDelegate?) throws } protocol PigeonApiProtocolIMAAdsLoader { } -final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { +final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsLoader ///An implementation of [NSObject] used to access callback methods @@ -1847,25 +2017,17 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdsLoader - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsLoader) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsLoader? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsLoader?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -1873,8 +2035,8 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { let settingsArg: IMASettings? = nilOrValue(args[1]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, settings: settingsArg), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, settings: settingsArg), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1883,9 +2045,7 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let contentCompleteChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.contentComplete", - binaryMessenger: binaryMessenger, codec: codec) + let contentCompleteChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.contentComplete", binaryMessenger: binaryMessenger, codec: codec) if let api = api { contentCompleteChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -1900,17 +2060,14 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { } else { contentCompleteChannel.setMessageHandler(nil) } - let requestAdsChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.requestAds", - binaryMessenger: binaryMessenger, codec: codec) + let requestAdsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.requestAds", binaryMessenger: binaryMessenger, codec: codec) if let api = api { requestAdsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsLoader let requestArg = args[1] as! IMAAdsRequest do { - try api.pigeonDelegate.requestAds( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, request: requestArg) + try api.pigeonDelegate.requestAds(pigeonApi: api, pigeonInstance: pigeonInstanceArg, request: requestArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1919,17 +2076,14 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { } else { requestAdsChannel.setMessageHandler(nil) } - let setDelegateChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.setDelegate", - binaryMessenger: binaryMessenger, codec: codec) + let setDelegateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.setDelegate", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDelegateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsLoader let delegateArg: IMAAdsLoaderDelegate? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setDelegate( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) + try api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1941,26 +2095,21 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { } ///Creates a Dart instance of IMAAdsLoader and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdsLoader, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdsLoader, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1978,19 +2127,123 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { } } } -protocol PigeonApiDelegateIMASettings { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMASettings) throws -> IMASettings - /// Publisher Provided Identification (PPID) sent with ads request. - func setPPID(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, ppid: String?) throws - /// Language specification used for localization. - /// - /// `language` must be formatted as a canonicalized IETF BCP 47 language - /// identifier such as would be returned by `[NSLocale preferredLanguages]`. + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMAAdsLoader`. +/// +/// 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 AdsLoaderProxyAPIDelegate : PigeonApiDelegateIMAAdsLoader { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoader, settings: IMASettings?) throws -> IMAAdsLoader { + return IMAAdsLoader(,settings: settings) + } + + func contentComplete(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader) throws { + pigeonInstance.contentComplete() + } + + func requestAds(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, request: IMAAdsRequest) throws { + pigeonInstance.requestAds(request: request) + } + + func setDelegate(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, delegate: IMAAdsLoaderDelegate?) throws { + pigeonInstance.delegate = delegate + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdsLoaderTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsLoader(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, settings: TestSettings) + XCTAssertNotNil(instance) + } + + func testContentComplete() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsLoader(registrar) + + let instance = TestAdsLoader() + try? api.pigeonDelegate.contentComplete(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.contentCompleteCalled) + } + + func testRequestAds() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsLoader(registrar) + + let instance = TestAdsLoader() + let request = TestAdsRequest + try? api.pigeonDelegate.requestAds(pigeonApi: api, pigeonInstance: instance, request: request) + + XCTAssertEqual(instance.requestAdsArgs, [request]) + } + + func testSetDelegate() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsLoader(registrar) + + let instance = TestAdsLoader() + let delegate = TestAdsLoaderDelegate + try? api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: instance, delegate: delegate) + + XCTAssertEqual(instance.setDelegateArgs, [delegate]) + } + +} +class TestAdsLoader: IMAAdsLoader { + var contentCompleteCalled = false + var requestAdsArgs: [AnyHashable?]? = nil + var setDelegateArgs: [AnyHashable?]? = nil + + + override func contentComplete() { + contentCompleteCalled = true + } + override func requestAds() { + requestAdsArgs = [request] + } + override func setDelegate() { + setDelegateArgs = [delegate] + } +} +*/ + +protocol PigeonApiDelegateIMASettings { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMASettings) throws -> IMASettings + /// Publisher Provided Identification (PPID) sent with ads request. + func setPPID(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, ppid: String?) throws + /// Language specification used for localization. + /// + /// `language` must be formatted as a canonicalized IETF BCP 47 language + /// identifier such as would be returned by `[NSLocale preferredLanguages]`. /// /// Setting this property after it has been sent to the IMAAdsLoader will be /// ignored and a warning will be logged. - func setLanguage(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, language: String) - throws + func setLanguage(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, language: String) throws /// Specifies maximum number of redirects after which subsequent redirects /// will be denied, and the ad load aborted. /// @@ -1998,49 +2251,40 @@ protocol PigeonApiDelegateIMASettings { /// error code 302. /// /// The default value is 4. - func setMaxRedirects(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, max: Int64) - throws + func setMaxRedirects(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, max: Int64) throws /// Feature flags and their states. - func setFeatureFlags( - pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, flags: [String: String]) throws + func setFeatureFlags(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, flags: [String: String]) throws /// Enable background audio playback for the SDK. /// /// The default value is false. - func setEnableBackgroundPlayback( - pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws + func setEnableBackgroundPlayback(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws /// Specifies whether to automatically play VMAP and ad rules ad breaks. /// /// The default value is true. - func setAutoPlayAdBreaks( - pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, autoPlay: Bool) throws + func setAutoPlayAdBreaks(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, autoPlay: Bool) throws /// Specifies whether to update the MPNowPlayingInfoCenter content with the /// title “Advertisement”. /// /// If disabled, MPNowPlayingInfoCenter is untouched. /// /// The default value is false. - func setDisableNowPlayingInfo( - pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, disable: Bool) throws + func setDisableNowPlayingInfo(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, disable: Bool) throws /// The partner specified video player that is integrating with the SDK. - func setPlayerType(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, type: String?) - throws + func setPlayerType(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, type: String?) throws /// The partner specified player version that is integrating with the SDK. - func setPlayerVersion( - pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, version: String?) throws + func setPlayerVersion(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, version: String?) throws /// The session ID to identify a single user session. /// /// This should be a UUID. /// /// It is used exclusively for frequency capping across the user session. - func setSessionID( - pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, sessionID: String?) throws + func setSessionID(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, sessionID: String?) throws /// Controls whether Same App Key is enabled. /// /// The value set persists across app sessions. /// /// The key is enabled by default. - func setSameAppKeyEnabled( - pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws + func setSameAppKeyEnabled(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws /// Toggles debug mode which will output detailed log information to the /// console. /// @@ -2048,14 +2292,13 @@ protocol PigeonApiDelegateIMASettings { /// enabled. /// /// The default value is false. - func setEnableDebugMode( - pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enable: Bool) throws + func setEnableDebugMode(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enable: Bool) throws } protocol PigeonApiProtocolIMASettings { } -final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { +final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMASettings ///An implementation of [NSObject] used to access callback methods @@ -2063,33 +2306,25 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMASettings - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMASettings) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMASettings? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMASettings?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2098,17 +2333,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let setPPIDChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPPID", - binaryMessenger: binaryMessenger, codec: codec) + let setPPIDChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPPID", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setPPIDChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let ppidArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setPPID( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, ppid: ppidArg) + try api.pigeonDelegate.setPPID(pigeonApi: api, pigeonInstance: pigeonInstanceArg, ppid: ppidArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2117,17 +2349,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setPPIDChannel.setMessageHandler(nil) } - let setLanguageChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setLanguage", - binaryMessenger: binaryMessenger, codec: codec) + let setLanguageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setLanguage", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setLanguageChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let languageArg = args[1] as! String do { - try api.pigeonDelegate.setLanguage( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, language: languageArg) + try api.pigeonDelegate.setLanguage(pigeonApi: api, pigeonInstance: pigeonInstanceArg, language: languageArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2136,17 +2365,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setLanguageChannel.setMessageHandler(nil) } - let setMaxRedirectsChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setMaxRedirects", - binaryMessenger: binaryMessenger, codec: codec) + let setMaxRedirectsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setMaxRedirects", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setMaxRedirectsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let maxArg = args[1] as! Int64 do { - try api.pigeonDelegate.setMaxRedirects( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, max: maxArg) + try api.pigeonDelegate.setMaxRedirects(pigeonApi: api, pigeonInstance: pigeonInstanceArg, max: maxArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2155,17 +2381,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setMaxRedirectsChannel.setMessageHandler(nil) } - let setFeatureFlagsChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setFeatureFlags", - binaryMessenger: binaryMessenger, codec: codec) + let setFeatureFlagsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setFeatureFlags", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setFeatureFlagsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let flagsArg = args[1] as! [String: String] do { - try api.pigeonDelegate.setFeatureFlags( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, flags: flagsArg) + try api.pigeonDelegate.setFeatureFlags(pigeonApi: api, pigeonInstance: pigeonInstanceArg, flags: flagsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2174,17 +2397,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setFeatureFlagsChannel.setMessageHandler(nil) } - let setEnableBackgroundPlaybackChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setEnableBackgroundPlayback", - binaryMessenger: binaryMessenger, codec: codec) + let setEnableBackgroundPlaybackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setEnableBackgroundPlayback", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setEnableBackgroundPlaybackChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let enabledArg = args[1] as! Bool do { - try api.pigeonDelegate.setEnableBackgroundPlayback( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, enabled: enabledArg) + try api.pigeonDelegate.setEnableBackgroundPlayback(pigeonApi: api, pigeonInstance: pigeonInstanceArg, enabled: enabledArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2193,17 +2413,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setEnableBackgroundPlaybackChannel.setMessageHandler(nil) } - let setAutoPlayAdBreaksChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setAutoPlayAdBreaks", - binaryMessenger: binaryMessenger, codec: codec) + let setAutoPlayAdBreaksChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setAutoPlayAdBreaks", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setAutoPlayAdBreaksChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let autoPlayArg = args[1] as! Bool do { - try api.pigeonDelegate.setAutoPlayAdBreaks( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, autoPlay: autoPlayArg) + try api.pigeonDelegate.setAutoPlayAdBreaks(pigeonApi: api, pigeonInstance: pigeonInstanceArg, autoPlay: autoPlayArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2212,17 +2429,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setAutoPlayAdBreaksChannel.setMessageHandler(nil) } - let setDisableNowPlayingInfoChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setDisableNowPlayingInfo", - binaryMessenger: binaryMessenger, codec: codec) + let setDisableNowPlayingInfoChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setDisableNowPlayingInfo", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDisableNowPlayingInfoChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let disableArg = args[1] as! Bool do { - try api.pigeonDelegate.setDisableNowPlayingInfo( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, disable: disableArg) + try api.pigeonDelegate.setDisableNowPlayingInfo(pigeonApi: api, pigeonInstance: pigeonInstanceArg, disable: disableArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2231,17 +2445,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setDisableNowPlayingInfoChannel.setMessageHandler(nil) } - let setPlayerTypeChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPlayerType", - binaryMessenger: binaryMessenger, codec: codec) + let setPlayerTypeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPlayerType", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setPlayerTypeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let typeArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setPlayerType( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, type: typeArg) + try api.pigeonDelegate.setPlayerType(pigeonApi: api, pigeonInstance: pigeonInstanceArg, type: typeArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2250,17 +2461,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setPlayerTypeChannel.setMessageHandler(nil) } - let setPlayerVersionChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPlayerVersion", - binaryMessenger: binaryMessenger, codec: codec) + let setPlayerVersionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPlayerVersion", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setPlayerVersionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let versionArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setPlayerVersion( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, version: versionArg) + try api.pigeonDelegate.setPlayerVersion(pigeonApi: api, pigeonInstance: pigeonInstanceArg, version: versionArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2269,17 +2477,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setPlayerVersionChannel.setMessageHandler(nil) } - let setSessionIDChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setSessionID", - binaryMessenger: binaryMessenger, codec: codec) + let setSessionIDChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setSessionID", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setSessionIDChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let sessionIDArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setSessionID( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, sessionID: sessionIDArg) + try api.pigeonDelegate.setSessionID(pigeonApi: api, pigeonInstance: pigeonInstanceArg, sessionID: sessionIDArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2288,17 +2493,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setSessionIDChannel.setMessageHandler(nil) } - let setSameAppKeyEnabledChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setSameAppKeyEnabled", - binaryMessenger: binaryMessenger, codec: codec) + let setSameAppKeyEnabledChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setSameAppKeyEnabled", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setSameAppKeyEnabledChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let enabledArg = args[1] as! Bool do { - try api.pigeonDelegate.setSameAppKeyEnabled( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, enabled: enabledArg) + try api.pigeonDelegate.setSameAppKeyEnabled(pigeonApi: api, pigeonInstance: pigeonInstanceArg, enabled: enabledArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2307,17 +2509,14 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } else { setSameAppKeyEnabledChannel.setMessageHandler(nil) } - let setEnableDebugModeChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setEnableDebugMode", - binaryMessenger: binaryMessenger, codec: codec) + let setEnableDebugModeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setEnableDebugMode", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setEnableDebugModeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let enableArg = args[1] as! Bool do { - try api.pigeonDelegate.setEnableDebugMode( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, enable: enableArg) + try api.pigeonDelegate.setEnableDebugMode(pigeonApi: api, pigeonInstance: pigeonInstanceArg, enable: enableArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2329,26 +2528,21 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } ///Creates a Dart instance of IMASettings and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMASettings, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMASettings, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMASettings.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMASettings.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -2366,6 +2560,283 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { } } } + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMASettings`. +/// +/// 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 SettingsProxyAPIDelegate : PigeonApiDelegateIMASettings { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMASettings) throws -> IMASettings { + return IMASettings() + } + + func setPPID(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, ppid: String?) throws { + pigeonInstance.pPID = ppid + } + + func setLanguage(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, language: String) throws { + pigeonInstance.language = language + } + + func setMaxRedirects(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, max: Int64) throws { + pigeonInstance.maxRedirects = max + } + + func setFeatureFlags(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, flags: [String: String]) throws { + pigeonInstance.featureFlags = flags + } + + func setEnableBackgroundPlayback(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws { + pigeonInstance.enableBackgroundPlayback = enabled + } + + func setAutoPlayAdBreaks(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, autoPlay: Bool) throws { + pigeonInstance.autoPlayAdBreaks = autoPlay + } + + func setDisableNowPlayingInfo(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, disable: Bool) throws { + pigeonInstance.disableNowPlayingInfo = disable + } + + func setPlayerType(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, type: String?) throws { + pigeonInstance.playerType = type + } + + func setPlayerVersion(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, version: String?) throws { + pigeonInstance.playerVersion = version + } + + func setSessionID(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, sessionID: String?) throws { + pigeonInstance.sessionID = sessionID + } + + func setSameAppKeyEnabled(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws { + pigeonInstance.sameAppKeyEnabled = enabled + } + + func setEnableDebugMode(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enable: Bool) throws { + pigeonInstance.enableDebugMode = enable + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class SettingsTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) + XCTAssertNotNil(instance) + } + + func testSetPPID() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let ppid = "myString" + try? api.pigeonDelegate.setPPID(pigeonApi: api, pigeonInstance: instance, ppid: ppid) + + XCTAssertEqual(instance.setPPIDArgs, [ppid]) + } + + func testSetLanguage() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let language = "myString" + try? api.pigeonDelegate.setLanguage(pigeonApi: api, pigeonInstance: instance, language: language) + + XCTAssertEqual(instance.setLanguageArgs, [language]) + } + + func testSetMaxRedirects() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let max = 0 + try? api.pigeonDelegate.setMaxRedirects(pigeonApi: api, pigeonInstance: instance, max: max) + + XCTAssertEqual(instance.setMaxRedirectsArgs, [max]) + } + + func testSetFeatureFlags() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let flags = ["myString": "myString"] + try? api.pigeonDelegate.setFeatureFlags(pigeonApi: api, pigeonInstance: instance, flags: flags) + + XCTAssertEqual(instance.setFeatureFlagsArgs, [flags]) + } + + func testSetEnableBackgroundPlayback() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let enabled = true + try? api.pigeonDelegate.setEnableBackgroundPlayback(pigeonApi: api, pigeonInstance: instance, enabled: enabled) + + XCTAssertEqual(instance.setEnableBackgroundPlaybackArgs, [enabled]) + } + + func testSetAutoPlayAdBreaks() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let autoPlay = true + try? api.pigeonDelegate.setAutoPlayAdBreaks(pigeonApi: api, pigeonInstance: instance, autoPlay: autoPlay) + + XCTAssertEqual(instance.setAutoPlayAdBreaksArgs, [autoPlay]) + } + + func testSetDisableNowPlayingInfo() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let disable = true + try? api.pigeonDelegate.setDisableNowPlayingInfo(pigeonApi: api, pigeonInstance: instance, disable: disable) + + XCTAssertEqual(instance.setDisableNowPlayingInfoArgs, [disable]) + } + + func testSetPlayerType() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let type = "myString" + try? api.pigeonDelegate.setPlayerType(pigeonApi: api, pigeonInstance: instance, type: type) + + XCTAssertEqual(instance.setPlayerTypeArgs, [type]) + } + + func testSetPlayerVersion() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let version = "myString" + try? api.pigeonDelegate.setPlayerVersion(pigeonApi: api, pigeonInstance: instance, version: version) + + XCTAssertEqual(instance.setPlayerVersionArgs, [version]) + } + + func testSetSessionID() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let sessionID = "myString" + try? api.pigeonDelegate.setSessionID(pigeonApi: api, pigeonInstance: instance, sessionID: sessionID) + + XCTAssertEqual(instance.setSessionIDArgs, [sessionID]) + } + + func testSetSameAppKeyEnabled() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let enabled = true + try? api.pigeonDelegate.setSameAppKeyEnabled(pigeonApi: api, pigeonInstance: instance, enabled: enabled) + + XCTAssertEqual(instance.setSameAppKeyEnabledArgs, [enabled]) + } + + func testSetEnableDebugMode() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) + + let instance = TestSettings() + let enable = true + try? api.pigeonDelegate.setEnableDebugMode(pigeonApi: api, pigeonInstance: instance, enable: enable) + + XCTAssertEqual(instance.setEnableDebugModeArgs, [enable]) + } + +} +class TestSettings: IMASettings { + var setPPIDArgs: [AnyHashable?]? = nil + var setLanguageArgs: [AnyHashable?]? = nil + var setMaxRedirectsArgs: [AnyHashable?]? = nil + var setFeatureFlagsArgs: [AnyHashable?]? = nil + var setEnableBackgroundPlaybackArgs: [AnyHashable?]? = nil + var setAutoPlayAdBreaksArgs: [AnyHashable?]? = nil + var setDisableNowPlayingInfoArgs: [AnyHashable?]? = nil + var setPlayerTypeArgs: [AnyHashable?]? = nil + var setPlayerVersionArgs: [AnyHashable?]? = nil + var setSessionIDArgs: [AnyHashable?]? = nil + var setSameAppKeyEnabledArgs: [AnyHashable?]? = nil + var setEnableDebugModeArgs: [AnyHashable?]? = nil + + + override func setPPID() { + setPPIDArgs = [ppid] + } + override func setLanguage() { + setLanguageArgs = [language] + } + override func setMaxRedirects() { + setMaxRedirectsArgs = [max] + } + override func setFeatureFlags() { + setFeatureFlagsArgs = [flags] + } + override func setEnableBackgroundPlayback() { + setEnableBackgroundPlaybackArgs = [enabled] + } + override func setAutoPlayAdBreaks() { + setAutoPlayAdBreaksArgs = [autoPlay] + } + override func setDisableNowPlayingInfo() { + setDisableNowPlayingInfoArgs = [disable] + } + override func setPlayerType() { + setPlayerTypeArgs = [type] + } + override func setPlayerVersion() { + setPlayerVersionArgs = [version] + } + override func setSessionID() { + setSessionIDArgs = [sessionID] + } + override func setSameAppKeyEnabled() { + setSameAppKeyEnabledArgs = [enabled] + } + override func setEnableDebugMode() { + setEnableDebugModeArgs = [enable] + } +} +*/ + protocol PigeonApiDelegateIMAAdsRequest { /// Initializes an ads request instance with the given ad tag URL and ad /// display container. @@ -2374,10 +2845,7 @@ protocol PigeonApiDelegateIMAAdsRequest { /// calling `IMAAdsManager.destroy` on its current adsManager. Concurrent /// requests must use different ad containers. Does not support /// Picture-in-Picture. - func pigeonDefaultConstructor( - pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, - contentPlayhead: IMAContentPlayhead? - ) throws -> IMAAdsRequest + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead?) throws -> IMAAdsRequest /// Initializes an ads request instance with the given canned ads response and /// ad display container. /// @@ -2385,83 +2853,67 @@ protocol PigeonApiDelegateIMAAdsRequest { /// calling `IMAAdsManager.destroy` on its current adsManager. Concurrent /// requests must use different ad containers. Does not support /// Picture-in-Picture. - func withAdsResponse( - pigeonApi: PigeonApiIMAAdsRequest, adsResponse: String, - adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead? - ) throws -> IMAAdsRequest + func withAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, adsResponse: String, adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead?) throws -> IMAAdsRequest /// Specifies the full URL to use for ads loading from an ad server. /// /// Required for any adsRequest. - func getAdTagUrl(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws - -> String? + func getAdTagUrl(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> String? /// Specifies a VAST, VMAP, or ad rules response to be used instead of making /// a request through an ad tag URL. - func getAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws - -> String? + func getAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> String? /// The ad display container. - func getAdDisplayContainer(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) - throws -> IMAAdDisplayContainer + func getAdDisplayContainer(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> IMAAdDisplayContainer /// Specifies whether the player intends to start the content and ad in /// response to a user action or whether they will be automatically played. /// /// Changing this setting will have no impact on ad playback. - func setAdWillAutoPlay( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillAutoPlay: Bool) throws + func setAdWillAutoPlay(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillAutoPlay: Bool) throws /// Specifies whether the player intends to start the content and ad with no /// volume. /// /// Changing this setting will have no impact on ad playback. - func setAdWillPlayMuted( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillPlayMuted: Bool) throws + func setAdWillPlayMuted(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillPlayMuted: Bool) throws /// Specifies whether the player intends to continuously play the content /// videos one after another similar to TV broadcast. /// /// Not calling this function leaves the setting as unknown. Note: Changing /// this setting will have no impact on ad playback. - func setContinuousPlayback( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, continuousPlayback: Bool) - throws + func setContinuousPlayback(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, continuousPlayback: Bool) throws /// Specifies the duration of the content in seconds to be shown. /// /// Used in AdX requests. This parameter is optional. - func setContentDuration( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, duration: Double) throws + func setContentDuration(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, duration: Double) throws /// Specifies the keywords used to describe the content to be shown. /// /// Used in AdX requests. This parameter is optional. - func setContentKeywords( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, keywords: [String]?) throws + func setContentKeywords(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, keywords: [String]?) throws /// Specifies the title of the content to be shown. /// /// Used in AdX requests. This parameter is optional. - func setContentTitle( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, title: String?) throws + func setContentTitle(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, title: String?) throws /// Specifies the universal link to the content’s screen. /// /// If provided, this parameter is passed to the OM SDK. See /// [Apple documentation](https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content) /// for more information. - func setContentURL( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, contentURL: String?) throws + func setContentURL(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, contentURL: String?) throws /// Specifies the VAST load timeout in milliseconds for the initial request /// and any subsequent wrappers. /// /// This parameter is optional and will override the default timeout. - func setVastLoadTimeout( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, timeout: Double) throws + func setVastLoadTimeout(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, timeout: Double) throws /// Specifies the maximum amount of time to wait in seconds, after calling /// requestAds, before requesting the ad tag URL. /// /// This can be used to stagger requests during a live-stream event, in order /// to mitigate spikes in the number of requests. - func setLiveStreamPrefetchSeconds( - pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, seconds: Double) throws + func setLiveStreamPrefetchSeconds(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, seconds: Double) throws } protocol PigeonApiProtocolIMAAdsRequest { } -final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { +final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsRequest ///An implementation of [NSObject] used to access callback methods @@ -2469,25 +2921,17 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdsRequest - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsRequest) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsRequest? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsRequest?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -2497,10 +2941,8 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { let contentPlayheadArg: IMAContentPlayhead? = nilOrValue(args[3]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor( - pigeonApi: api, adTagUrl: adTagUrlArg, adDisplayContainer: adDisplayContainerArg, - contentPlayhead: contentPlayheadArg), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, adTagUrl: adTagUrlArg, adDisplayContainer: adDisplayContainerArg, contentPlayhead: contentPlayheadArg), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2509,9 +2951,7 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let withAdsResponseChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.withAdsResponse", - binaryMessenger: binaryMessenger, codec: codec) + let withAdsResponseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.withAdsResponse", binaryMessenger: binaryMessenger, codec: codec) if let api = api { withAdsResponseChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -2521,10 +2961,8 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { let contentPlayheadArg: IMAContentPlayhead? = nilOrValue(args[3]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.withAdsResponse( - pigeonApi: api, adsResponse: adsResponseArg, - adDisplayContainer: adDisplayContainerArg, contentPlayhead: contentPlayheadArg), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.withAdsResponse(pigeonApi: api, adsResponse: adsResponseArg, adDisplayContainer: adDisplayContainerArg, contentPlayhead: contentPlayheadArg), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2533,16 +2971,13 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { withAdsResponseChannel.setMessageHandler(nil) } - let getAdTagUrlChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdTagUrl", - binaryMessenger: binaryMessenger, codec: codec) + let getAdTagUrlChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdTagUrl", binaryMessenger: binaryMessenger, codec: codec) if let api = api { getAdTagUrlChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest do { - let result = try api.pigeonDelegate.getAdTagUrl( - pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.getAdTagUrl(pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -2551,16 +2986,13 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { getAdTagUrlChannel.setMessageHandler(nil) } - let getAdsResponseChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdsResponse", - binaryMessenger: binaryMessenger, codec: codec) + let getAdsResponseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdsResponse", binaryMessenger: binaryMessenger, codec: codec) if let api = api { getAdsResponseChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest do { - let result = try api.pigeonDelegate.getAdsResponse( - pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.getAdsResponse(pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -2569,16 +3001,13 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { getAdsResponseChannel.setMessageHandler(nil) } - let getAdDisplayContainerChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdDisplayContainer", - binaryMessenger: binaryMessenger, codec: codec) + let getAdDisplayContainerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdDisplayContainer", binaryMessenger: binaryMessenger, codec: codec) if let api = api { getAdDisplayContainerChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest do { - let result = try api.pigeonDelegate.getAdDisplayContainer( - pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.getAdDisplayContainer(pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -2587,17 +3016,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { getAdDisplayContainerChannel.setMessageHandler(nil) } - let setAdWillAutoPlayChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setAdWillAutoPlay", - binaryMessenger: binaryMessenger, codec: codec) + let setAdWillAutoPlayChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setAdWillAutoPlay", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setAdWillAutoPlayChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let adWillAutoPlayArg = args[1] as! Bool do { - try api.pigeonDelegate.setAdWillAutoPlay( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, adWillAutoPlay: adWillAutoPlayArg) + try api.pigeonDelegate.setAdWillAutoPlay(pigeonApi: api, pigeonInstance: pigeonInstanceArg, adWillAutoPlay: adWillAutoPlayArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2606,17 +3032,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { setAdWillAutoPlayChannel.setMessageHandler(nil) } - let setAdWillPlayMutedChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setAdWillPlayMuted", - binaryMessenger: binaryMessenger, codec: codec) + let setAdWillPlayMutedChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setAdWillPlayMuted", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setAdWillPlayMutedChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let adWillPlayMutedArg = args[1] as! Bool do { - try api.pigeonDelegate.setAdWillPlayMuted( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, adWillPlayMuted: adWillPlayMutedArg) + try api.pigeonDelegate.setAdWillPlayMuted(pigeonApi: api, pigeonInstance: pigeonInstanceArg, adWillPlayMuted: adWillPlayMutedArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2625,18 +3048,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { setAdWillPlayMutedChannel.setMessageHandler(nil) } - let setContinuousPlaybackChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContinuousPlayback", - binaryMessenger: binaryMessenger, codec: codec) + let setContinuousPlaybackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContinuousPlayback", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContinuousPlaybackChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let continuousPlaybackArg = args[1] as! Bool do { - try api.pigeonDelegate.setContinuousPlayback( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, - continuousPlayback: continuousPlaybackArg) + try api.pigeonDelegate.setContinuousPlayback(pigeonApi: api, pigeonInstance: pigeonInstanceArg, continuousPlayback: continuousPlaybackArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2645,17 +3064,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { setContinuousPlaybackChannel.setMessageHandler(nil) } - let setContentDurationChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentDuration", - binaryMessenger: binaryMessenger, codec: codec) + let setContentDurationChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentDuration", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContentDurationChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let durationArg = args[1] as! Double do { - try api.pigeonDelegate.setContentDuration( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, duration: durationArg) + try api.pigeonDelegate.setContentDuration(pigeonApi: api, pigeonInstance: pigeonInstanceArg, duration: durationArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2664,17 +3080,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { setContentDurationChannel.setMessageHandler(nil) } - let setContentKeywordsChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentKeywords", - binaryMessenger: binaryMessenger, codec: codec) + let setContentKeywordsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentKeywords", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContentKeywordsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let keywordsArg: [String]? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setContentKeywords( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, keywords: keywordsArg) + try api.pigeonDelegate.setContentKeywords(pigeonApi: api, pigeonInstance: pigeonInstanceArg, keywords: keywordsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2683,17 +3096,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { setContentKeywordsChannel.setMessageHandler(nil) } - let setContentTitleChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentTitle", - binaryMessenger: binaryMessenger, codec: codec) + let setContentTitleChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentTitle", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContentTitleChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let titleArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setContentTitle( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, title: titleArg) + try api.pigeonDelegate.setContentTitle(pigeonApi: api, pigeonInstance: pigeonInstanceArg, title: titleArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2702,17 +3112,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { setContentTitleChannel.setMessageHandler(nil) } - let setContentURLChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentURL", - binaryMessenger: binaryMessenger, codec: codec) + let setContentURLChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentURL", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContentURLChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let contentURLArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setContentURL( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, contentURL: contentURLArg) + try api.pigeonDelegate.setContentURL(pigeonApi: api, pigeonInstance: pigeonInstanceArg, contentURL: contentURLArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2721,17 +3128,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { setContentURLChannel.setMessageHandler(nil) } - let setVastLoadTimeoutChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setVastLoadTimeout", - binaryMessenger: binaryMessenger, codec: codec) + let setVastLoadTimeoutChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setVastLoadTimeout", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setVastLoadTimeoutChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let timeoutArg = args[1] as! Double do { - try api.pigeonDelegate.setVastLoadTimeout( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, timeout: timeoutArg) + try api.pigeonDelegate.setVastLoadTimeout(pigeonApi: api, pigeonInstance: pigeonInstanceArg, timeout: timeoutArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2740,17 +3144,14 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } else { setVastLoadTimeoutChannel.setMessageHandler(nil) } - let setLiveStreamPrefetchSecondsChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setLiveStreamPrefetchSeconds", - binaryMessenger: binaryMessenger, codec: codec) + let setLiveStreamPrefetchSecondsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setLiveStreamPrefetchSeconds", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setLiveStreamPrefetchSecondsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let secondsArg = args[1] as! Double do { - try api.pigeonDelegate.setLiveStreamPrefetchSeconds( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) + try api.pigeonDelegate.setLiveStreamPrefetchSeconds(pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2762,26 +3163,21 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } ///Creates a Dart instance of IMAAdsRequest and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdsRequest, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdsRequest, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -2799,122 +3195,385 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { } } } -protocol PigeonApiDelegateIMAAdsLoaderDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoaderDelegate) throws - -> IMAAdsLoaderDelegate -} -protocol PigeonApiProtocolIMAAdsLoaderDelegate { - /// Called when ads are successfully loaded from the ad servers by the loader. - func adLoaderLoadedWith( - pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, - adsLoadedData adsLoadedDataArg: IMAAdsLoadedData, - completion: @escaping (Result) -> Void) - /// Error reported by the ads loader when loading or requesting an ad fails. - func adsLoaderFailedWithErrorData( - pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, - adErrorData adErrorDataArg: IMAAdLoadingErrorData, - completion: @escaping (Result) -> Void) -} +/* +// 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. -final class PigeonApiIMAAdsLoaderDelegate: PigeonApiProtocolIMAAdsLoaderDelegate { - unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - let pigeonDelegate: PigeonApiDelegateIMAAdsLoaderDelegate - ///An implementation of [NSObject] used to access callback methods - var pigeonApiNSObject: PigeonApiNSObject { - return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) +import Foundation +import GoogleInteractiveMediaAds + + +/// ProxyApi implementation for `IMAAdsRequest`. +/// +/// 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 AdsRequestProxyAPIDelegate : PigeonApiDelegateIMAAdsRequest { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead?) throws -> IMAAdsRequest { + return IMAAdsRequest(,adTagUrl: adTagUrl, adDisplayContainer: adDisplayContainer, contentPlayhead: contentPlayhead) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdsLoaderDelegate - ) { - self.pigeonRegistrar = pigeonRegistrar - self.pigeonDelegate = delegate + func withAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, adsResponse: String, adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead?) throws -> IMAAdsRequest { + return IMAAdsRequest(,adsResponse: adsResponse, adDisplayContainer: adDisplayContainer, contentPlayhead: contentPlayhead) } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsLoaderDelegate? - ) { - let codec: FlutterStandardMessageCodec = - api != nil - ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) - : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - pigeonDefaultConstructorChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let pigeonIdentifierArg = args[0] as! Int64 - do { - api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), - withIdentifier: pigeonIdentifierArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - pigeonDefaultConstructorChannel.setMessageHandler(nil) - } + + func getAdTagUrl(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> String? { + return pigeonInstance.adTagUrl } - ///Creates a Dart instance of IMAAdsLoaderDelegate and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdsLoaderDelegate, completion: @escaping (Result) -> Void - ) { - if pigeonRegistrar.ignoreCallsToDart { - completion( - .failure( - PigeonError( - code: "ignore-calls-error", - message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { - completion(.success(())) - } else { - completion( - .failure( - PigeonError( - code: "new-instance-error", - message: - "Error: Attempting to create a new Dart instance of IMAAdsLoaderDelegate, but the class has a nonnull callback method.", - details: ""))) - } + func getAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> String? { + return pigeonInstance.adsResponse } - /// Called when ads are successfully loaded from the ad servers by the loader. - func adLoaderLoadedWith( - pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, - adsLoadedData adsLoadedDataArg: IMAAdsLoadedData, - completion: @escaping (Result) -> Void - ) { - if pigeonRegistrar.ignoreCallsToDart { - completion( - .failure( - PigeonError( - code: "ignore-calls-error", - message: "Calls to Dart are being ignored.", details: ""))) - return - } - let binaryMessenger = pigeonRegistrar.binaryMessenger - let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.adLoaderLoadedWith" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonInstanceArg, loaderArg, adsLoadedDataArg] as [Any?]) { response in - guard let listResponse = response as? [Any?] else { - completion(.failure(createConnectionError(withChannelName: channelName))) - return - } - if listResponse.count > 1 { - let code: String = listResponse[0] as! String - let message: String? = nilOrValue(listResponse[1]) - let details: String? = nilOrValue(listResponse[2]) - completion(.failure(PigeonError(code: code, message: message, details: details))) + + func getAdDisplayContainer(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> IMAAdDisplayContainer { + return pigeonInstance.adDisplayContainer + } + + func setAdWillAutoPlay(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillAutoPlay: Bool) throws { + pigeonInstance.adWillAutoPlay = adWillAutoPlay + } + + func setAdWillPlayMuted(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillPlayMuted: Bool) throws { + pigeonInstance.adWillPlayMuted = adWillPlayMuted + } + + func setContinuousPlayback(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, continuousPlayback: Bool) throws { + pigeonInstance.continuousPlayback = continuousPlayback + } + + func setContentDuration(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, duration: Double) throws { + pigeonInstance.contentDuration = duration + } + + func setContentKeywords(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, keywords: [String]?) throws { + pigeonInstance.contentKeywords = keywords + } + + func setContentTitle(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, title: String?) throws { + pigeonInstance.contentTitle = title + } + + func setContentURL(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, contentURL: String?) throws { + pigeonInstance.contentURL = contentURL + } + + func setVastLoadTimeout(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, timeout: Double) throws { + pigeonInstance.vastLoadTimeout = timeout + } + + func setLiveStreamPrefetchSeconds(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, seconds: Double) throws { + pigeonInstance.liveStreamPrefetchSeconds = seconds + } + +} +*/ + +/* +// 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. + +import GoogleInteractiveMediaAds +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdsRequestTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, adTagUrl: "myString", adDisplayContainer: TestAdDisplayContainer, contentPlayhead: TestContentPlayhead) + XCTAssertNotNil(instance) + } + + func testWithAdsResponse() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = try? api.pigeonDelegate.withAdsResponse(pigeonApi: api, adsResponse: "myString", adDisplayContainer: TestAdDisplayContainer, contentPlayhead: TestContentPlayhead) + XCTAssertNotNil(instance) + } + + func testGetAdTagUrl() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let value = try? api.pigeonDelegate.getAdTagUrl(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.getAdTagUrlCalled) + XCTAssertEqual(value, instance.getAdTagUrl()) + } + + func testGetAdsResponse() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let value = try? api.pigeonDelegate.getAdsResponse(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.getAdsResponseCalled) + XCTAssertEqual(value, instance.getAdsResponse()) + } + + func testGetAdDisplayContainer() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let value = try? api.pigeonDelegate.getAdDisplayContainer(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.getAdDisplayContainerCalled) + XCTAssertEqual(value, instance.getAdDisplayContainer()) + } + + func testSetAdWillAutoPlay() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let adWillAutoPlay = true + try? api.pigeonDelegate.setAdWillAutoPlay(pigeonApi: api, pigeonInstance: instance, adWillAutoPlay: adWillAutoPlay) + + XCTAssertEqual(instance.setAdWillAutoPlayArgs, [adWillAutoPlay]) + } + + func testSetAdWillPlayMuted() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let adWillPlayMuted = true + try? api.pigeonDelegate.setAdWillPlayMuted(pigeonApi: api, pigeonInstance: instance, adWillPlayMuted: adWillPlayMuted) + + XCTAssertEqual(instance.setAdWillPlayMutedArgs, [adWillPlayMuted]) + } + + func testSetContinuousPlayback() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let continuousPlayback = true + try? api.pigeonDelegate.setContinuousPlayback(pigeonApi: api, pigeonInstance: instance, continuousPlayback: continuousPlayback) + + XCTAssertEqual(instance.setContinuousPlaybackArgs, [continuousPlayback]) + } + + func testSetContentDuration() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let duration = 1.0 + try? api.pigeonDelegate.setContentDuration(pigeonApi: api, pigeonInstance: instance, duration: duration) + + XCTAssertEqual(instance.setContentDurationArgs, [duration]) + } + + func testSetContentKeywords() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let keywords = ["myString"] + try? api.pigeonDelegate.setContentKeywords(pigeonApi: api, pigeonInstance: instance, keywords: keywords) + + XCTAssertEqual(instance.setContentKeywordsArgs, [keywords]) + } + + func testSetContentTitle() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let title = "myString" + try? api.pigeonDelegate.setContentTitle(pigeonApi: api, pigeonInstance: instance, title: title) + + XCTAssertEqual(instance.setContentTitleArgs, [title]) + } + + func testSetContentURL() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let contentURL = "myString" + try? api.pigeonDelegate.setContentURL(pigeonApi: api, pigeonInstance: instance, contentURL: contentURL) + + XCTAssertEqual(instance.setContentURLArgs, [contentURL]) + } + + func testSetVastLoadTimeout() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let timeout = 1.0 + try? api.pigeonDelegate.setVastLoadTimeout(pigeonApi: api, pigeonInstance: instance, timeout: timeout) + + XCTAssertEqual(instance.setVastLoadTimeoutArgs, [timeout]) + } + + func testSetLiveStreamPrefetchSeconds() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) + + let instance = TestAdsRequest() + let seconds = 1.0 + try? api.pigeonDelegate.setLiveStreamPrefetchSeconds(pigeonApi: api, pigeonInstance: instance, seconds: seconds) + + XCTAssertEqual(instance.setLiveStreamPrefetchSecondsArgs, [seconds]) + } + +} +class TestAdsRequest: IMAAdsRequest { + var getAdTagUrlCalled = false + var getAdsResponseCalled = false + var getAdDisplayContainerCalled = false + var setAdWillAutoPlayArgs: [AnyHashable?]? = nil + var setAdWillPlayMutedArgs: [AnyHashable?]? = nil + var setContinuousPlaybackArgs: [AnyHashable?]? = nil + var setContentDurationArgs: [AnyHashable?]? = nil + var setContentKeywordsArgs: [AnyHashable?]? = nil + var setContentTitleArgs: [AnyHashable?]? = nil + var setContentURLArgs: [AnyHashable?]? = nil + var setVastLoadTimeoutArgs: [AnyHashable?]? = nil + var setLiveStreamPrefetchSecondsArgs: [AnyHashable?]? = nil + + + override func getAdTagUrl() { + getAdTagUrlCalled = true + } + override func getAdsResponse() { + getAdsResponseCalled = true + } + override func getAdDisplayContainer() { + getAdDisplayContainerCalled = true + } + override func setAdWillAutoPlay() { + setAdWillAutoPlayArgs = [adWillAutoPlay] + } + override func setAdWillPlayMuted() { + setAdWillPlayMutedArgs = [adWillPlayMuted] + } + override func setContinuousPlayback() { + setContinuousPlaybackArgs = [continuousPlayback] + } + override func setContentDuration() { + setContentDurationArgs = [duration] + } + override func setContentKeywords() { + setContentKeywordsArgs = [keywords] + } + override func setContentTitle() { + setContentTitleArgs = [title] + } + override func setContentURL() { + setContentURLArgs = [contentURL] + } + override func setVastLoadTimeout() { + setVastLoadTimeoutArgs = [timeout] + } + override func setLiveStreamPrefetchSeconds() { + setLiveStreamPrefetchSecondsArgs = [seconds] + } +} +*/ + +protocol PigeonApiDelegateIMAAdsLoaderDelegate { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoaderDelegate) throws -> IMAAdsLoaderDelegate +} + +protocol PigeonApiProtocolIMAAdsLoaderDelegate { + /// Called when ads are successfully loaded from the ad servers by the loader. + func adLoaderLoadedWith(pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, adsLoadedData adsLoadedDataArg: IMAAdsLoadedData, completion: @escaping (Result) -> Void) + /// Error reported by the ads loader when loading or requesting an ad fails. + func adsLoaderFailedWithErrorData(pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, adErrorData adErrorDataArg: IMAAdLoadingErrorData, completion: @escaping (Result) -> Void) +} + +final class PigeonApiIMAAdsLoaderDelegate: PigeonApiProtocolIMAAdsLoaderDelegate { + unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateIMAAdsLoaderDelegate + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsLoaderDelegate) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsLoaderDelegate?) { + let codec: FlutterStandardMessageCodec = + api != nil + ? FlutterStandardMessageCodec( + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + : FlutterStandardMessageCodec.sharedInstance() + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + pigeonDefaultConstructorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonIdentifierArg = args[0] as! Int64 + do { + api.pigeonRegistrar.instanceManager.addDartCreatedInstance( +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + pigeonDefaultConstructorChannel.setMessageHandler(nil) + } + } + + ///Creates a Dart instance of IMAAdsLoaderDelegate and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: IMAAdsLoaderDelegate, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + completion( + .failure( + PigeonError( + code: "new-instance-error", + message: "Error: Attempting to create a new Dart instance of IMAAdsLoaderDelegate, but the class has a nonnull callback method.", details: ""))) + } + } + /// Called when ads are successfully loaded from the ad servers by the loader. + func adLoaderLoadedWith(pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, adsLoadedData adsLoadedDataArg: IMAAdsLoadedData, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + return + } + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.adLoaderLoadedWith" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonInstanceArg, loaderArg, adsLoadedDataArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } @@ -2922,11 +3581,7 @@ final class PigeonApiIMAAdsLoaderDelegate: PigeonApiProtocolIMAAdsLoaderDelegate } /// Error reported by the ads loader when loading or requesting an ad fails. - func adsLoaderFailedWithErrorData( - pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, - adErrorData adErrorDataArg: IMAAdLoadingErrorData, - completion: @escaping (Result) -> Void - ) { + func adsLoaderFailedWithErrorData(pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, adErrorData adErrorDataArg: IMAAdLoadingErrorData, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -2937,10 +3592,8 @@ final class PigeonApiIMAAdsLoaderDelegate: PigeonApiProtocolIMAAdsLoaderDelegate } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.adsLoaderFailedWithErrorData" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.adsLoaderFailedWithErrorData" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, loaderArg, adErrorDataArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -2958,18 +3611,109 @@ final class PigeonApiIMAAdsLoaderDelegate: PigeonApiProtocolIMAAdsLoaderDelegate } } + +/* +// 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. + +import Foundation + + +/// Implementation of `IMAAdsLoaderDelegate` that calls to Dart in callback methods. +class AdsLoaderDelegateImpl: IMAAdsLoaderDelegate { + let api: PigeonApiProtocolIMAAdsLoaderDelegate + + init(api: PigeonApiProtocolIMAAdsLoaderDelegate) { + self.api = api + } + + func fixMe() { + api.adLoaderLoadedWith(pigeonInstance: self, loader: loader, adsLoadedData: adsLoadedData) { _ in } + } + + func fixMe() { + api.adsLoaderFailedWithErrorData(pigeonInstance: self, loader: loader, adErrorData: adErrorData) { _ in } + } +} + +/// ProxyApi implementation for `IMAAdsLoaderDelegate`. +/// +/// 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 AdsLoaderDelegateProxyAPIDelegate : PigeonApiDelegateIMAAdsLoaderDelegate { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoaderDelegate) throws -> IMAAdsLoaderDelegate { + return IMAAdsLoaderDelegateImpl(api: pigeonApi) + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdsLoaderDelegateTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsLoaderDelegate(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) + XCTAssertNotNil(instance) + } + + func testAdLoaderLoadedWith() { + let api = TestAdsLoaderDelegateApi() + let instance = AdsLoaderDelegateImpl(api: api) + let loader = TestAdsLoader + let adsLoadedData = TestAdsLoadedData + instance.adLoaderLoadedWith(loader: loader, adsLoadedData: adsLoadedData) + + XCTAssertEqual(api.adLoaderLoadedWithArgs, [loader, adsLoadedData]) + } + + func testAdsLoaderFailedWithErrorData() { + let api = TestAdsLoaderDelegateApi() + let instance = AdsLoaderDelegateImpl(api: api) + let loader = TestAdsLoader + let adErrorData = TestAdLoadingErrorData + instance.adsLoaderFailedWithErrorData(loader: loader, adErrorData: adErrorData) + + XCTAssertEqual(api.adsLoaderFailedWithErrorDataArgs, [loader, adErrorData]) + } + +} +class TestAdsLoaderDelegateApi: PigeonApiProtocolIMAAdsLoaderDelegate { + var adLoaderLoadedWithArgs: [AnyHashable?]? = nil + var adsLoaderFailedWithErrorDataArgs: [AnyHashable?]? = nil + + func adLoaderLoadedWith(loader: IMAAdsLoader, adsLoadedData: IMAAdsLoadedData) throws { + adLoaderLoadedWithArgs = [loaderArg, adsLoadedDataArg] + } + func adsLoaderFailedWithErrorData(loader: IMAAdsLoader, adErrorData: IMAAdLoadingErrorData) throws { + adsLoaderFailedWithErrorDataArgs = [loaderArg, adErrorDataArg] + } +} +*/ + protocol PigeonApiDelegateIMAAdsLoadedData { /// The ads manager instance created by the ads loader. /// /// Will be null when using dynamic ad insertion. - func adsManager(pigeonApi: PigeonApiIMAAdsLoadedData, pigeonInstance: IMAAdsLoadedData) throws - -> IMAAdsManager? + func adsManager(pigeonApi: PigeonApiIMAAdsLoadedData, pigeonInstance: IMAAdsLoadedData) throws -> IMAAdsManager? } protocol PigeonApiProtocolIMAAdsLoadedData { } -final class PigeonApiIMAAdsLoadedData: PigeonApiProtocolIMAAdsLoadedData { +final class PigeonApiIMAAdsLoadedData: PigeonApiProtocolIMAAdsLoadedData { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsLoadedData ///An implementation of [NSObject] used to access callback methods @@ -2977,36 +3721,27 @@ final class PigeonApiIMAAdsLoadedData: PigeonApiProtocolIMAAdsLoadedData { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdsLoadedData - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsLoadedData) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAdsLoadedData and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdsLoadedData, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdsLoadedData, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) - let adsManagerArg = try! pigeonDelegate.adsManager( - pigeonApi: self, pigeonInstance: pigeonInstance) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let adsManagerArg = try! pigeonDelegate.adsManager(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoadedData.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoadedData.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg, adsManagerArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3024,16 +3759,62 @@ final class PigeonApiIMAAdsLoadedData: PigeonApiProtocolIMAAdsLoadedData { } } } + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMAAdsLoadedData`. +/// +/// 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 AdsLoadedDataProxyAPIDelegate : PigeonApiDelegateIMAAdsLoadedData { + func adsManager(pigeonApi: PigeonApiIMAAdsLoadedData, pigeonInstance: IMAAdsLoadedData) throws -> IMAAdsManager? { + return pigeonInstance.adsManager + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdsLoadedDataTests: XCTestCase { + func testAdsManager() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsLoadedData(registrar) + + let instance = TestAdsLoadedData() + let value = try? api.pigeonDelegate.adsManager(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adsManager) + } + +} +*/ + protocol PigeonApiDelegateIMAAdLoadingErrorData { /// The ad error that occurred while loading the ad. - func adError(pigeonApi: PigeonApiIMAAdLoadingErrorData, pigeonInstance: IMAAdLoadingErrorData) - throws -> IMAAdError + func adError(pigeonApi: PigeonApiIMAAdLoadingErrorData, pigeonInstance: IMAAdLoadingErrorData) throws -> IMAAdError } protocol PigeonApiProtocolIMAAdLoadingErrorData { } -final class PigeonApiIMAAdLoadingErrorData: PigeonApiProtocolIMAAdLoadingErrorData { +final class PigeonApiIMAAdLoadingErrorData: PigeonApiProtocolIMAAdLoadingErrorData { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdLoadingErrorData ///An implementation of [NSObject] used to access callback methods @@ -3041,35 +3822,27 @@ final class PigeonApiIMAAdLoadingErrorData: PigeonApiProtocolIMAAdLoadingErrorDa return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdLoadingErrorData - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdLoadingErrorData) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAdLoadingErrorData and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdLoadingErrorData, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdLoadingErrorData, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let adErrorArg = try! pigeonDelegate.adError(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdLoadingErrorData.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdLoadingErrorData.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg, adErrorArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3087,6 +3860,53 @@ final class PigeonApiIMAAdLoadingErrorData: PigeonApiProtocolIMAAdLoadingErrorDa } } } + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMAAdLoadingErrorData`. +/// +/// 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 AdLoadingErrorDataProxyAPIDelegate : PigeonApiDelegateIMAAdLoadingErrorData { + func adError(pigeonApi: PigeonApiIMAAdLoadingErrorData, pigeonInstance: IMAAdLoadingErrorData) throws -> IMAAdError { + return pigeonInstance.adError + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdLoadingErrorDataTests: XCTestCase { + func testAdError() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdLoadingErrorData(registrar) + + let instance = TestAdLoadingErrorData() + let value = try? api.pigeonDelegate.adError(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adError) + } + +} +*/ + protocol PigeonApiDelegateIMAAdError { /// The type of error that occurred during ad loading or ad playing. func type(pigeonApi: PigeonApiIMAAdError, pigeonInstance: IMAAdError) throws -> AdErrorType @@ -3099,7 +3919,7 @@ protocol PigeonApiDelegateIMAAdError { protocol PigeonApiProtocolIMAAdError { } -final class PigeonApiIMAAdError: PigeonApiProtocolIMAAdError { +final class PigeonApiIMAAdError: PigeonApiProtocolIMAAdError { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdError ///An implementation of [NSObject] used to access callback methods @@ -3107,39 +3927,30 @@ final class PigeonApiIMAAdError: PigeonApiProtocolIMAAdError { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdError - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdError) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAdError and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdError, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdError, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let typeArg = try! pigeonDelegate.type(pigeonApi: self, pigeonInstance: pigeonInstance) let codeArg = try! pigeonDelegate.code(pigeonApi: self, pigeonInstance: pigeonInstance) let messageArg = try! pigeonDelegate.message(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdError.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, typeArg, codeArg, messageArg] as [Any?]) { - response in + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdError.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, typeArg, codeArg, messageArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -3156,15 +3967,144 @@ final class PigeonApiIMAAdError: PigeonApiProtocolIMAAdError { } } } + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMAAdError`. +/// +/// 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 AdErrorProxyAPIDelegate : PigeonApiDelegateIMAAdError { + func type(pigeonApi: PigeonApiIMAAdError, pigeonInstance: IMAAdError) throws -> AdErrorType { + switch pigeonInstance.type { + case .loadingFailed: + return .loadingFailed + case .adPlayingFailed: + return .adPlayingFailed + @unknown default: + return .unknown + } + } + + func code(pigeonApi: PigeonApiIMAAdError, pigeonInstance: IMAAdError) throws -> AdErrorCode { + switch pigeonInstance.code { + case .adslotNotVisible: + return .adslotNotVisible + case .apiError: + return .apiError + case .companionAdLoadingFailed: + return .companionAdLoadingFailed + case .contentPlayheadMissing: + return .contentPlayheadMissing + case .failedLoadingAd: + return .failedLoadingAd + case .failedToRequestAds: + return .failedToRequestAds + case .invalidArguments: + return .invalidArguments + case .osRuntimeTooOld: + return .osRuntimeTooOld + case .playlistMalformedResponse: + return .playlistMalformedResponse + case .requiredListenersNotAdded: + return .requiredListenersNotAdded + case .streamInitializationFailed: + return .streamInitializationFailed + case .unknownError: + return .unknownError + case .vastAssetNotFound: + return .vastAssetNotFound + case .vastEmptyResponse: + return .vastEmptyResponse + case .vastInvalidUrl: + return .vastInvalidUrl + case .vastLinearAssetMismatch: + return .vastLinearAssetMismatch + case .vastLoadTimeout: + return .vastLoadTimeout + case .vastMalformedResponse: + return .vastMalformedResponse + case .vastMediaLoadTimeout: + return .vastMediaLoadTimeout + case .vastTooManyRedirects: + return .vastTooManyRedirects + case .vastTraffickingError: + return .vastTraffickingError + case .videoElementUsed: + return .videoElementUsed + case .videoElementRequired: + return .videoElementRequired + case .videoPlayError: + return .videoPlayError + @unknown default: + return .unknown + } + } + + func message(pigeonApi: PigeonApiIMAAdError, pigeonInstance: IMAAdError) throws -> String? { + return pigeonInstance.message + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdErrorTests: XCTestCase { + func testType() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdError(registrar) + + let instance = TestAdError() + let value = try? api.pigeonDelegate.type(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.type) + } + + func testCode() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdError(registrar) + + let instance = TestAdError() + let value = try? api.pigeonDelegate.code(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.code) + } + + func testMessage() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdError(registrar) + + let instance = TestAdError() + let value = try? api.pigeonDelegate.message(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.message) + } + +} +*/ + protocol PigeonApiDelegateIMAAdsManager { /// The `IMAAdsManagerDelegate` to notify with events during ad playback. - func setDelegate( - pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, - delegate: IMAAdsManagerDelegate?) throws + func setDelegate(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, delegate: IMAAdsManagerDelegate?) throws /// Initializes and loads the ad. - func initialize( - pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, - adsRenderingSettings: IMAAdsRenderingSettings?) throws + func initialize(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, adsRenderingSettings: IMAAdsRenderingSettings?) throws /// Starts advertisement playback. func start(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws /// Pauses advertisement. @@ -3183,7 +4123,7 @@ protocol PigeonApiDelegateIMAAdsManager { protocol PigeonApiProtocolIMAAdsManager { } -final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { +final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsManager ///An implementation of [NSObject] used to access callback methods @@ -3191,33 +4131,24 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdsManager - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsManager) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsManager? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsManager?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let setDelegateChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.setDelegate", - binaryMessenger: binaryMessenger, codec: codec) + let setDelegateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.setDelegate", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDelegateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsManager let delegateArg: IMAAdsManagerDelegate? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setDelegate( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) + try api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3226,18 +4157,14 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { setDelegateChannel.setMessageHandler(nil) } - let initializeChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.initialize", - binaryMessenger: binaryMessenger, codec: codec) + let initializeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.initialize", binaryMessenger: binaryMessenger, codec: codec) if let api = api { initializeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsManager let adsRenderingSettingsArg: IMAAdsRenderingSettings? = nilOrValue(args[1]) do { - try api.pigeonDelegate.initialize( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, - adsRenderingSettings: adsRenderingSettingsArg) + try api.pigeonDelegate.initialize(pigeonApi: api, pigeonInstance: pigeonInstanceArg, adsRenderingSettings: adsRenderingSettingsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3246,9 +4173,7 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { initializeChannel.setMessageHandler(nil) } - let startChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.start", - binaryMessenger: binaryMessenger, codec: codec) + let startChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.start", binaryMessenger: binaryMessenger, codec: codec) if let api = api { startChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -3263,9 +4188,7 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { startChannel.setMessageHandler(nil) } - let pauseChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.pause", - binaryMessenger: binaryMessenger, codec: codec) + let pauseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.pause", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pauseChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -3280,9 +4203,7 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { pauseChannel.setMessageHandler(nil) } - let resumeChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.resume", - binaryMessenger: binaryMessenger, codec: codec) + let resumeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.resume", binaryMessenger: binaryMessenger, codec: codec) if let api = api { resumeChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -3297,9 +4218,7 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { resumeChannel.setMessageHandler(nil) } - let skipChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.skip", - binaryMessenger: binaryMessenger, codec: codec) + let skipChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.skip", binaryMessenger: binaryMessenger, codec: codec) if let api = api { skipChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -3314,9 +4233,7 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { skipChannel.setMessageHandler(nil) } - let discardAdBreakChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.discardAdBreak", - binaryMessenger: binaryMessenger, codec: codec) + let discardAdBreakChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.discardAdBreak", binaryMessenger: binaryMessenger, codec: codec) if let api = api { discardAdBreakChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -3331,9 +4248,7 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { discardAdBreakChannel.setMessageHandler(nil) } - let destroyChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.destroy", - binaryMessenger: binaryMessenger, codec: codec) + let destroyChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.destroy", binaryMessenger: binaryMessenger, codec: codec) if let api = api { destroyChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -3350,73 +4265,238 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } } - ///Creates a Dart instance of IMAAdsManager and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdsManager, completion: @escaping (Result) -> Void - ) { - if pigeonRegistrar.ignoreCallsToDart { - completion( - .failure( - PigeonError( - code: "ignore-calls-error", - message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { - completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) - let binaryMessenger = pigeonRegistrar.binaryMessenger - let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in - guard let listResponse = response as? [Any?] else { - completion(.failure(createConnectionError(withChannelName: channelName))) - return - } - if listResponse.count > 1 { - let code: String = listResponse[0] as! String - let message: String? = nilOrValue(listResponse[1]) - let details: String? = nilOrValue(listResponse[2]) - completion(.failure(PigeonError(code: code, message: message, details: details))) - } else { - completion(.success(())) - } - } - } + ///Creates a Dart instance of IMAAdsManager and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: IMAAdsManager, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMAAdsManager`. +/// +/// 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 AdsManagerProxyAPIDelegate : PigeonApiDelegateIMAAdsManager { + func setDelegate(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, delegate: IMAAdsManagerDelegate?) throws { + pigeonInstance.delegate = delegate + } + + func initialize(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, adsRenderingSettings: IMAAdsRenderingSettings?) throws { + pigeonInstance.initialize(adsRenderingSettings: adsRenderingSettings) + } + + func start(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { + pigeonInstance.start() + } + + func pause(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { + pigeonInstance.pause() + } + + func resume(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { + pigeonInstance.resume() + } + + func skip(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { + pigeonInstance.skip() + } + + func discardAdBreak(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { + pigeonInstance.discardAdBreak() + } + + func destroy(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { + pigeonInstance.destroy() + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdsManagerTests: XCTestCase { + func testSetDelegate() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) + + let instance = TestAdsManager() + let delegate = TestAdsManagerDelegate + try? api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: instance, delegate: delegate) + + XCTAssertEqual(instance.setDelegateArgs, [delegate]) + } + + func testInitialize() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) + + let instance = TestAdsManager() + let adsRenderingSettings = TestAdsRenderingSettings + try? api.pigeonDelegate.initialize(pigeonApi: api, pigeonInstance: instance, adsRenderingSettings: adsRenderingSettings) + + XCTAssertEqual(instance.initializeArgs, [adsRenderingSettings]) + } + + func testStart() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) + + let instance = TestAdsManager() + try? api.pigeonDelegate.start(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.startCalled) + } + + func testPause() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) + + let instance = TestAdsManager() + try? api.pigeonDelegate.pause(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.pauseCalled) + } + + func testResume() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) + + let instance = TestAdsManager() + try? api.pigeonDelegate.resume(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.resumeCalled) + } + + func testSkip() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) + + let instance = TestAdsManager() + try? api.pigeonDelegate.skip(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.skipCalled) + } + + func testDiscardAdBreak() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) + + let instance = TestAdsManager() + try? api.pigeonDelegate.discardAdBreak(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.discardAdBreakCalled) + } + + func testDestroy() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) + + let instance = TestAdsManager() + try? api.pigeonDelegate.destroy(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.destroyCalled) + } + +} +class TestAdsManager: IMAAdsManager { + var setDelegateArgs: [AnyHashable?]? = nil + var initializeArgs: [AnyHashable?]? = nil + var startCalled = false + var pauseCalled = false + var resumeCalled = false + var skipCalled = false + var discardAdBreakCalled = false + var destroyCalled = false + + + override func setDelegate() { + setDelegateArgs = [delegate] + } + override func initialize() { + initializeArgs = [adsRenderingSettings] + } + override func start() { + startCalled = true + } + override func pause() { + pauseCalled = true + } + override func resume() { + resumeCalled = true + } + override func skip() { + skipCalled = true + } + override func discardAdBreak() { + discardAdBreakCalled = true + } + override func destroy() { + destroyCalled = true } } +*/ + protocol PigeonApiDelegateIMAAdsManagerDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsManagerDelegate) throws - -> IMAAdsManagerDelegate + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsManagerDelegate) throws -> IMAAdsManagerDelegate } protocol PigeonApiProtocolIMAAdsManagerDelegate { /// Called when there is an IMAAdEvent. - func didReceiveAdEvent( - pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, - adsManager adsManagerArg: IMAAdsManager, event eventArg: IMAAdEvent, - completion: @escaping (Result) -> Void) + func didReceiveAdEvent(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, event eventArg: IMAAdEvent, completion: @escaping (Result) -> Void) /// Called when there was an error playing the ad. - func didReceiveAdError( - pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, - adsManager adsManagerArg: IMAAdsManager, error errorArg: IMAAdError, - completion: @escaping (Result) -> Void) + func didReceiveAdError(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, error errorArg: IMAAdError, completion: @escaping (Result) -> Void) /// Called when an ad is ready to play. - func didRequestContentPause( - pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, - adsManager adsManagerArg: IMAAdsManager, - completion: @escaping (Result) -> Void) + func didRequestContentPause(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, completion: @escaping (Result) -> Void) /// Called when an ad has finished or an error occurred during the playback. - func didRequestContentResume( - pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, - adsManager adsManagerArg: IMAAdsManager, - completion: @escaping (Result) -> Void) + func didRequestContentResume(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, completion: @escaping (Result) -> Void) } -final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelegate { +final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelegate { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsManagerDelegate ///An implementation of [NSObject] used to access callback methods @@ -3424,34 +4504,25 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdsManagerDelegate - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsManagerDelegate) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsManagerDelegate? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsManagerDelegate?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3463,33 +4534,25 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } ///Creates a Dart instance of IMAAdsManagerDelegate and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdsManagerDelegate, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdsManagerDelegate, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { + } else { completion( .failure( PigeonError( code: "new-instance-error", - message: - "Error: Attempting to create a new Dart instance of IMAAdsManagerDelegate, but the class has a nonnull callback method.", - details: ""))) + message: "Error: Attempting to create a new Dart instance of IMAAdsManagerDelegate, but the class has a nonnull callback method.", details: ""))) } } /// Called when there is an IMAAdEvent. - func didReceiveAdEvent( - pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, - adsManager adsManagerArg: IMAAdsManager, event eventArg: IMAAdEvent, - completion: @escaping (Result) -> Void - ) { + func didReceiveAdEvent(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, event eventArg: IMAAdEvent, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -3500,10 +4563,8 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didReceiveAdEvent" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didReceiveAdEvent" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, adsManagerArg, eventArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3521,11 +4582,7 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } /// Called when there was an error playing the ad. - func didReceiveAdError( - pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, - adsManager adsManagerArg: IMAAdsManager, error errorArg: IMAAdError, - completion: @escaping (Result) -> Void - ) { + func didReceiveAdError(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, error errorArg: IMAAdError, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -3536,10 +4593,8 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didReceiveAdError" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didReceiveAdError" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, adsManagerArg, errorArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3557,11 +4612,7 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } /// Called when an ad is ready to play. - func didRequestContentPause( - pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, - adsManager adsManagerArg: IMAAdsManager, - completion: @escaping (Result) -> Void - ) { + func didRequestContentPause(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -3572,10 +4623,8 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didRequestContentPause" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didRequestContentPause" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, adsManagerArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3593,11 +4642,7 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } /// Called when an ad has finished or an error occurred during the playback. - func didRequestContentResume( - pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, - adsManager adsManagerArg: IMAAdsManager, - completion: @escaping (Result) -> Void - ) { + func didRequestContentResume(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -3608,10 +4653,8 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didRequestContentResume" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didRequestContentResume" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, adsManagerArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3629,6 +4672,132 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega } } + +/* +// 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. + +import Foundation + + +/// Implementation of `IMAAdsManagerDelegate` that calls to Dart in callback methods. +class AdsManagerDelegateImpl: IMAAdsManagerDelegate { + let api: PigeonApiProtocolIMAAdsManagerDelegate + + init(api: PigeonApiProtocolIMAAdsManagerDelegate) { + self.api = api + } + + func fixMe() { + api.didReceiveAdEvent(pigeonInstance: self, adsManager: adsManager, event: event) { _ in } + } + + func fixMe() { + api.didReceiveAdError(pigeonInstance: self, adsManager: adsManager, error: error) { _ in } + } + + func fixMe() { + api.didRequestContentPause(pigeonInstance: self, adsManager: adsManager) { _ in } + } + + func fixMe() { + api.didRequestContentResume(pigeonInstance: self, adsManager: adsManager) { _ in } + } +} + +/// ProxyApi implementation for `IMAAdsManagerDelegate`. +/// +/// 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 AdsManagerDelegateProxyAPIDelegate : PigeonApiDelegateIMAAdsManagerDelegate { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsManagerDelegate) throws -> IMAAdsManagerDelegate { + return IMAAdsManagerDelegateImpl(api: pigeonApi) + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdsManagerDelegateTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsManagerDelegate(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) + XCTAssertNotNil(instance) + } + + func testDidReceiveAdEvent() { + let api = TestAdsManagerDelegateApi() + let instance = AdsManagerDelegateImpl(api: api) + let adsManager = TestAdsManager + let event = TestAdEvent + instance.didReceiveAdEvent(adsManager: adsManager, event: event) + + XCTAssertEqual(api.didReceiveAdEventArgs, [adsManager, event]) + } + + func testDidReceiveAdError() { + let api = TestAdsManagerDelegateApi() + let instance = AdsManagerDelegateImpl(api: api) + let adsManager = TestAdsManager + let error = TestAdError + instance.didReceiveAdError(adsManager: adsManager, error: error) + + XCTAssertEqual(api.didReceiveAdErrorArgs, [adsManager, error]) + } + + func testDidRequestContentPause() { + let api = TestAdsManagerDelegateApi() + let instance = AdsManagerDelegateImpl(api: api) + let adsManager = TestAdsManager + instance.didRequestContentPause(adsManager: adsManager) + + XCTAssertEqual(api.didRequestContentPauseArgs, [adsManager]) + } + + func testDidRequestContentResume() { + let api = TestAdsManagerDelegateApi() + let instance = AdsManagerDelegateImpl(api: api) + let adsManager = TestAdsManager + instance.didRequestContentResume(adsManager: adsManager) + + XCTAssertEqual(api.didRequestContentResumeArgs, [adsManager]) + } + +} +class TestAdsManagerDelegateApi: PigeonApiProtocolIMAAdsManagerDelegate { + var didReceiveAdEventArgs: [AnyHashable?]? = nil + var didReceiveAdErrorArgs: [AnyHashable?]? = nil + var didRequestContentPauseArgs: [AnyHashable?]? = nil + var didRequestContentResumeArgs: [AnyHashable?]? = nil + + func didReceiveAdEvent(adsManager: IMAAdsManager, event: IMAAdEvent) throws { + didReceiveAdEventArgs = [adsManagerArg, eventArg] + } + func didReceiveAdError(adsManager: IMAAdsManager, error: IMAAdError) throws { + didReceiveAdErrorArgs = [adsManagerArg, errorArg] + } + func didRequestContentPause(adsManager: IMAAdsManager) throws { + didRequestContentPauseArgs = [adsManagerArg] + } + func didRequestContentResume(adsManager: IMAAdsManager) throws { + didRequestContentResumeArgs = [adsManagerArg] + } +} +*/ + protocol PigeonApiDelegateIMAAdEvent { /// Type of the event. func type(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> AdEventType @@ -3641,7 +4810,7 @@ protocol PigeonApiDelegateIMAAdEvent { protocol PigeonApiProtocolIMAAdEvent { } -final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { +final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdEvent ///An implementation of [NSObject] used to access callback methods @@ -3649,40 +4818,30 @@ final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdEvent - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdEvent) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAdEvent and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdEvent, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdEvent, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let typeArg = try! pigeonDelegate.type(pigeonApi: self, pigeonInstance: pigeonInstance) - let typeStringArg = try! pigeonDelegate.typeString( - pigeonApi: self, pigeonInstance: pigeonInstance) + let typeStringArg = try! pigeonDelegate.typeString(pigeonApi: self, pigeonInstance: pigeonInstance) let adDataArg = try! pigeonDelegate.adData(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdEvent.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, typeArg, typeStringArg, adDataArg] as [Any?]) { - response in + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdEvent.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, typeArg, typeStringArg, adDataArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -3699,51 +4858,162 @@ final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { } } } + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMAAdEvent`. +/// +/// 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 AdEventProxyAPIDelegate : PigeonApiDelegateIMAAdEvent { + func type(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> AdEventType { + switch pigeonInstance.type { + case .adBreakEnded: + return .adBreakEnded + case .adBreakFetchError: + return .adBreakFetchError + case .adBreakReady: + return .adBreakReady + case .adBreakStarted: + return .adBreakStarted + case .adPeriodEnded: + return .adPeriodEnded + case .adPeriodStarted: + return .adPeriodStarted + case .allAdsCompleted: + return .allAdsCompleted + case .clicked: + return .clicked + case .completed: + return .completed + case .cuepointsChanged: + return .cuepointsChanged + case .firstQuartile: + return .firstQuartile + case .iconFallbackImageClosed: + return .iconFallbackImageClosed + case .iconTapped: + return .iconTapped + case .loaded: + return .loaded + case .log: + return .log + case .midpoint: + return .midpoint + case .pause: + return .pause + case .resume: + return .resume + case .skipped: + return .skipped + case .started: + return .started + case .streamLoaded: + return .streamLoaded + case .streamStarted: + return .streamStarted + case .tapped: + return .tapped + case .thirdQuartile: + return .thirdQuartile + @unknown default: + return .unknown + } + } + + func typeString(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> String { + return pigeonInstance.typeString + } + + func adData(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> [String: Any]? { + return pigeonInstance.adData + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdEventTests: XCTestCase { + func testType() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdEvent(registrar) + + let instance = TestAdEvent() + let value = try? api.pigeonDelegate.type(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.type) + } + + func testTypeString() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdEvent(registrar) + + let instance = TestAdEvent() + let value = try? api.pigeonDelegate.typeString(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.typeString) + } + + func testAdData() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdEvent(registrar) + + let instance = TestAdEvent() + let value = try? api.pigeonDelegate.adData(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adData) + } + +} +*/ + protocol PigeonApiDelegateIMAAdsRenderingSettings { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRenderingSettings) throws - -> IMAAdsRenderingSettings + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRenderingSettings) throws -> IMAAdsRenderingSettings /// If specified, the SDK will play the media with MIME type on the list. - func setMimeTypes( - pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, - types: [String]?) throws + func setMimeTypes(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, types: [String]?) throws /// Maximum recommended bitrate. /// /// The value is in kbit/s. - func setBitrate( - pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, - bitrate: Int64) throws + func setBitrate(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, bitrate: Int64) throws /// Timeout (in seconds) when loading a video ad media file. /// /// Use -1 for the default of 8 seconds. - func setLoadVideoTimeout( - pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, - seconds: Double) throws + func setLoadVideoTimeout(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, seconds: Double) throws /// For VMAP and ad rules playlists, only play ad breaks scheduled after this /// time (in seconds). - func setPlayAdsAfterTime( - pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, - seconds: Double) throws + func setPlayAdsAfterTime(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, seconds: Double) throws /// Specifies the list of UI elements that should be visible. - func setUIElements( - pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, - types: [UIElementType]?) throws + func setUIElements(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, types: [UIElementType]?) throws /// Whether or not the SDK will preload ad media. /// /// Default is YES. - func setEnablePreloading( - pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, - enable: Bool) throws + func setEnablePreloading(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, enable: Bool) throws /// Specifies the optional UIViewController that will be used to open links /// in-app. - func setLinkOpenerPresentingController( - pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, - controller: UIViewController) throws + func setLinkOpenerPresentingController(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, controller: UIViewController) throws } protocol PigeonApiProtocolIMAAdsRenderingSettings { } -final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSettings { +final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSettings { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsRenderingSettings ///An implementation of [NSObject] used to access callback methods @@ -3751,34 +5021,25 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdsRenderingSettings - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsRenderingSettings) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsRenderingSettings? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsRenderingSettings?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3787,17 +5048,14 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let setMimeTypesChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setMimeTypes", - binaryMessenger: binaryMessenger, codec: codec) + let setMimeTypesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setMimeTypes", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setMimeTypesChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let typesArg: [String]? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setMimeTypes( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, types: typesArg) + try api.pigeonDelegate.setMimeTypes(pigeonApi: api, pigeonInstance: pigeonInstanceArg, types: typesArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3806,17 +5064,14 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } else { setMimeTypesChannel.setMessageHandler(nil) } - let setBitrateChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setBitrate", - binaryMessenger: binaryMessenger, codec: codec) + let setBitrateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setBitrate", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setBitrateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let bitrateArg = args[1] as! Int64 do { - try api.pigeonDelegate.setBitrate( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, bitrate: bitrateArg) + try api.pigeonDelegate.setBitrate(pigeonApi: api, pigeonInstance: pigeonInstanceArg, bitrate: bitrateArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3825,17 +5080,14 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } else { setBitrateChannel.setMessageHandler(nil) } - let setLoadVideoTimeoutChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setLoadVideoTimeout", - binaryMessenger: binaryMessenger, codec: codec) + let setLoadVideoTimeoutChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setLoadVideoTimeout", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setLoadVideoTimeoutChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let secondsArg = args[1] as! Double do { - try api.pigeonDelegate.setLoadVideoTimeout( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) + try api.pigeonDelegate.setLoadVideoTimeout(pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3844,17 +5096,14 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } else { setLoadVideoTimeoutChannel.setMessageHandler(nil) } - let setPlayAdsAfterTimeChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setPlayAdsAfterTime", - binaryMessenger: binaryMessenger, codec: codec) + let setPlayAdsAfterTimeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setPlayAdsAfterTime", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setPlayAdsAfterTimeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let secondsArg = args[1] as! Double do { - try api.pigeonDelegate.setPlayAdsAfterTime( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) + try api.pigeonDelegate.setPlayAdsAfterTime(pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3863,17 +5112,14 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } else { setPlayAdsAfterTimeChannel.setMessageHandler(nil) } - let setUIElementsChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setUIElements", - binaryMessenger: binaryMessenger, codec: codec) + let setUIElementsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setUIElements", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setUIElementsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let typesArg: [UIElementType]? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setUIElements( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, types: typesArg) + try api.pigeonDelegate.setUIElements(pigeonApi: api, pigeonInstance: pigeonInstanceArg, types: typesArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3882,17 +5128,14 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } else { setUIElementsChannel.setMessageHandler(nil) } - let setEnablePreloadingChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setEnablePreloading", - binaryMessenger: binaryMessenger, codec: codec) + let setEnablePreloadingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setEnablePreloading", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setEnablePreloadingChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let enableArg = args[1] as! Bool do { - try api.pigeonDelegate.setEnablePreloading( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, enable: enableArg) + try api.pigeonDelegate.setEnablePreloading(pigeonApi: api, pigeonInstance: pigeonInstanceArg, enable: enableArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3901,18 +5144,14 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } else { setEnablePreloadingChannel.setMessageHandler(nil) } - let setLinkOpenerPresentingControllerChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setLinkOpenerPresentingController", - binaryMessenger: binaryMessenger, codec: codec) + let setLinkOpenerPresentingControllerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setLinkOpenerPresentingController", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setLinkOpenerPresentingControllerChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let controllerArg = args[1] as! UIViewController do { - try api.pigeonDelegate.setLinkOpenerPresentingController( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, controller: controllerArg) + try api.pigeonDelegate.setLinkOpenerPresentingController(pigeonApi: api, pigeonInstance: pigeonInstanceArg, controller: controllerArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3924,27 +5163,21 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } ///Creates a Dart instance of IMAAdsRenderingSettings and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdsRenderingSettings, - completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAdsRenderingSettings, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3962,43 +5195,217 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe } } } + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMAAdsRenderingSettings`. +/// +/// 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 AdsRenderingSettingsProxyAPIDelegate : PigeonApiDelegateIMAAdsRenderingSettings { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRenderingSettings) throws -> IMAAdsRenderingSettings { + return IMAAdsRenderingSettings() + } + + func setMimeTypes(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, types: [String]?) throws { + pigeonInstance.mimeTypes = types + } + + func setBitrate(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, bitrate: Int64) throws { + pigeonInstance.bitrate = bitrate + } + + func setLoadVideoTimeout(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, seconds: Double) throws { + pigeonInstance.loadVideoTimeout = seconds + } + + func setPlayAdsAfterTime(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, seconds: Double) throws { + pigeonInstance.playAdsAfterTime = seconds + } + + func setUIElements(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, types: [UIElementType]?) throws { + pigeonInstance.uIElements = types + } + + func setEnablePreloading(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, enable: Bool) throws { + pigeonInstance.enablePreloading = enable + } + + func setLinkOpenerPresentingController(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, controller: UIViewController) throws { + pigeonInstance.linkOpenerPresentingController = controller + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdsRenderingSettingsTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) + XCTAssertNotNil(instance) + } + + func testSetMimeTypes() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) + + let instance = TestAdsRenderingSettings() + let types = ["myString"] + try? api.pigeonDelegate.setMimeTypes(pigeonApi: api, pigeonInstance: instance, types: types) + + XCTAssertEqual(instance.setMimeTypesArgs, [types]) + } + + func testSetBitrate() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) + + let instance = TestAdsRenderingSettings() + let bitrate = 0 + try? api.pigeonDelegate.setBitrate(pigeonApi: api, pigeonInstance: instance, bitrate: bitrate) + + XCTAssertEqual(instance.setBitrateArgs, [bitrate]) + } + + func testSetLoadVideoTimeout() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) + + let instance = TestAdsRenderingSettings() + let seconds = 1.0 + try? api.pigeonDelegate.setLoadVideoTimeout(pigeonApi: api, pigeonInstance: instance, seconds: seconds) + + XCTAssertEqual(instance.setLoadVideoTimeoutArgs, [seconds]) + } + + func testSetPlayAdsAfterTime() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) + + let instance = TestAdsRenderingSettings() + let seconds = 1.0 + try? api.pigeonDelegate.setPlayAdsAfterTime(pigeonApi: api, pigeonInstance: instance, seconds: seconds) + + XCTAssertEqual(instance.setPlayAdsAfterTimeArgs, [seconds]) + } + + func testSetUIElements() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) + + let instance = TestAdsRenderingSettings() + let types = [.adAttribution] + try? api.pigeonDelegate.setUIElements(pigeonApi: api, pigeonInstance: instance, types: types) + + XCTAssertEqual(instance.setUIElementsArgs, [types]) + } + + func testSetEnablePreloading() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) + + let instance = TestAdsRenderingSettings() + let enable = true + try? api.pigeonDelegate.setEnablePreloading(pigeonApi: api, pigeonInstance: instance, enable: enable) + + XCTAssertEqual(instance.setEnablePreloadingArgs, [enable]) + } + + func testSetLinkOpenerPresentingController() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) + + let instance = TestAdsRenderingSettings() + let controller = TestViewController + try? api.pigeonDelegate.setLinkOpenerPresentingController(pigeonApi: api, pigeonInstance: instance, controller: controller) + + XCTAssertEqual(instance.setLinkOpenerPresentingControllerArgs, [controller]) + } + +} +class TestAdsRenderingSettings: IMAAdsRenderingSettings { + var setMimeTypesArgs: [AnyHashable?]? = nil + var setBitrateArgs: [AnyHashable?]? = nil + var setLoadVideoTimeoutArgs: [AnyHashable?]? = nil + var setPlayAdsAfterTimeArgs: [AnyHashable?]? = nil + var setUIElementsArgs: [AnyHashable?]? = nil + var setEnablePreloadingArgs: [AnyHashable?]? = nil + var setLinkOpenerPresentingControllerArgs: [AnyHashable?]? = nil + + + override func setMimeTypes() { + setMimeTypesArgs = [types] + } + override func setBitrate() { + setBitrateArgs = [bitrate] + } + override func setLoadVideoTimeout() { + setLoadVideoTimeoutArgs = [seconds] + } + override func setPlayAdsAfterTime() { + setPlayAdsAfterTimeArgs = [seconds] + } + override func setUIElements() { + setUIElementsArgs = [types] + } + override func setEnablePreloading() { + setEnablePreloadingArgs = [enable] + } + override func setLinkOpenerPresentingController() { + setLinkOpenerPresentingControllerArgs = [controller] + } +} +*/ + open class PigeonApiDelegateNSObject { } protocol PigeonApiProtocolNSObject { } -final class PigeonApiNSObject: PigeonApiProtocolNSObject { +final class PigeonApiNSObject: PigeonApiProtocolNSObject { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateNSObject - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateNSObject - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateNSObject) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of NSObject and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: NSObject, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: NSObject, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.NSObject.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.NSObject.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4018,30 +5425,23 @@ final class PigeonApiNSObject: PigeonApiProtocolNSObject { } protocol PigeonApiDelegateIMAFriendlyObstruction { /// Initializes a friendly obstruction. - func pigeonDefaultConstructor( - pigeonApi: PigeonApiIMAFriendlyObstruction, view: UIView, purpose: FriendlyObstructionPurpose, - detailedReason: String? - ) throws -> IMAFriendlyObstruction + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAFriendlyObstruction, view: UIView, purpose: FriendlyObstructionPurpose, detailedReason: String?) throws -> IMAFriendlyObstruction /// The view causing the obstruction. - func view(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) - throws -> UIView + func view(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> UIView /// The purpose for registering the obstruction as friendly. - func purpose(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) - throws -> FriendlyObstructionPurpose + func purpose(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> FriendlyObstructionPurpose /// Optional, detailed reasoning for registering this obstruction as friendly. /// /// If the detailedReason is not null, it must follow the IAB standard by /// being 50 characters or less and only containing characters A-z, 0-9, or /// spaces. - func detailedReason( - pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction - ) throws -> String? + func detailedReason(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> String? } protocol PigeonApiProtocolIMAFriendlyObstruction { } -final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruction { +final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruction { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAFriendlyObstruction ///An implementation of [NSObject] used to access callback methods @@ -4049,26 +5449,17 @@ final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruc return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAFriendlyObstruction - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAFriendlyObstruction) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAFriendlyObstruction? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAFriendlyObstruction?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMAFriendlyObstruction.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAFriendlyObstruction.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4078,9 +5469,8 @@ final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruc let detailedReasonArg: String? = nilOrValue(args[3]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor( - pigeonApi: api, view: viewArg, purpose: purposeArg, detailedReason: detailedReasonArg), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, view: viewArg, purpose: purposeArg, detailedReason: detailedReasonArg), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -4092,33 +5482,25 @@ final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruc } ///Creates a Dart instance of IMAFriendlyObstruction and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAFriendlyObstruction, - completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAFriendlyObstruction, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let viewArg = try! pigeonDelegate.view(pigeonApi: self, pigeonInstance: pigeonInstance) let purposeArg = try! pigeonDelegate.purpose(pigeonApi: self, pigeonInstance: pigeonInstance) - let detailedReasonArg = try! pigeonDelegate.detailedReason( - pigeonApi: self, pigeonInstance: pigeonInstance) + let detailedReasonArg = try! pigeonDelegate.detailedReason(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAFriendlyObstruction.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, viewArg, purposeArg, detailedReasonArg] as [Any?]) { - response in + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAFriendlyObstruction.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, viewArg, purposeArg, detailedReasonArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -4135,13 +5517,109 @@ final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruc } } } + +/* +// 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. + +import Foundation +import UIKit + + +/// ProxyApi implementation for `IMAFriendlyObstruction`. +/// +/// 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 FriendlyObstructionProxyAPIDelegate : PigeonApiDelegateIMAFriendlyObstruction { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAFriendlyObstruction, view: UIView, purpose: FriendlyObstructionPurpose, detailedReason: String?) throws -> IMAFriendlyObstruction { + return IMAFriendlyObstruction() + } + + func view(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> UIView { + return pigeonInstance.view + } + + func purpose(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> FriendlyObstructionPurpose { + switch pigeonInstance.purpose { + case .mediaControls: + return .mediaControls + case .closeAd: + return .closeAd + case .notVisible: + return .notVisible + case .other: + return .other + @unknown default: + return .unknown + } + } + + func detailedReason(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> String? { + return pigeonInstance.detailedReason + } + +} +*/ + +/* +// 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. + +import UIKit +import Flutter +import XCTest + +@testable import interactive_media_ads + +class FriendlyObstructionTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAFriendlyObstruction(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api view: TestView, purpose: .mediaControls, detailedReason: "myString") + XCTAssertNotNil(instance) + } + + func testView() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAFriendlyObstruction(registrar) + + let instance = TestFriendlyObstruction() + let value = try? api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.view) + } + + func testPurpose() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAFriendlyObstruction(registrar) + + let instance = TestFriendlyObstruction() + let value = try? api.pigeonDelegate.purpose(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.purpose) + } + + func testDetailedReason() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAFriendlyObstruction(registrar) + + let instance = TestFriendlyObstruction() + let value = try? api.pigeonDelegate.detailedReason(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.detailedReason) + } + +} +*/ + protocol PigeonApiDelegateIMACompanionAd { /// The value for the resource of this companion. - func resourceValue(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws - -> String? + func resourceValue(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> String? /// The API needed to execute this ad, or nil if unavailable. - func apiFramework(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws - -> String? + func apiFramework(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> String? /// The width of the companion in pixels. /// /// 0 if unavailable. @@ -4155,7 +5633,7 @@ protocol PigeonApiDelegateIMACompanionAd { protocol PigeonApiProtocolIMACompanionAd { } -final class PigeonApiIMACompanionAd: PigeonApiProtocolIMACompanionAd { +final class PigeonApiIMACompanionAd: PigeonApiProtocolIMACompanionAd { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMACompanionAd ///An implementation of [NSObject] used to access callback methods @@ -4163,43 +5641,31 @@ final class PigeonApiIMACompanionAd: PigeonApiProtocolIMACompanionAd { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMACompanionAd - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMACompanionAd) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMACompanionAd and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMACompanionAd, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMACompanionAd, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) - let resourceValueArg = try! pigeonDelegate.resourceValue( - pigeonApi: self, pigeonInstance: pigeonInstance) - let apiFrameworkArg = try! pigeonDelegate.apiFramework( - pigeonApi: self, pigeonInstance: pigeonInstance) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let resourceValueArg = try! pigeonDelegate.resourceValue(pigeonApi: self, pigeonInstance: pigeonInstance) + let apiFrameworkArg = try! pigeonDelegate.apiFramework(pigeonApi: self, pigeonInstance: pigeonInstance) let widthArg = try! pigeonDelegate.width(pigeonApi: self, pigeonInstance: pigeonInstance) let heightArg = try! pigeonDelegate.height(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMACompanionAd.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage( - [pigeonIdentifierArg, resourceValueArg, apiFrameworkArg, widthArg, heightArg] as [Any?] - ) { response in + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionAd.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, resourceValueArg, apiFrameworkArg, widthArg, heightArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -4216,61 +5682,135 @@ final class PigeonApiIMACompanionAd: PigeonApiProtocolIMACompanionAd { } } } + +/* +// 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. + +import Foundation + + + +/// ProxyApi implementation for `IMACompanionAd`. +/// +/// 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 CompanionAdProxyAPIDelegate : PigeonApiDelegateIMACompanionAd { + func resourceValue(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> String? { + return pigeonInstance.resourceValue + } + + func apiFramework(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> String? { + return pigeonInstance.apiFramework + } + + func width(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> Int64 { + return pigeonInstance.width + } + + func height(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> Int64 { + return pigeonInstance.height + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class CompanionAdProxyApiTests: XCTestCase { + func testResourceValue() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAd(registrar) + + let instance = TestCompanionAd() + let value = try? api.pigeonDelegate.resourceValue(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.resourceValue) + } + + func testApiFramework() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAd(registrar) + + let instance = TestCompanionAd() + let value = try? api.pigeonDelegate.apiFramework(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.apiFramework) + } + + func testWidth() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAd(registrar) + + let instance = TestCompanionAd() + let value = try? api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.width) + } + + func testHeight() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAd(registrar) + + let instance = TestCompanionAd() + let value = try? api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.height) + } + +} +*/ + protocol PigeonApiDelegateIMACompanionAdSlot { /// Initializes an instance of a IMACompanionAdSlot with fluid size. - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView) throws - -> IMACompanionAdSlot + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView) throws -> IMACompanionAdSlot /// Initializes an instance of a IMACompanionAdSlot with design ad width and /// height. /// /// `width` and `height` are in pixels. - func size(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView, width: Int64, height: Int64) - throws -> IMACompanionAdSlot + func size(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView, width: Int64, height: Int64) throws -> IMACompanionAdSlot /// The view the companion will be rendered in. /// /// Display this view in your application before video ad starts. - func view(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws - -> UIView + func view(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> UIView /// The IMACompanionDelegate for receiving events from the companion ad slot. /// /// This instance only creates a weak reference to the delegate, so the Dart /// instance should create an explicit reference to receive callbacks. - func setDelegate( - pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot, - delegate: IMACompanionDelegate?) throws + func setDelegate(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot, delegate: IMACompanionDelegate?) throws /// Width of the slot, in pixels. - func width(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws - -> Int64 + func width(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> Int64 /// Height of the slot, in pixels. - func height(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws - -> Int64 + func height(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> Int64 } protocol PigeonApiProtocolIMACompanionAdSlot { } -final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { +final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMACompanionAdSlot - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMACompanionAdSlot - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMACompanionAdSlot) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMACompanionAdSlot? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMACompanionAdSlot?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4278,8 +5818,8 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { let viewArg = args[1] as! UIView do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, view: viewArg), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, view: viewArg), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -4288,9 +5828,7 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let sizeChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.size", - binaryMessenger: binaryMessenger, codec: codec) + let sizeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.size", binaryMessenger: binaryMessenger, codec: codec) if let api = api { sizeChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4300,9 +5838,8 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { let heightArg = args[3] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.size( - pigeonApi: api, view: viewArg, width: widthArg, height: heightArg), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.size(pigeonApi: api, view: viewArg, width: widthArg, height: heightArg), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -4311,17 +5848,14 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { } else { sizeChannel.setMessageHandler(nil) } - let setDelegateChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.setDelegate", - binaryMessenger: binaryMessenger, codec: codec) + let setDelegateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.setDelegate", binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDelegateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMACompanionAdSlot let delegateArg: IMACompanionDelegate? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setDelegate( - pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) + try api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -4330,16 +5864,13 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { } else { setDelegateChannel.setMessageHandler(nil) } - let widthChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.width", - binaryMessenger: binaryMessenger, codec: codec) + let widthChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.width", binaryMessenger: binaryMessenger, codec: codec) if let api = api { widthChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMACompanionAdSlot do { - let result = try api.pigeonDelegate.width( - pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -4348,16 +5879,13 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { } else { widthChannel.setMessageHandler(nil) } - let heightChannel = FlutterBasicMessageChannel( - name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.height", - binaryMessenger: binaryMessenger, codec: codec) + let heightChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.height", binaryMessenger: binaryMessenger, codec: codec) if let api = api { heightChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMACompanionAdSlot do { - let result = try api.pigeonDelegate.height( - pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -4369,27 +5897,22 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { } ///Creates a Dart instance of IMACompanionAdSlot and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMACompanionAdSlot, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMACompanionAdSlot, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let viewArg = try! pigeonDelegate.view(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg, viewArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4407,24 +5930,155 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { } } } + +/* +// 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. + +import Foundation +import UIKit + + +/// ProxyApi implementation for `IMACompanionAdSlot`. +/// +/// 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 CompanionAdSlotProxyAPIDelegate : PigeonApiDelegateIMACompanionAdSlot { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView) throws -> IMACompanionAdSlot { + return IMACompanionAdSlot() + } + + func size(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView, width: Int64, height: Int64) throws -> IMACompanionAdSlot { + return IMACompanionAdSlot(,width: width, height: height) + } + + func view(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> UIView { + return pigeonInstance.view + } + + func setDelegate(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot, delegate: IMACompanionDelegate?) throws { + pigeonInstance.delegate = delegate + } + + func width(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> Int64 { + return pigeonInstance.width() + } + + func height(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> Int64 { + return pigeonInstance.height() + } + +} +*/ + +/* +// 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. + +import UIKit +import Flutter +import XCTest + +@testable import interactive_media_ads + +class CompanionAdSlotProxyApiTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api view: TestView) + XCTAssertNotNil(instance) + } + + func testSize() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) + + let instance = try? api.pigeonDelegate.size(pigeonApi: api, view: TestView, width: 0, height: 0) + XCTAssertNotNil(instance) + } + + func testView() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) + + let instance = TestCompanionAdSlot() + let value = try? api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.view) + } + + func testSetDelegate() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) + + let instance = TestCompanionAdSlot() + let delegate = TestCompanionDelegate + try? api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: instance, delegate: delegate) + + XCTAssertEqual(instance.setDelegateArgs, [delegate]) + } + + func testWidth() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) + + let instance = TestCompanionAdSlot() + let value = try? api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.widthCalled) + XCTAssertEqual(value, instance.width()) + } + + func testHeight() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) + + let instance = TestCompanionAdSlot() + let value = try? api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: instance ) + + XCTAssertTrue(instance.heightCalled) + XCTAssertEqual(value, instance.height()) + } + +} +class TestCompanionAdSlot: IMACompanionAdSlot { + private var viewTestValue = TestView + var setDelegateArgs: [AnyHashable?]? = nil + var widthCalled = false + var heightCalled = false + + override var view: UIView { + return viewTestValue + } + + override func setDelegate() { + setDelegateArgs = [delegate] + } + override func width() { + widthCalled = true + } + override func height() { + heightCalled = true + } +} +*/ + protocol PigeonApiDelegateIMACompanionDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionDelegate) throws - -> IMACompanionDelegate + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionDelegate) throws -> IMACompanionDelegate } protocol PigeonApiProtocolIMACompanionDelegate { /// Called when the slot is either filled or not filled. - func companionAdSlotFilled( - pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, - filled filledArg: Bool, completion: @escaping (Result) -> Void) + func companionAdSlotFilled(pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, filled filledArg: Bool, completion: @escaping (Result) -> Void) /// Called when the slot is clicked on by the user and will successfully /// navigate away. - func companionSlotWasClicked( - pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, - completion: @escaping (Result) -> Void) + func companionSlotWasClicked(pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, completion: @escaping (Result) -> Void) } -final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate { +final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMACompanionDelegate ///An implementation of [NSObject] used to access callback methods @@ -4432,34 +6086,25 @@ final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMACompanionDelegate - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMACompanionDelegate) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers( - binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMACompanionDelegate? - ) { + static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMACompanionDelegate?) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( - pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( - name: - "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.pigeon_defaultConstructor", - binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), - withIdentifier: pigeonIdentifierArg) +try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), +withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -4471,26 +6116,21 @@ final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate } ///Creates a Dart instance of IMACompanionDelegate and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMACompanionDelegate, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMACompanionDelegate, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4508,10 +6148,7 @@ final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate } } /// Called when the slot is either filled or not filled. - func companionAdSlotFilled( - pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, - filled filledArg: Bool, completion: @escaping (Result) -> Void - ) { + func companionAdSlotFilled(pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, filled filledArg: Bool, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -4522,10 +6159,8 @@ final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.companionAdSlotFilled" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.companionAdSlotFilled" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, slotArg, filledArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4544,10 +6179,7 @@ final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate /// Called when the slot is clicked on by the user and will successfully /// navigate away. - func companionSlotWasClicked( - pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, - completion: @escaping (Result) -> Void - ) { + func companionSlotWasClicked(pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -4558,10 +6190,8 @@ final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.companionSlotWasClicked" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.companionSlotWasClicked" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, slotArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4579,6 +6209,97 @@ final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate } } + +/* +// 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. + +import Foundation + + +/// Implementation of `IMACompanionDelegate` that calls to Dart in callback methods. +class CompanionDelegateImpl: IMACompanionDelegate { + let api: PigeonApiProtocolIMACompanionDelegate + + init(api: PigeonApiProtocolIMACompanionDelegate) { + self.api = api + } + + func fixMe() { + api.companionAdSlotFilled(pigeonInstance: self, slot: slot, filled: filled) { _ in } + } + + func fixMe() { + api.companionSlotWasClicked(pigeonInstance: self, slot: slot) { _ in } + } +} + +/// ProxyApi implementation for `IMACompanionDelegate`. +/// +/// 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 CompanionDelegateProxyAPIDelegate : PigeonApiDelegateIMACompanionDelegate { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionDelegate) throws -> IMACompanionDelegate { + return IMACompanionDelegateImpl(api: pigeonApi) + } + +} +*/ + +/* +// 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. + + +import Flutter +import XCTest + +@testable import interactive_media_ads + +class CompanionDelegateProxyApiTests: XCTestCase { + func testPigeonDefaultConstructor() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMACompanionDelegate(registrar) + + let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) + XCTAssertNotNil(instance) + } + + func testCompanionAdSlotFilled() { + let api = TestCompanionDelegateApi() + let instance = CompanionDelegateImpl(api: api) + let slot = TestCompanionAdSlot + let filled = true + instance.companionAdSlotFilled(slot: slot, filled: filled) + + XCTAssertEqual(api.companionAdSlotFilledArgs, [slot, filled]) + } + + func testCompanionSlotWasClicked() { + let api = TestCompanionDelegateApi() + let instance = CompanionDelegateImpl(api: api) + let slot = TestCompanionAdSlot + instance.companionSlotWasClicked(slot: slot) + + XCTAssertEqual(api.companionSlotWasClickedArgs, [slot]) + } + +} +class TestCompanionDelegateApi: PigeonApiProtocolIMACompanionDelegate { + var companionAdSlotFilledArgs: [AnyHashable?]? = nil + var companionSlotWasClickedArgs: [AnyHashable?]? = nil + + func companionAdSlotFilled(slot: IMACompanionAdSlot, filled: Bool) throws { + companionAdSlotFilledArgs = [slotArg, filledArg] + } + func companionSlotWasClicked(slot: IMACompanionAdSlot) throws { + companionSlotWasClickedArgs = [slotArg] + } +} +*/ + protocol PigeonApiDelegateIMAAdPodInfo { /// The position of this ad within an ad pod. /// @@ -4620,71 +6341,169 @@ protocol PigeonApiDelegateIMAAdPodInfo { protocol PigeonApiProtocolIMAAdPodInfo { } -final class PigeonApiIMAAdPodInfo: PigeonApiProtocolIMAAdPodInfo { +final class PigeonApiIMAAdPodInfo: PigeonApiProtocolIMAAdPodInfo { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdPodInfo - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAdPodInfo - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdPodInfo) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - ///Creates a Dart instance of IMAAdPodInfo and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAdPodInfo, completion: @escaping (Result) -> Void - ) { - if pigeonRegistrar.ignoreCallsToDart { - completion( - .failure( - PigeonError( - code: "ignore-calls-error", - message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { - completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) - let adPositionArg = try! pigeonDelegate.adPosition( - pigeonApi: self, pigeonInstance: pigeonInstance) - let maxDurationArg = try! pigeonDelegate.maxDuration( - pigeonApi: self, pigeonInstance: pigeonInstance) - let podIndexArg = try! pigeonDelegate.podIndex( - pigeonApi: self, pigeonInstance: pigeonInstance) - let timeOffsetArg = try! pigeonDelegate.timeOffset( - pigeonApi: self, pigeonInstance: pigeonInstance) - let totalAdsArg = try! pigeonDelegate.totalAds( - pigeonApi: self, pigeonInstance: pigeonInstance) - let isBumperArg = try! pigeonDelegate.isBumper( - pigeonApi: self, pigeonInstance: pigeonInstance) - let binaryMessenger = pigeonRegistrar.binaryMessenger - let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAAdPodInfo.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage( - [ - pigeonIdentifierArg, adPositionArg, maxDurationArg, podIndexArg, timeOffsetArg, - totalAdsArg, isBumperArg, - ] as [Any?] - ) { response in - guard let listResponse = response as? [Any?] else { - completion(.failure(createConnectionError(withChannelName: channelName))) - return - } - if listResponse.count > 1 { - let code: String = listResponse[0] as! String - let message: String? = nilOrValue(listResponse[1]) - let details: String? = nilOrValue(listResponse[2]) - completion(.failure(PigeonError(code: code, message: message, details: details))) - } else { - completion(.success(())) - } - } - } + ///Creates a Dart instance of IMAAdPodInfo and attaches it to [pigeonInstance]. + func pigeonNewInstance(pigeonInstance: IMAAdPodInfo, completion: @escaping (Result) -> Void) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let adPositionArg = try! pigeonDelegate.adPosition(pigeonApi: self, pigeonInstance: pigeonInstance) + let maxDurationArg = try! pigeonDelegate.maxDuration(pigeonApi: self, pigeonInstance: pigeonInstance) + let podIndexArg = try! pigeonDelegate.podIndex(pigeonApi: self, pigeonInstance: pigeonInstance) + let timeOffsetArg = try! pigeonDelegate.timeOffset(pigeonApi: self, pigeonInstance: pigeonInstance) + let totalAdsArg = try! pigeonDelegate.totalAds(pigeonApi: self, pigeonInstance: pigeonInstance) + let isBumperArg = try! pigeonDelegate.isBumper(pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdPodInfo.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, adPositionArg, maxDurationArg, podIndexArg, timeOffsetArg, totalAdsArg, isBumperArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } + } +} + +/* +// 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. + +import Foundation +import GoogleInteractiveMediaAds + + +/// ProxyApi implementation for `IMAAdPodInfo`. +/// +/// 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 AdPodInfoProxyAPIDelegate : PigeonApiDelegateIMAAdPodInfo { + func adPosition(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Int64 { + return pigeonInstance.adPosition + } + + func maxDuration(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Double { + return pigeonInstance.maxDuration + } + + func podIndex(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Int64 { + return pigeonInstance.podIndex + } + + func timeOffset(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Double { + return pigeonInstance.timeOffset + } + + func totalAds(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Int64 { + return pigeonInstance.totalAds + } + + func isBumper(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Bool { + return pigeonInstance.isBumper + } + +} +*/ + +/* +// 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. + +import GoogleInteractiveMediaAds +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdPodInfoProxyAPITests: XCTestCase { + func testAdPosition() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) + + let instance = TestAdPodInfo() + let value = try? api.pigeonDelegate.adPosition(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adPosition) + } + + func testMaxDuration() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) + + let instance = TestAdPodInfo() + let value = try? api.pigeonDelegate.maxDuration(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.maxDuration) + } + + func testPodIndex() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) + + let instance = TestAdPodInfo() + let value = try? api.pigeonDelegate.podIndex(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.podIndex) + } + + func testTimeOffset() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) + + let instance = TestAdPodInfo() + let value = try? api.pigeonDelegate.timeOffset(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.timeOffset) + } + + func testTotalAds() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) + + let instance = TestAdPodInfo() + let value = try? api.pigeonDelegate.totalAds(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.totalAds) + } + + func testIsBumper() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) + + let instance = TestAdPodInfo() + let value = try? api.pigeonDelegate.isBumper(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.isBumper) } + } +*/ + protocol PigeonApiDelegateIMAAd { /// The ad ID as specified in the VAST response. func adId(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String @@ -4769,95 +6588,57 @@ protocol PigeonApiDelegateIMAAd { protocol PigeonApiProtocolIMAAd { } -final class PigeonApiIMAAd: PigeonApiProtocolIMAAd { +final class PigeonApiIMAAd: PigeonApiProtocolIMAAd { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAd - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAAd - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAd) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAd and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAAd, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAAd, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) let adIdArg = try! pigeonDelegate.adId(pigeonApi: self, pigeonInstance: pigeonInstance) let adTitleArg = try! pigeonDelegate.adTitle(pigeonApi: self, pigeonInstance: pigeonInstance) - let adDescriptionArg = try! pigeonDelegate.adDescription( - pigeonApi: self, pigeonInstance: pigeonInstance) - let adSystemArg = try! pigeonDelegate.adSystem( - pigeonApi: self, pigeonInstance: pigeonInstance) - let companionAdsArg = try! pigeonDelegate.companionAds( - pigeonApi: self, pigeonInstance: pigeonInstance) - let contentTypeArg = try! pigeonDelegate.contentType( - pigeonApi: self, pigeonInstance: pigeonInstance) - let durationArg = try! pigeonDelegate.duration( - pigeonApi: self, pigeonInstance: pigeonInstance) - let uiElementsArg = try! pigeonDelegate.uiElements( - pigeonApi: self, pigeonInstance: pigeonInstance) + let adDescriptionArg = try! pigeonDelegate.adDescription(pigeonApi: self, pigeonInstance: pigeonInstance) + let adSystemArg = try! pigeonDelegate.adSystem(pigeonApi: self, pigeonInstance: pigeonInstance) + let companionAdsArg = try! pigeonDelegate.companionAds(pigeonApi: self, pigeonInstance: pigeonInstance) + let contentTypeArg = try! pigeonDelegate.contentType(pigeonApi: self, pigeonInstance: pigeonInstance) + let durationArg = try! pigeonDelegate.duration(pigeonApi: self, pigeonInstance: pigeonInstance) + let uiElementsArg = try! pigeonDelegate.uiElements(pigeonApi: self, pigeonInstance: pigeonInstance) let widthArg = try! pigeonDelegate.width(pigeonApi: self, pigeonInstance: pigeonInstance) let heightArg = try! pigeonDelegate.height(pigeonApi: self, pigeonInstance: pigeonInstance) - let vastMediaWidthArg = try! pigeonDelegate.vastMediaWidth( - pigeonApi: self, pigeonInstance: pigeonInstance) - let vastMediaHeightArg = try! pigeonDelegate.vastMediaHeight( - pigeonApi: self, pigeonInstance: pigeonInstance) - let vastMediaBitrateArg = try! pigeonDelegate.vastMediaBitrate( - pigeonApi: self, pigeonInstance: pigeonInstance) - let isLinearArg = try! pigeonDelegate.isLinear( - pigeonApi: self, pigeonInstance: pigeonInstance) - let isSkippableArg = try! pigeonDelegate.isSkippable( - pigeonApi: self, pigeonInstance: pigeonInstance) - let skipTimeOffsetArg = try! pigeonDelegate.skipTimeOffset( - pigeonApi: self, pigeonInstance: pigeonInstance) - let adPodInfoArg = try! pigeonDelegate.adPodInfo( - pigeonApi: self, pigeonInstance: pigeonInstance) - let traffickingParametersArg = try! pigeonDelegate.traffickingParameters( - pigeonApi: self, pigeonInstance: pigeonInstance) - let creativeIDArg = try! pigeonDelegate.creativeID( - pigeonApi: self, pigeonInstance: pigeonInstance) - let creativeAdIDArg = try! pigeonDelegate.creativeAdID( - pigeonApi: self, pigeonInstance: pigeonInstance) - let universalAdIDsArg = try! pigeonDelegate.universalAdIDs( - pigeonApi: self, pigeonInstance: pigeonInstance) - let advertiserNameArg = try! pigeonDelegate.advertiserName( - pigeonApi: self, pigeonInstance: pigeonInstance) - let surveyURLArg = try! pigeonDelegate.surveyURL( - pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaWidthArg = try! pigeonDelegate.vastMediaWidth(pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaHeightArg = try! pigeonDelegate.vastMediaHeight(pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaBitrateArg = try! pigeonDelegate.vastMediaBitrate(pigeonApi: self, pigeonInstance: pigeonInstance) + let isLinearArg = try! pigeonDelegate.isLinear(pigeonApi: self, pigeonInstance: pigeonInstance) + let isSkippableArg = try! pigeonDelegate.isSkippable(pigeonApi: self, pigeonInstance: pigeonInstance) + let skipTimeOffsetArg = try! pigeonDelegate.skipTimeOffset(pigeonApi: self, pigeonInstance: pigeonInstance) + let adPodInfoArg = try! pigeonDelegate.adPodInfo(pigeonApi: self, pigeonInstance: pigeonInstance) + let traffickingParametersArg = try! pigeonDelegate.traffickingParameters(pigeonApi: self, pigeonInstance: pigeonInstance) + let creativeIDArg = try! pigeonDelegate.creativeID(pigeonApi: self, pigeonInstance: pigeonInstance) + let creativeAdIDArg = try! pigeonDelegate.creativeAdID(pigeonApi: self, pigeonInstance: pigeonInstance) + let universalAdIDsArg = try! pigeonDelegate.universalAdIDs(pigeonApi: self, pigeonInstance: pigeonInstance) + let advertiserNameArg = try! pigeonDelegate.advertiserName(pigeonApi: self, pigeonInstance: pigeonInstance) + let surveyURLArg = try! pigeonDelegate.surveyURL(pigeonApi: self, pigeonInstance: pigeonInstance) let dealIDArg = try! pigeonDelegate.dealID(pigeonApi: self, pigeonInstance: pigeonInstance) - let wrapperAdIDsArg = try! pigeonDelegate.wrapperAdIDs( - pigeonApi: self, pigeonInstance: pigeonInstance) - let wrapperCreativeIDsArg = try! pigeonDelegate.wrapperCreativeIDs( - pigeonApi: self, pigeonInstance: pigeonInstance) - let wrapperSystemsArg = try! pigeonDelegate.wrapperSystems( - pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperAdIDsArg = try! pigeonDelegate.wrapperAdIDs(pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperCreativeIDsArg = try! pigeonDelegate.wrapperCreativeIDs(pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperSystemsArg = try! pigeonDelegate.wrapperSystems(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage( - [ - pigeonIdentifierArg, adIdArg, adTitleArg, adDescriptionArg, adSystemArg, companionAdsArg, - contentTypeArg, durationArg, uiElementsArg, widthArg, heightArg, vastMediaWidthArg, - vastMediaHeightArg, vastMediaBitrateArg, isLinearArg, isSkippableArg, skipTimeOffsetArg, - adPodInfoArg, traffickingParametersArg, creativeIDArg, creativeAdIDArg, universalAdIDsArg, - advertiserNameArg, surveyURLArg, dealIDArg, wrapperAdIDsArg, wrapperCreativeIDsArg, - wrapperSystemsArg, - ] as [Any?] - ) { response in + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, adIdArg, adTitleArg, adDescriptionArg, adSystemArg, companionAdsArg, contentTypeArg, durationArg, uiElementsArg, widthArg, heightArg, vastMediaWidthArg, vastMediaHeightArg, vastMediaBitrateArg, isLinearArg, isSkippableArg, skipTimeOffsetArg, adPodInfoArg, traffickingParametersArg, creativeIDArg, creativeAdIDArg, universalAdIDsArg, advertiserNameArg, surveyURLArg, dealIDArg, wrapperAdIDsArg, wrapperCreativeIDsArg, wrapperSystemsArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -4874,59 +6655,457 @@ final class PigeonApiIMAAd: PigeonApiProtocolIMAAd { } } } + +/* +// 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. + +import Foundation +import GoogleInteractiveMediaAds + + +/// ProxyApi implementation for `IMAAd`. +/// +/// 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 AdProxyAPIDelegate : PigeonApiDelegateIMAAd { + func adId(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.adId + } + + func adTitle(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.adTitle + } + + func adDescription(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.adDescription + } + + func adSystem(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.adSystem + } + + func companionAds(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMACompanionAd] { + return pigeonInstance.companionAds + } + + func contentType(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.contentType + } + + func duration(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Double { + return pigeonInstance.duration + } + + func uiElements(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [UIElementType] { + return pigeonInstance.uiElements + } + + func width(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return pigeonInstance.width + } + + func height(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return pigeonInstance.height + } + + func vastMediaWidth(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return pigeonInstance.vastMediaWidth + } + + func vastMediaHeight(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return pigeonInstance.vastMediaHeight + } + + func vastMediaBitrate(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { + return pigeonInstance.vastMediaBitrate + } + + func isLinear(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Bool { + return pigeonInstance.isLinear + } + + func isSkippable(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Bool { + return pigeonInstance.isSkippable + } + + func skipTimeOffset(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Double { + return pigeonInstance.skipTimeOffset + } + + func adPodInfo(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> IMAAdPodInfo { + return pigeonInstance.adPodInfo + } + + func traffickingParameters(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.traffickingParameters + } + + func creativeID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.creativeID + } + + func creativeAdID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.creativeAdID + } + + func universalAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMAUniversalAdID] { + return pigeonInstance.universalAdIDs + } + + func advertiserName(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.advertiserName + } + + func surveyURL(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String? { + return pigeonInstance.surveyURL + } + + func dealID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { + return pigeonInstance.dealID + } + + func wrapperAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { + return pigeonInstance.wrapperAdIDs + } + + func wrapperCreativeIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { + return pigeonInstance.wrapperCreativeIDs + } + + func wrapperSystems(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { + return pigeonInstance.wrapperSystems + } + +} +*/ + +/* +// 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. + +import GoogleInteractiveMediaAds +import Flutter +import XCTest + +@testable import interactive_media_ads + +class AdProxyAPITests: XCTestCase { + func testAdId() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.adId(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adId) + } + + func testAdTitle() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.adTitle(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adTitle) + } + + func testAdDescription() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.adDescription(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adDescription) + } + + func testAdSystem() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.adSystem(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adSystem) + } + + func testCompanionAds() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.companionAds) + } + + func testContentType() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.contentType(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.contentType) + } + + func testDuration() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.duration(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.duration) + } + + func testUiElements() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.uiElements(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.uiElements) + } + + func testWidth() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.width) + } + + func testHeight() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.height) + } + + func testVastMediaWidth() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.vastMediaWidth(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.vastMediaWidth) + } + + func testVastMediaHeight() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.vastMediaHeight(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.vastMediaHeight) + } + + func testVastMediaBitrate() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.vastMediaBitrate(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.vastMediaBitrate) + } + + func testIsLinear() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.isLinear(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.isLinear) + } + + func testIsSkippable() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.isSkippable(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.isSkippable) + } + + func testSkipTimeOffset() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.skipTimeOffset(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.skipTimeOffset) + } + + func testAdPodInfo() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.adPodInfo(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adPodInfo) + } + + func testTraffickingParameters() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.traffickingParameters(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.traffickingParameters) + } + + func testCreativeID() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.creativeID(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.creativeID) + } + + func testCreativeAdID() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.creativeAdID(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.creativeAdID) + } + + func testUniversalAdIDs() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.universalAdIDs) + } + + func testAdvertiserName() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.advertiserName(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.advertiserName) + } + + func testSurveyURL() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.surveyURL(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.surveyURL) + } + + func testDealID() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.dealID(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.dealID) + } + + func testWrapperAdIDs() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.wrapperAdIDs(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.wrapperAdIDs) + } + + func testWrapperCreativeIDs() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.wrapperCreativeIDs(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.wrapperCreativeIDs) + } + + func testWrapperSystems() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd() + let value = try? api.pigeonDelegate.wrapperSystems(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.wrapperSystems) + } + +} +*/ + protocol PigeonApiDelegateIMAUniversalAdID { /// The universal ad ID value. /// /// This will be “unknown” if it isn’t defined by the ad. - func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws - -> String + func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String /// The universal ad ID registry with which the value is registered. /// /// This will be “unknown” if it isn’t defined by the ad. - func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws - -> String + func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String } protocol PigeonApiProtocolIMAUniversalAdID { } -final class PigeonApiIMAUniversalAdID: PigeonApiProtocolIMAUniversalAdID { +final class PigeonApiIMAUniversalAdID: PigeonApiProtocolIMAUniversalAdID { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAUniversalAdID - init( - pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, - delegate: PigeonApiDelegateIMAUniversalAdID - ) { + init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAUniversalAdID) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAUniversalAdID and attaches it to [pigeonInstance]. - func pigeonNewInstance( - pigeonInstance: IMAUniversalAdID, completion: @escaping (Result) -> Void - ) { + func pigeonNewInstance(pigeonInstance: IMAUniversalAdID, completion: @escaping (Result) -> Void) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( - pigeonInstance as AnyObject) - let adIDValueArg = try! pigeonDelegate.adIDValue( - pigeonApi: self, pigeonInstance: pigeonInstance) - let adIDRegistryArg = try! pigeonDelegate.adIDRegistry( - pigeonApi: self, pigeonInstance: pigeonInstance) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + let adIDValueArg = try! pigeonDelegate.adIDValue(pigeonApi: self, pigeonInstance: pigeonInstance) + let adIDRegistryArg = try! pigeonDelegate.adIDRegistry(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = - "dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance" - let channel = FlutterBasicMessageChannel( - name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, adIDValueArg, adIDRegistryArg] as [Any?]) { - response in + let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, adIDValueArg, adIDRegistryArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -4943,3 +7122,64 @@ final class PigeonApiIMAUniversalAdID: PigeonApiProtocolIMAUniversalAdID { } } } + +/* +// 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. + +import Foundation +import GoogleInteractiveMediaAds + + +/// ProxyApi implementation for `IMAUniversalAdID`. +/// +/// 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 UniversalAdIDProxyAPIDelegate : PigeonApiDelegateIMAUniversalAdID { + func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String { + return pigeonInstance.adIDValue + } + + func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String { + return pigeonInstance.adIDRegistry + } + +} +*/ + +/* +// 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. + +import GoogleInteractiveMediaAds +import Flutter +import XCTest + +@testable import interactive_media_ads + +class UniversalAdIDProxyAPITests: XCTestCase { + func testAdIDValue() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAUniversalAdID(registrar) + + let instance = TestUniversalAdID() + let value = try? api.pigeonDelegate.adIDValue(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adIDValue) + } + + func testAdIDRegistry() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAUniversalAdID(registrar) + + let instance = TestUniversalAdID() + let value = try? api.pigeonDelegate.adIDRegistry(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adIDRegistry) + } + +} +*/ + diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/ProxyApiDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/ProxyApiDelegate.swift index 3a14efd82e4..bec580938d5 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/ProxyApiDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/ProxyApiDelegate.swift @@ -165,4 +165,12 @@ open class ProxyApiDelegate: InteractiveMediaAdsLibraryPigeonProxyApiDelegate { { return PigeonApiIMASettings(pigeonRegistrar: registrar, delegate: SettingsProxyAPIDelegate()) } + + func pigeonApiIMAAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAd { + return PigeonApiIMAAd(pigeonRegistrar: registrar, delegate: AdProxyAPIDelegate()) + } + + func pigeonApiIMAUniversalAdID(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAUniversalAdID { + return PigeonApiIMAUniversalAdID(pigeonRegistrar: registrar, delegate: UniversalAdIDProxyAPIDelegate()) + } } diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/UniversalAdIDProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/UniversalAdIDProxyAPIDelegate.swift new file mode 100644 index 00000000000..a1f9ec432e6 --- /dev/null +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/UniversalAdIDProxyAPIDelegate.swift @@ -0,0 +1,21 @@ +// 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. + +import Foundation +import GoogleInteractiveMediaAds + + +/// ProxyApi implementation for `IMAUniversalAdID`. +/// +/// 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 UniversalAdIDProxyAPIDelegate : PigeonApiDelegateIMAUniversalAdID { + func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String { + return pigeonInstance.adIDValue + } + + func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String { + return pigeonInstance.adIDRegistry + } +} diff --git a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart index 72e486e0cd2..b1f274e5bdd 100644 --- a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart +++ b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart @@ -9,8 +9,7 @@ import 'dart:async'; import 'dart:io' show Platform; import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; -import 'package:flutter/foundation.dart' - show ReadBuffer, WriteBuffer, immutable, protected, visibleForTesting; +import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer, immutable, protected, visibleForTesting; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart' show WidgetsFlutterBinding; @@ -21,8 +20,7 @@ PlatformException _createConnectionError(String channelName) { ); } -List wrapResponse( - {Object? result, PlatformException? error, bool empty = false}) { +List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } @@ -31,7 +29,6 @@ List wrapResponse( } return [error.code, error.message, error.details]; } - /// Provides overrides for the constructors and static members of each proxy /// API. /// @@ -253,10 +250,9 @@ class PigeonInstanceManager { // by calling instanceManager.getIdentifier() inside of `==` while this was a // HashMap). final Expando _identifiers = Expando(); - final Map> - _weakInstances = >{}; - final Map _strongInstances = - {}; + final Map> _weakInstances = + >{}; + final Map _strongInstances = {}; late final Finalizer _finalizer; int _nextIdentifier = 0; @@ -269,8 +265,7 @@ class PigeonInstanceManager { return PigeonInstanceManager(onWeakReferenceRemoved: (_) {}); } WidgetsFlutterBinding.ensureInitialized(); - final _PigeonInternalInstanceManagerApi api = - _PigeonInternalInstanceManagerApi(); + final _PigeonInternalInstanceManagerApi api = _PigeonInternalInstanceManagerApi(); // Clears the native `PigeonInstanceManager` on the initial use of the Dart one. api.clear(); final PigeonInstanceManager instanceManager = PigeonInstanceManager( @@ -278,52 +273,30 @@ class PigeonInstanceManager { api.removeStrongReference(identifier); }, ); - _PigeonInternalInstanceManagerApi.setUpMessageHandlers( - instanceManager: instanceManager); - IMAAdDisplayContainer.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); + _PigeonInternalInstanceManagerApi.setUpMessageHandlers(instanceManager: instanceManager); + IMAAdDisplayContainer.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); UIView.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - UIViewController.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAContentPlayhead.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdsLoader.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMASettings.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdsRequest.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdsLoaderDelegate.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdsLoadedData.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdLoadingErrorData.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdError.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdsManager.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdsManagerDelegate.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdEvent.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdsRenderingSettings.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - NSObject.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAFriendlyObstruction.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMACompanionAd.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMACompanionAdSlot.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMACompanionDelegate.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); - IMAAdPodInfo.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); + UIViewController.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAContentPlayhead.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdsLoader.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMASettings.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdsRequest.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdsLoaderDelegate.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdsLoadedData.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdLoadingErrorData.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdError.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdsManager.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdsManagerDelegate.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdEvent.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdsRenderingSettings.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + NSObject.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAFriendlyObstruction.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMACompanionAd.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMACompanionAdSlot.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMACompanionDelegate.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAAdPodInfo.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); IMAAd.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAUniversalAdID.pigeon_setUpMessageHandlers( - pigeon_instanceManager: instanceManager); + IMAUniversalAdID.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); return instanceManager; } @@ -402,20 +375,15 @@ class PigeonInstanceManager { /// /// This method also expects the host `InstanceManager` to have a strong /// reference to the instance the identifier is associated with. - T? getInstanceWithWeakReference( - int identifier) { - final PigeonInternalProxyApiBaseClass? weakInstance = - _weakInstances[identifier]?.target; + T? getInstanceWithWeakReference(int identifier) { + final PigeonInternalProxyApiBaseClass? weakInstance = _weakInstances[identifier]?.target; if (weakInstance == null) { - final PigeonInternalProxyApiBaseClass? strongInstance = - _strongInstances[identifier]; + final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; if (strongInstance != null) { - final PigeonInternalProxyApiBaseClass copy = - strongInstance.pigeon_copy(); + final PigeonInternalProxyApiBaseClass copy = strongInstance.pigeon_copy(); _identifiers[copy] = identifier; - _weakInstances[identifier] = - WeakReference(copy); + _weakInstances[identifier] = WeakReference(copy); _finalizer.attach(copy, identifier, detach: copy); return copy as T; } @@ -437,8 +405,7 @@ class PigeonInstanceManager { /// /// Throws assertion error if the instance or its identifier has already been /// added. - void addHostCreatedInstance( - PigeonInternalProxyApiBaseClass instance, int identifier) { + void addHostCreatedInstance(PigeonInternalProxyApiBaseClass instance, int identifier) { assert(!containsIdentifier(identifier)); assert(getIdentifier(instance) == null); assert(identifier >= 0); @@ -566,40 +533,38 @@ class _PigeonInternalInstanceManagerApi { } class _PigeonInternalProxyApiBaseCodec extends _PigeonCodec { - const _PigeonInternalProxyApiBaseCodec(this.instanceManager); - final PigeonInstanceManager instanceManager; - @override - void writeValue(WriteBuffer buffer, Object? value) { - if (value is PigeonInternalProxyApiBaseClass) { - buffer.putUint8(128); - writeValue(buffer, instanceManager.getIdentifier(value)); - } else { - super.writeValue(buffer, value); - } - } - - @override - Object? readValueOfType(int type, ReadBuffer buffer) { - switch (type) { - case 128: - return instanceManager - .getInstanceWithWeakReference(readValue(buffer)! as int); - default: - return super.readValueOfType(type, buffer); - } - } + const _PigeonInternalProxyApiBaseCodec(this.instanceManager); + final PigeonInstanceManager instanceManager; + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is PigeonInternalProxyApiBaseClass) { + buffer.putUint8(128); + writeValue(buffer, instanceManager.getIdentifier(value)); + } else { + super.writeValue(buffer, value); + } + } + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 128: + return instanceManager + .getInstanceWithWeakReference(readValue(buffer)! as int); + default: + return super.readValueOfType(type, buffer); + } + } } + /// Possible error types while loading or playing ads. /// /// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Enums/IMAErrorType.html. enum AdErrorType { /// An error occurred while loading the ads. loadingFailed, - /// An error occurred while playing the ads. adPlayingFailed, - /// An unexpected error occurred while loading or playing the ads. /// /// This may mean that the SDK wasn’t loaded properly or the wrapper doesn't @@ -613,81 +578,58 @@ enum AdErrorType { enum AdErrorCode { /// The ad slot is not visible on the page. adslotNotVisible, - /// Generic invalid usage of the API. apiError, - /// A companion ad failed to load or render. companionAdLoadingFailed, - /// Content playhead was not passed in, but list of ads has been returned from /// the server. contentPlayheadMissing, - /// There was an error loading the ad. failedLoadingAd, - /// There was a problem requesting ads from the server. failedToRequestAds, - /// Invalid arguments were provided to SDK methods. invalidArguments, - /// The version of the runtime is too old. osRuntimeTooOld, - /// Ads list response was malformed. playlistMalformedResponse, - /// Listener for at least one of the required vast events was not added. requiredListenersNotAdded, - /// There was an error initializing the stream. streamInitializationFailed, - /// An unexpected error occurred and the cause is not known. unknownError, - /// No assets were found in the VAST ad response. vastAssetNotFound, - /// A VAST response containing a single `` tag with no child tags. vastEmptyResponse, - /// At least one VAST wrapper loaded and a subsequent wrapper or inline ad /// load has resulted in a 404 response code. vastInvalidUrl, - /// Assets were found in the VAST ad response for a linear ad, but none of /// them matched the video player's capabilities. vastLinearAssetMismatch, - /// The VAST URI provided, or a VAST URI provided in a subsequent Wrapper /// element, was either unavailable or reached a timeout, as defined by the /// video player. vastLoadTimeout, - /// The ad response was not recognized as a valid VAST ad. vastMalformedResponse, - /// Failed to load media assets from a VAST response. vastMediaLoadTimeout, - /// The maximum number of VAST wrapper redirects has been reached. vastTooManyRedirects, - /// Trafficking error. /// /// Video player received an ad type that it was not expecting and/or cannot /// display. vastTraffickingError, - /// Another VideoAdsManager is still using the video. videoElementUsed, - /// A video element was not specified where it was required. videoElementRequired, - /// There was an error playing the video ad. videoPlayError, } @@ -698,77 +640,53 @@ enum AdErrorCode { enum AdEventType { /// Fired the first time each ad break ends. adBreakEnded, - /// Fired when an ad break will not play back any ads. adBreakFetchError, - /// Fired when an ad break is ready. adBreakReady, - /// Fired first time each ad break begins playback. adBreakStarted, - /// Fired every time the stream switches from advertising or slate to content. adPeriodEnded, - /// Fired every time the stream switches from content to advertising or slate. adPeriodStarted, - /// All valid ads managed by the ads manager have completed or the ad response /// did not return any valid ads. allAdsCompleted, - /// Fired when an ad is clicked. clicked, - /// Single ad has finished. completed, - /// Cuepoints changed for VOD stream (only used for dynamic ad insertion). cuepointsChanged, - /// First quartile of a linear ad was reached. firstQuartile, - /// The user has closed the icon fallback image dialog. iconFallbackImageClosed, - /// The user has tapped an ad icon. iconTapped, - /// An ad was loaded. loaded, - /// A log event for the ads being played. log, - /// Midpoint of a linear ad was reached. midpoint, - /// Ad paused. pause, - /// Ad resumed. resume, - /// Fired when an ad was skipped. skipped, - /// Fired when an ad starts playing. started, - /// Stream request has loaded (only used for dynamic ad insertion). streamLoaded, - /// Stream has started playing (only used for dynamic ad insertion). streamStarted, - /// Ad tapped. tapped, - /// Third quartile of a linear ad was reached.. thirdQuartile, - /// The event type is not recognized by this wrapper. unknown, } @@ -780,15 +698,12 @@ enum KeyValueObservingOptions { /// Indicates that the change dictionary should provide the new attribute /// value, if applicable. newValue, - /// Indicates that the change dictionary should contain the old attribute /// value, if applicable. oldValue, - /// If specified, a notification should be sent to the observer immediately, /// before the observer registration method even returns. initialValue, - /// Whether separate notifications should be sent to the observer before and /// after each change, instead of a single notification after the change. priorNotification, @@ -800,15 +715,12 @@ enum KeyValueObservingOptions { enum KeyValueChange { /// Indicates that the value of the observed key path was set to a new value. setting, - /// Indicates that an object has been inserted into the to-many relationship /// that is being observed. insertion, - /// Indicates that an object has been removed from the to-many relationship /// that is being observed. removal, - /// Indicates that an object has been replaced in the to-many relationship /// that is being observed. replacement, @@ -823,25 +735,20 @@ enum KeyValueChangeKey { /// this key is an NSIndexSet object that contains the indexes of the /// inserted, removed, or replaced objects. indexes, - /// An NSNumber object that contains a value corresponding to one of the /// NSKeyValueChange enums, indicating what sort of change has occurred. kind, - /// If the value of the kindKey entry is NSKeyValueChange.setting, and new was /// specified when the observer was registered, the value of this key is the /// new value for the attribute. newValue, - /// If the prior option was specified when the observer was registered this /// notification is sent prior to a change. notificationIsPrior, - /// If the value of the kindKey entry is NSKeyValueChange.setting, and old was /// specified when the observer was registered, the value of this key is the /// value before the attribute was changed. oldValue, - /// The key is not recognized by this wrapper. unknown, } @@ -854,7 +761,6 @@ enum FriendlyObstructionPurpose { closeAd, notVisible, other, - /// The purpose type is not recognized by this wrapper. unknown, } @@ -865,14 +771,13 @@ enum FriendlyObstructionPurpose { enum UIElementType { /// Ad attribution UI element. adAttribution, - /// Ad countdown element. countdown, - /// The element is not recognized by this wrapper. unknown, } + class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -880,28 +785,28 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is AdErrorType) { + } else if (value is AdErrorType) { buffer.putUint8(129); writeValue(buffer, value.index); - } else if (value is AdErrorCode) { + } else if (value is AdErrorCode) { buffer.putUint8(130); writeValue(buffer, value.index); - } else if (value is AdEventType) { + } else if (value is AdEventType) { buffer.putUint8(131); writeValue(buffer, value.index); - } else if (value is KeyValueObservingOptions) { + } else if (value is KeyValueObservingOptions) { buffer.putUint8(132); writeValue(buffer, value.index); - } else if (value is KeyValueChange) { + } else if (value is KeyValueChange) { buffer.putUint8(133); writeValue(buffer, value.index); - } else if (value is KeyValueChangeKey) { + } else if (value is KeyValueChangeKey) { buffer.putUint8(134); writeValue(buffer, value.index); - } else if (value is FriendlyObstructionPurpose) { + } else if (value is FriendlyObstructionPurpose) { buffer.putUint8(135); writeValue(buffer, value.index); - } else if (value is UIElementType) { + } else if (value is UIElementType) { buffer.putUint8(136); writeValue(buffer, value.index); } else { @@ -912,28 +817,28 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: final int? value = readValue(buffer) as int?; return value == null ? null : AdErrorType.values[value]; - case 130: + case 130: final int? value = readValue(buffer) as int?; return value == null ? null : AdErrorCode.values[value]; - case 131: + case 131: final int? value = readValue(buffer) as int?; return value == null ? null : AdEventType.values[value]; - case 132: + case 132: final int? value = readValue(buffer) as int?; return value == null ? null : KeyValueObservingOptions.values[value]; - case 133: + case 133: final int? value = readValue(buffer) as int?; return value == null ? null : KeyValueChange.values[value]; - case 134: + case 134: final int? value = readValue(buffer) as int?; return value == null ? null : KeyValueChangeKey.values[value]; - case 135: + case 135: final int? value = readValue(buffer) as int?; return value == null ? null : FriendlyObstructionPurpose.values[value]; - case 136: + case 136: final int? value = readValue(buffer) as int?; return value == null ? null : UIElementType.values[value]; default: @@ -941,7 +846,6 @@ class _PigeonCodec extends StandardMessageCodec { } } } - /// The `IMAAdDisplayContainer` is responsible for managing the ad container /// view and companion ad slots used for ad playback. /// @@ -6417,3 +6321,4 @@ class IMAUniversalAdID extends PigeonInternalProxyApiBaseClass { ); } } + From 406e507c9ea6506ace8a25084cfba68cc42a4d35 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 11 Aug 2025 18:41:06 -0400 Subject: [PATCH 03/30] tests --- .../ios/RunnerTests/AdProxyAPITests.swift | 405 ++ .../UniversalAdIDProxyAPITests.swift | 49 + .../AdProxyAPIDelegate.swift | 23 +- .../InteractiveMediaAdsLibrary.g.swift | 5212 +++++------------ .../ProxyApiDelegate.swift | 15 +- .../UniversalAdIDProxyAPIDelegate.swift | 11 +- .../lib/src/ios/interactive_media_ads.g.dart | 255 +- 7 files changed, 2143 insertions(+), 3827 deletions(-) create mode 100644 packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift create mode 100644 packages/interactive_media_ads/example/ios/RunnerTests/UniversalAdIDProxyAPITests.swift diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift new file mode 100644 index 00000000000..8fcd2b0c3be --- /dev/null +++ b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift @@ -0,0 +1,405 @@ +// 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. + +import Flutter +import GoogleInteractiveMediaAds +import XCTest + +@testable import interactive_media_ads + +class AdProxyAPITests: XCTestCase { + func testAdId() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.adId(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adId) + } + + func testAdTitle() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.adTitle(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adTitle) + } + + func testAdDescription() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.adDescription(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adDescription) + } + + func testAdSystem() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.adSystem(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adSystem) + } + + // func testCompanionAds() { + // let registrar = TestProxyApiRegistrar() + // let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + // + // let instance = TestAd.customInit() + // let value = try? api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) + // + // XCTAssertEqual(value, instance.companionAds) + // } + + func testContentType() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.contentType(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.contentType) + } + + func testDuration() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.duration(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.duration) + } + + func testUiElements() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.uiElements(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, [UIElementType.adAttribution]) + } + + func testWidth() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(try XCTUnwrap(value), Int64(instance.width)) + } + + func testHeight() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(try XCTUnwrap(value), Int64(instance.height)) + } + + func testVastMediaWidth() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.vastMediaWidth(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(try XCTUnwrap(value), Int64(instance.vastMediaWidth)) + } + + func testVastMediaHeight() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.vastMediaHeight(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(try XCTUnwrap(value), Int64(instance.vastMediaHeight)) + } + + func testVastMediaBitrate() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.vastMediaBitrate(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(try XCTUnwrap(value), Int64(instance.vastMediaBitrate)) + } + + func testIsLinear() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.isLinear(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.isLinear) + } + + func testIsSkippable() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.isSkippable(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.isSkippable) + } + + func testSkipTimeOffset() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.skipTimeOffset(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.skipTimeOffset) + } + + func testAdPodInfo() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.adPodInfo(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adPodInfo) + } + + func testTraffickingParameters() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.traffickingParameters( + pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.traffickingParameters) + } + + func testCreativeID() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.creativeID(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.creativeID) + } + + func testCreativeAdID() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.creativeAdID(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.creativeAdID) + } + + func testUniversalAdIDs() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.universalAdIDs) + } + + func testAdvertiserName() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.advertiserName(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.advertiserName) + } + + func testSurveyURL() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.surveyURL(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.surveyURL) + } + + func testDealID() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.dealID(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.dealID) + } + + func testWrapperAdIDs() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.wrapperAdIDs(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.wrapperAdIDs) + } + + func testWrapperCreativeIDs() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.wrapperCreativeIDs(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.wrapperCreativeIDs) + } + + func testWrapperSystems() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.wrapperSystems(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.wrapperSystems) + } +} + +class TestAd: IMAAd { + // Workaround to subclass an Objective-C class that has an `init` constructor with NS_UNAVAILABLE + static func customInit() -> IMAAd { + let instance = + TestAd.perform(NSSelectorFromString("new")).takeRetainedValue() as! TestAd + return instance + } + + let _universalAdIDs = [TestUniversalAdID.customInit()] + + let _adPodInfo = TestAdPodInfo.customInit() + + let _companionAds = [TestCompanionAd.customInit()] + + override var adId: String { + return "string1" + } + + override var adTitle: String { + return "string2" + } + + override var adDescription: String { + return "string3" + } + + override var adSystem: String { + return "string4" + } + + override var companionAds: [IMACompanionAd] { + return _companionAds + } + + override var contentType: String { + return "string5" + } + + override var duration: TimeInterval { + return 9.0 + } + + override var uiElements: [NSNumber] { + return [NSNumber(value: IMAUiElementType.elements_AD_ATTRIBUTION.rawValue)] + } + + override var width: Int { + return 0 + } + + override var height: Int { + return 1 + } + + override var vastMediaWidth: Int { + return 2 + } + + override var vastMediaHeight: Int { + return 3 + } + + override var vastMediaBitrate: Int { + return 4 + } + + override var isLinear: Bool { + return true + } + + override var isSkippable: Bool { + return false + } + + override var skipTimeOffset: TimeInterval { + return 3.0 + } + + override var adPodInfo: IMAAdPodInfo { + return _adPodInfo + } + + override var traffickingParameters: String { + return "string123" + } + + override var creativeID: String { + return "string6" + } + + override var creativeAdID: String { + return "string7" + } + + override var universalAdIDs: [IMAUniversalAdID] { + return _universalAdIDs + } + + override var advertiserName: String { + return "string8" + } + + override var surveyURL: String? { + return "string10" + } + + override var dealID: String { + return "string9" + } + + override var wrapperAdIDs: [String] { + return ["string1"] + } + + override var wrapperCreativeIDs: [String] { + return ["string2"] + } + + override var wrapperSystems: [String] { + return ["string3"] + } +} diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/UniversalAdIDProxyAPITests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/UniversalAdIDProxyAPITests.swift new file mode 100644 index 00000000000..785fa7d51e6 --- /dev/null +++ b/packages/interactive_media_ads/example/ios/RunnerTests/UniversalAdIDProxyAPITests.swift @@ -0,0 +1,49 @@ +// 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. + +import Flutter +import GoogleInteractiveMediaAds +import XCTest + +@testable import interactive_media_ads + +class UniversalAdIDProxyAPITests: XCTestCase { + func testAdIDValue() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAUniversalAdID(registrar) + + let instance = TestUniversalAdID.customInit() + let value = try? api.pigeonDelegate.adIDValue(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adIDValue) + } + + func testAdIDRegistry() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAUniversalAdID(registrar) + + let instance = TestUniversalAdID.customInit() + let value = try? api.pigeonDelegate.adIDRegistry(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adIDRegistry) + } +} + +class TestUniversalAdID: IMAUniversalAdID { + // Workaround to subclass an Objective-C class that has an `init` constructor with NS_UNAVAILABLE + static func customInit() -> IMAUniversalAdID { + let instance = + TestUniversalAdID.perform(NSSelectorFromString("new")).takeRetainedValue() + as! TestUniversalAdID + return instance + } + + override var adIDValue: String { + return "string1" + } + + override var adIDRegistry: String { + return "string2" + } +} diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift index 0ec18b354b4..02f17c554af 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift @@ -5,12 +5,11 @@ import Foundation import GoogleInteractiveMediaAds - /// ProxyApi implementation for `IMAAd`. /// /// 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 AdProxyAPIDelegate : PigeonApiDelegateIMAAd { +class AdProxyAPIDelegate: PigeonApiDelegateIMAAd { func adId(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { return pigeonInstance.adId } @@ -41,13 +40,13 @@ class AdProxyAPIDelegate : PigeonApiDelegateIMAAd { func uiElements(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [UIElementType] { return pigeonInstance.uiElements.map { - switch($0.intValue) { + switch $0.intValue { case IMAUiElementType.elements_AD_ATTRIBUTION.rawValue: - return UIElementType.adAttribution; + return UIElementType.adAttribution case IMAUiElementType.elements_COUNTDOWN.rawValue: - return UIElementType.countdown; + return UIElementType.countdown default: - return UIElementType.unknown; + return UIElementType.unknown } } } @@ -84,9 +83,9 @@ class AdProxyAPIDelegate : PigeonApiDelegateIMAAd { return pigeonInstance.skipTimeOffset } - func adPodInfo(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> IMAAdPodInfo { - return pigeonInstance.adPodInfo - } + // func adPodInfo(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> IMAAdPodInfo { + // return pigeonInstance.adPodInfo + // } func traffickingParameters(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { return pigeonInstance.traffickingParameters @@ -100,9 +99,9 @@ class AdProxyAPIDelegate : PigeonApiDelegateIMAAd { return pigeonInstance.creativeAdID } - func universalAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMAUniversalAdID] { - return pigeonInstance.universalAdIDs - } + // func universalAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMAUniversalAdID] { + // return pigeonInstance.universalAdIDs + // } func advertiserName(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { return pigeonInstance.advertiserName diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift index 81f15958c36..2458e05bd38 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift @@ -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 (v26.0.0), do not edit directly. +// Autogenerated from Pigeon (v26.0.1), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation @@ -61,7 +61,9 @@ private func wrapError(_ error: Any) -> [Any?] { } private func createConnectionError(withChannelName channelName: String) -> PigeonError { - return PigeonError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "") + return PigeonError( + code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", + details: "") } private func isNullish(_ value: Any?) -> Bool { @@ -79,7 +81,6 @@ protocol InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate: AnyObject { func onDeinit(identifier: Int64) } - // Attaches to an object to receive a callback when the object is deallocated. internal final class InteractiveMediaAdsLibraryPigeonInternalFinalizer { internal static let associatedObjectKey = malloc(1)! @@ -89,20 +90,26 @@ internal final class InteractiveMediaAdsLibraryPigeonInternalFinalizer { // `InstanceManager` is deallocated. internal weak var delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate? - private init(identifier: Int64, delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate) { + private init( + identifier: Int64, delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate + ) { self.identifier = identifier self.delegate = delegate } internal static func attach( - to instance: AnyObject, identifier: Int64, delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate + to instance: AnyObject, identifier: Int64, + delegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate ) { - let finalizer = InteractiveMediaAdsLibraryPigeonInternalFinalizer(identifier: identifier, delegate: delegate) + let finalizer = InteractiveMediaAdsLibraryPigeonInternalFinalizer( + identifier: identifier, delegate: delegate) objc_setAssociatedObject(instance, associatedObjectKey, finalizer, .OBJC_ASSOCIATION_RETAIN) } static func detach(from instance: AnyObject) { - let finalizer = objc_getAssociatedObject(instance, associatedObjectKey) as? InteractiveMediaAdsLibraryPigeonInternalFinalizer + let finalizer = + objc_getAssociatedObject(instance, associatedObjectKey) + as? InteractiveMediaAdsLibraryPigeonInternalFinalizer if let finalizer = finalizer { finalizer.delegate = nil objc_setAssociatedObject(instance, associatedObjectKey, nil, .OBJC_ASSOCIATION_ASSIGN) @@ -114,7 +121,6 @@ internal final class InteractiveMediaAdsLibraryPigeonInternalFinalizer { } } - /// Maintains instances used to communicate with the corresponding objects in Dart. /// /// Objects stored in this container are represented by an object in Dart that is also stored in @@ -218,7 +224,8 @@ final class InteractiveMediaAdsLibraryPigeonInstanceManager { identifiers.setObject(NSNumber(value: identifier), forKey: instance) weakInstances.setObject(instance, forKey: NSNumber(value: identifier)) strongInstances.setObject(instance, forKey: NSNumber(value: identifier)) - InteractiveMediaAdsLibraryPigeonInternalFinalizer.attach(to: instance, identifier: identifier, delegate: finalizerDelegate) + InteractiveMediaAdsLibraryPigeonInternalFinalizer.attach( + to: instance, identifier: identifier, delegate: finalizerDelegate) } /// Retrieves the identifier paired with an instance. @@ -299,7 +306,6 @@ final class InteractiveMediaAdsLibraryPigeonInstanceManager { } } - private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { /// The codec used for serializing messages. var codec: FlutterStandardMessageCodec { InteractiveMediaAdsLibraryPigeonCodec.shared } @@ -312,9 +318,15 @@ private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { } /// Sets up an instance of `InteractiveMediaAdsLibraryPigeonInstanceManagerApi` to handle messages through the `binaryMessenger`. - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, instanceManager: InteractiveMediaAdsLibraryPigeonInstanceManager?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, + instanceManager: InteractiveMediaAdsLibraryPigeonInstanceManager? + ) { let codec = InteractiveMediaAdsLibraryPigeonCodec.shared - let removeStrongReferenceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.removeStrongReference", binaryMessenger: binaryMessenger, codec: codec) + let removeStrongReferenceChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.removeStrongReference", + binaryMessenger: binaryMessenger, codec: codec) if let instanceManager = instanceManager { removeStrongReferenceChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -329,7 +341,9 @@ private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { } else { removeStrongReferenceChannel.setMessageHandler(nil) } - let clearChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.clear", binaryMessenger: binaryMessenger, codec: codec) + let clearChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.clear", + binaryMessenger: binaryMessenger, codec: codec) if let instanceManager = instanceManager { clearChannel.setMessageHandler { _, reply in do { @@ -345,9 +359,13 @@ private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { } /// Sends a message to the Dart `InstanceManager` to remove the strong reference of the instance associated with `identifier`. - func removeStrongReference(identifier identifierArg: Int64, completion: @escaping (Result) -> Void) { - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.removeStrongReference" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + func removeStrongReference( + identifier identifierArg: Int64, completion: @escaping (Result) -> Void + ) { + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.PigeonInternalInstanceManager.removeStrongReference" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([identifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -367,77 +385,107 @@ private class InteractiveMediaAdsLibraryPigeonInstanceManagerApi { protocol InteractiveMediaAdsLibraryPigeonProxyApiDelegate { /// An implementation of [PigeonApiIMAAdDisplayContainer] used to add a new Dart instance of /// `IMAAdDisplayContainer` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdDisplayContainer(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdDisplayContainer + func pigeonApiIMAAdDisplayContainer( + _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + ) -> PigeonApiIMAAdDisplayContainer /// An implementation of [PigeonApiUIView] used to add a new Dart instance of /// `UIView` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiUIView(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiUIView + func pigeonApiUIView(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiUIView /// An implementation of [PigeonApiUIViewController] used to add a new Dart instance of /// `UIViewController` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiUIViewController(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiUIViewController + func pigeonApiUIViewController(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiUIViewController /// An implementation of [PigeonApiIMAContentPlayhead] used to add a new Dart instance of /// `IMAContentPlayhead` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAContentPlayhead(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAContentPlayhead + func pigeonApiIMAContentPlayhead(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAContentPlayhead /// An implementation of [PigeonApiIMAAdsLoader] used to add a new Dart instance of /// `IMAAdsLoader` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsLoader(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsLoader + func pigeonApiIMAAdsLoader(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAdsLoader /// An implementation of [PigeonApiIMASettings] used to add a new Dart instance of /// `IMASettings` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMASettings(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMASettings + func pigeonApiIMASettings(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMASettings /// An implementation of [PigeonApiIMAAdsRequest] used to add a new Dart instance of /// `IMAAdsRequest` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsRequest(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsRequest + func pigeonApiIMAAdsRequest(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAdsRequest /// An implementation of [PigeonApiIMAAdsLoaderDelegate] used to add a new Dart instance of /// `IMAAdsLoaderDelegate` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsLoaderDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsLoaderDelegate + func pigeonApiIMAAdsLoaderDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAdsLoaderDelegate /// An implementation of [PigeonApiIMAAdsLoadedData] used to add a new Dart instance of /// `IMAAdsLoadedData` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsLoadedData(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsLoadedData + func pigeonApiIMAAdsLoadedData(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAdsLoadedData /// An implementation of [PigeonApiIMAAdLoadingErrorData] used to add a new Dart instance of /// `IMAAdLoadingErrorData` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdLoadingErrorData(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdLoadingErrorData + func pigeonApiIMAAdLoadingErrorData( + _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + ) -> PigeonApiIMAAdLoadingErrorData /// An implementation of [PigeonApiIMAAdError] used to add a new Dart instance of /// `IMAAdError` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdError(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdError + func pigeonApiIMAAdError(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAdError /// An implementation of [PigeonApiIMAAdsManager] used to add a new Dart instance of /// `IMAAdsManager` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsManager(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsManager + func pigeonApiIMAAdsManager(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAdsManager /// An implementation of [PigeonApiIMAAdsManagerDelegate] used to add a new Dart instance of /// `IMAAdsManagerDelegate` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsManagerDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsManagerDelegate + func pigeonApiIMAAdsManagerDelegate( + _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + ) -> PigeonApiIMAAdsManagerDelegate /// An implementation of [PigeonApiIMAAdEvent] used to add a new Dart instance of /// `IMAAdEvent` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdEvent(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdEvent + func pigeonApiIMAAdEvent(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAdEvent /// An implementation of [PigeonApiIMAAdsRenderingSettings] used to add a new Dart instance of /// `IMAAdsRenderingSettings` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdsRenderingSettings(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdsRenderingSettings + func pigeonApiIMAAdsRenderingSettings( + _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + ) -> PigeonApiIMAAdsRenderingSettings /// An implementation of [PigeonApiNSObject] used to add a new Dart instance of /// `NSObject` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiNSObject(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiNSObject + func pigeonApiNSObject(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiNSObject /// An implementation of [PigeonApiIMAFriendlyObstruction] used to add a new Dart instance of /// `IMAFriendlyObstruction` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAFriendlyObstruction(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAFriendlyObstruction + func pigeonApiIMAFriendlyObstruction( + _ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + ) -> PigeonApiIMAFriendlyObstruction /// An implementation of [PigeonApiIMACompanionAd] used to add a new Dart instance of /// `IMACompanionAd` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMACompanionAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMACompanionAd + func pigeonApiIMACompanionAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMACompanionAd /// An implementation of [PigeonApiIMACompanionAdSlot] used to add a new Dart instance of /// `IMACompanionAdSlot` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMACompanionAdSlot(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMACompanionAdSlot + func pigeonApiIMACompanionAdSlot(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMACompanionAdSlot /// An implementation of [PigeonApiIMACompanionDelegate] used to add a new Dart instance of /// `IMACompanionDelegate` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMACompanionDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMACompanionDelegate + func pigeonApiIMACompanionDelegate(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMACompanionDelegate /// An implementation of [PigeonApiIMAAdPodInfo] used to add a new Dart instance of /// `IMAAdPodInfo` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAdPodInfo(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAdPodInfo + func pigeonApiIMAAdPodInfo(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAdPodInfo /// An implementation of [PigeonApiIMAAd] used to add a new Dart instance of /// `IMAAd` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAd + func pigeonApiIMAAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAd /// An implementation of [PigeonApiIMAUniversalAdID] used to add a new Dart instance of /// `IMAUniversalAdID` to the Dart `InstanceManager` and make calls to Dart. - func pigeonApiIMAUniversalAdID(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAUniversalAdID + func pigeonApiIMAUniversalAdID(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAUniversalAdID } extension InteractiveMediaAdsLibraryPigeonProxyApiDelegate { - func pigeonApiNSObject(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiNSObject { + func pigeonApiNSObject(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiNSObject + { return PigeonApiNSObject(pigeonRegistrar: registrar, delegate: PigeonApiDelegateNSObject()) } } @@ -452,12 +500,15 @@ open class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar { var codec: FlutterStandardMessageCodec { if _codec == nil { _codec = FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: self)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: self)) } return _codec! } - private class InstanceManagerApiFinalizerDelegate: InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate { + private class InstanceManagerApiFinalizerDelegate: + InteractiveMediaAdsLibraryPigeonInternalFinalizerDelegate + { let api: InteractiveMediaAdsLibraryPigeonInstanceManagerApi init(_ api: InteractiveMediaAdsLibraryPigeonInstanceManagerApi) { @@ -471,7 +522,10 @@ open class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar { } } - init(binaryMessenger: FlutterBinaryMessenger, apiDelegate: InteractiveMediaAdsLibraryPigeonProxyApiDelegate) { + init( + binaryMessenger: FlutterBinaryMessenger, + apiDelegate: InteractiveMediaAdsLibraryPigeonProxyApiDelegate + ) { self.binaryMessenger = binaryMessenger self.apiDelegate = apiDelegate self.instanceManager = InteractiveMediaAdsLibraryPigeonInstanceManager( @@ -480,24 +534,40 @@ open class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar { } func setUp() { - InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers(binaryMessenger: binaryMessenger, instanceManager: instanceManager) - PigeonApiIMAAdDisplayContainer.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdDisplayContainer(self)) - PigeonApiUIView.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiUIView(self)) - PigeonApiUIViewController.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiUIViewController(self)) - PigeonApiIMAContentPlayhead.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAContentPlayhead(self)) - PigeonApiIMAAdsLoader.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsLoader(self)) - PigeonApiIMASettings.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMASettings(self)) - PigeonApiIMAAdsRequest.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsRequest(self)) - PigeonApiIMAAdsLoaderDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsLoaderDelegate(self)) - PigeonApiIMAAdsManager.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsManager(self)) - PigeonApiIMAAdsManagerDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsManagerDelegate(self)) - PigeonApiIMAAdsRenderingSettings.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsRenderingSettings(self)) - PigeonApiIMAFriendlyObstruction.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAFriendlyObstruction(self)) - PigeonApiIMACompanionAdSlot.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMACompanionAdSlot(self)) - PigeonApiIMACompanionDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMACompanionDelegate(self)) + InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers( + binaryMessenger: binaryMessenger, instanceManager: instanceManager) + PigeonApiIMAAdDisplayContainer.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdDisplayContainer(self)) + PigeonApiUIView.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiUIView(self)) + PigeonApiUIViewController.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiUIViewController(self)) + PigeonApiIMAContentPlayhead.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAContentPlayhead(self)) + PigeonApiIMAAdsLoader.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsLoader(self)) + PigeonApiIMASettings.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMASettings(self)) + PigeonApiIMAAdsRequest.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsRequest(self)) + PigeonApiIMAAdsLoaderDelegate.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsLoaderDelegate(self)) + PigeonApiIMAAdsManager.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsManager(self)) + PigeonApiIMAAdsManagerDelegate.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsManagerDelegate(self)) + PigeonApiIMAAdsRenderingSettings.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAAdsRenderingSettings(self)) + PigeonApiIMAFriendlyObstruction.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMAFriendlyObstruction(self)) + PigeonApiIMACompanionAdSlot.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMACompanionAdSlot(self)) + PigeonApiIMACompanionDelegate.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: apiDelegate.pigeonApiIMACompanionDelegate(self)) } func tearDown() { - InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers(binaryMessenger: binaryMessenger, instanceManager: nil) + InteractiveMediaAdsLibraryPigeonInstanceManagerApi.setUpMessageHandlers( + binaryMessenger: binaryMessenger, instanceManager: nil) PigeonApiIMAAdDisplayContainer.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiUIView.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiUIViewController.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) @@ -508,16 +578,21 @@ open class InteractiveMediaAdsLibraryPigeonProxyApiRegistrar { PigeonApiIMAAdsLoaderDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMAAdsManager.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMAAdsManagerDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) - PigeonApiIMAAdsRenderingSettings.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) + PigeonApiIMAAdsRenderingSettings.setUpMessageHandlers( + binaryMessenger: binaryMessenger, api: nil) PigeonApiIMAFriendlyObstruction.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMACompanionAdSlot.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) PigeonApiIMACompanionDelegate.setUpMessageHandlers(binaryMessenger: binaryMessenger, api: nil) } } -private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: FlutterStandardReaderWriter { +private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: + FlutterStandardReaderWriter +{ unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReader: InteractiveMediaAdsLibraryPigeonCodecReader { + private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReader: + InteractiveMediaAdsLibraryPigeonCodecReader + { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar init(data: Data, pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) { @@ -541,7 +616,9 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: } } - private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter: InteractiveMediaAdsLibraryPigeonCodecWriter { + private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter: + InteractiveMediaAdsLibraryPigeonCodecWriter + { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar init(data: NSMutableData, pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) { @@ -550,273 +627,288 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: } override func writeValue(_ value: Any) { - if value is [Any] || value is Bool || value is Data || value is [AnyHashable: Any] || value is Double || value is FlutterStandardTypedData || value is Int64 || value is String || value is AdErrorType || value is AdErrorCode || value is AdEventType || value is KeyValueObservingOptions || value is KeyValueChange || value is KeyValueChangeKey || value is FriendlyObstructionPurpose || value is UIElementType { + if value is [Any] || value is Bool || value is Data || value is [AnyHashable: Any] + || value is Double || value is FlutterStandardTypedData || value is Int64 || value is String + || value is AdErrorType || value is AdErrorCode || value is AdEventType + || value is KeyValueObservingOptions || value is KeyValueChange + || value is KeyValueChangeKey || value is FriendlyObstructionPurpose + || value is UIElementType + { super.writeValue(value) return } - if let instance = value as? IMAAdDisplayContainer { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdDisplayContainer(pigeonRegistrar).pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdDisplayContainer(pigeonRegistrar) + .pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? UIView { pigeonRegistrar.apiDelegate.pigeonApiUIView(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? UIViewController { pigeonRegistrar.apiDelegate.pigeonApiUIViewController(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAContentPlayhead { pigeonRegistrar.apiDelegate.pigeonApiIMAContentPlayhead(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdsLoader { pigeonRegistrar.apiDelegate.pigeonApiIMAAdsLoader(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMASettings { pigeonRegistrar.apiDelegate.pigeonApiIMASettings(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdsRequest { pigeonRegistrar.apiDelegate.pigeonApiIMAAdsRequest(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdsLoaderDelegate { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdsLoaderDelegate(pigeonRegistrar).pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdsLoaderDelegate(pigeonRegistrar) + .pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdsLoadedData { pigeonRegistrar.apiDelegate.pigeonApiIMAAdsLoadedData(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdLoadingErrorData { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdLoadingErrorData(pigeonRegistrar).pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdLoadingErrorData(pigeonRegistrar) + .pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdError { pigeonRegistrar.apiDelegate.pigeonApiIMAAdError(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdsManager { pigeonRegistrar.apiDelegate.pigeonApiIMAAdsManager(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdsManagerDelegate { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdsManagerDelegate(pigeonRegistrar).pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdsManagerDelegate(pigeonRegistrar) + .pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdEvent { pigeonRegistrar.apiDelegate.pigeonApiIMAAdEvent(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdsRenderingSettings { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(pigeonRegistrar).pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(pigeonRegistrar) + .pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAFriendlyObstruction { - pigeonRegistrar.apiDelegate.pigeonApiIMAFriendlyObstruction(pigeonRegistrar).pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMAFriendlyObstruction(pigeonRegistrar) + .pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMACompanionAd { pigeonRegistrar.apiDelegate.pigeonApiIMACompanionAd(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMACompanionAdSlot { pigeonRegistrar.apiDelegate.pigeonApiIMACompanionAdSlot(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMACompanionDelegate { - pigeonRegistrar.apiDelegate.pigeonApiIMACompanionDelegate(pigeonRegistrar).pigeonNewInstance( - pigeonInstance: instance - ) { _ in } + pigeonRegistrar.apiDelegate.pigeonApiIMACompanionDelegate(pigeonRegistrar) + .pigeonNewInstance( + pigeonInstance: instance + ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? NSObject { pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAdPodInfo { pigeonRegistrar.apiDelegate.pigeonApiIMAAdPodInfo(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAAd { pigeonRegistrar.apiDelegate.pigeonApiIMAAd(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - if let instance = value as? IMAUniversalAdID { pigeonRegistrar.apiDelegate.pigeonApiIMAUniversalAdID(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) super.writeValue( - pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance as AnyObject)!) + pigeonRegistrar.instanceManager.identifierWithStrongReference( + forInstance: instance as AnyObject)!) return } - - if let instance = value as AnyObject?, pigeonRegistrar.instanceManager.containsInstance(instance) + if let instance = value as AnyObject?, + pigeonRegistrar.instanceManager.containsInstance(instance) { super.writeByte(128) super.writeValue( pigeonRegistrar.instanceManager.identifierWithStrongReference(forInstance: instance)!) } else { print("Unsupported value: \(value) of \(type(of: value))") - assert(false, "Unsupported value for InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter") + assert( + false, "Unsupported value for InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter" + ) } } @@ -827,11 +919,13 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: } override func reader(with data: Data) -> FlutterStandardReader { - return InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReader(data: data, pigeonRegistrar: pigeonRegistrar) + return InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReader( + data: data, pigeonRegistrar: pigeonRegistrar) } override func writer(with data: NSMutableData) -> FlutterStandardWriter { - return InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter(data: data, pigeonRegistrar: pigeonRegistrar) + return InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecWriter( + data: data, pigeonRegistrar: pigeonRegistrar) } } @@ -1155,35 +1249,49 @@ private class InteractiveMediaAdsLibraryPigeonCodecReaderWriter: FlutterStandard } class InteractiveMediaAdsLibraryPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { - static let shared = InteractiveMediaAdsLibraryPigeonCodec(readerWriter: InteractiveMediaAdsLibraryPigeonCodecReaderWriter()) + static let shared = InteractiveMediaAdsLibraryPigeonCodec( + readerWriter: InteractiveMediaAdsLibraryPigeonCodecReaderWriter()) } protocol PigeonApiDelegateIMAAdDisplayContainer { /// Initializes IMAAdDisplayContainer for rendering the ad and displaying the /// sad UI. - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdDisplayContainer, adContainer: UIView, companionSlots: [IMACompanionAdSlot]?, adContainerViewController: UIViewController?) throws -> IMAAdDisplayContainer + func pigeonDefaultConstructor( + pigeonApi: PigeonApiIMAAdDisplayContainer, adContainer: UIView, + companionSlots: [IMACompanionAdSlot]?, adContainerViewController: UIViewController? + ) throws -> IMAAdDisplayContainer /// View containing the video display and ad related UI. /// /// This view must be present in the view hierarchy in order to make ad or /// stream requests. - func adContainer(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> UIView + func adContainer(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) + throws -> UIView /// List of companion ad slots. - func companionSlots(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> [IMACompanionAdSlot]? + func companionSlots( + pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer + ) throws -> [IMACompanionAdSlot]? /// View controller containing the ad container. - func setAdContainerViewController(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, controller: UIViewController?) throws + func setAdContainerViewController( + pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, + controller: UIViewController?) throws /// View controller containing the ad container. - func getAdContainerViewController(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> UIViewController? + func getAdContainerViewController( + pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer + ) throws -> UIViewController? /// Registers a view that overlays or obstructs this container as “friendly” /// for viewability measurement purposes. - func registerFriendlyObstruction(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, friendlyObstruction: IMAFriendlyObstruction) throws + func registerFriendlyObstruction( + pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, + friendlyObstruction: IMAFriendlyObstruction) throws /// Unregisters all previously registered friendly obstructions. - func unregisterAllFriendlyObstructions(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws + func unregisterAllFriendlyObstructions( + pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws } protocol PigeonApiProtocolIMAAdDisplayContainer { } -final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContainer { +final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContainer { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdDisplayContainer ///An implementation of [NSObject] used to access callback methods @@ -1191,17 +1299,26 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdDisplayContainer) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdDisplayContainer + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdDisplayContainer?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdDisplayContainer? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -1211,8 +1328,10 @@ final class PigeonApiIMAAdDisplayContainer: PigeonApiProtocolIMAAdDisplayContain let adContainerViewControllerArg: UIViewController? = nilOrValue(args[3]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, adContainer: adContainerArg, companionSlots: companionSlotsArg, adContainerViewController: adContainerViewControllerArg), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor( + pigeonApi: api, adContainer: adContainerArg, companionSlots: companionSlotsArg, + adContainerViewController: adContainerViewControllerArg), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1221,14 +1340,18 @@ withIdentifier: pigeonIdentifierArg) } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let setAdContainerViewControllerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.setAdContainerViewController", binaryMessenger: binaryMessenger, codec: codec) + let setAdContainerViewControllerChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.setAdContainerViewController", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setAdContainerViewControllerChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdDisplayContainer let controllerArg: UIViewController? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setAdContainerViewController(pigeonApi: api, pigeonInstance: pigeonInstanceArg, controller: controllerArg) + try api.pigeonDelegate.setAdContainerViewController( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, controller: controllerArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1237,13 +1360,17 @@ withIdentifier: pigeonIdentifierArg) } else { setAdContainerViewControllerChannel.setMessageHandler(nil) } - let getAdContainerViewControllerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.getAdContainerViewController", binaryMessenger: binaryMessenger, codec: codec) + let getAdContainerViewControllerChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.getAdContainerViewController", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { getAdContainerViewControllerChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdDisplayContainer do { - let result = try api.pigeonDelegate.getAdContainerViewController(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.getAdContainerViewController( + pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -1252,14 +1379,19 @@ withIdentifier: pigeonIdentifierArg) } else { getAdContainerViewControllerChannel.setMessageHandler(nil) } - let registerFriendlyObstructionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.registerFriendlyObstruction", binaryMessenger: binaryMessenger, codec: codec) + let registerFriendlyObstructionChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.registerFriendlyObstruction", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { registerFriendlyObstructionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdDisplayContainer let friendlyObstructionArg = args[1] as! IMAFriendlyObstruction do { - try api.pigeonDelegate.registerFriendlyObstruction(pigeonApi: api, pigeonInstance: pigeonInstanceArg, friendlyObstruction: friendlyObstructionArg) + try api.pigeonDelegate.registerFriendlyObstruction( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, + friendlyObstruction: friendlyObstructionArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1268,13 +1400,17 @@ withIdentifier: pigeonIdentifierArg) } else { registerFriendlyObstructionChannel.setMessageHandler(nil) } - let unregisterAllFriendlyObstructionsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.unregisterAllFriendlyObstructions", binaryMessenger: binaryMessenger, codec: codec) + let unregisterAllFriendlyObstructionsChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.unregisterAllFriendlyObstructions", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { unregisterAllFriendlyObstructionsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdDisplayContainer do { - try api.pigeonDelegate.unregisterAllFriendlyObstructions(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + try api.pigeonDelegate.unregisterAllFriendlyObstructions( + pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1286,24 +1422,32 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMAAdDisplayContainer and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdDisplayContainer, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdDisplayContainer, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) - let adContainerArg = try! pigeonDelegate.adContainer(pigeonApi: self, pigeonInstance: pigeonInstance) - let companionSlotsArg = try! pigeonDelegate.companionSlots(pigeonApi: self, pigeonInstance: pigeonInstance) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) + let adContainerArg = try! pigeonDelegate.adContainer( + pigeonApi: self, pigeonInstance: pigeonInstance) + let companionSlotsArg = try! pigeonDelegate.companionSlots( + pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, adContainerArg, companionSlotsArg] as [Any?]) { response in + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdDisplayContainer.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, adContainerArg, companionSlotsArg] as [Any?]) { + response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -1320,168 +1464,6 @@ withIdentifier: pigeonIdentifierArg) } } } - -/* -// 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. - -import Foundation -import GoogleInteractiveMediaAds -import UIKit - - -/// ProxyApi implementation for `IMAAdDisplayContainer`. -/// -/// 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 AdDisplayContainerProxyAPIDelegate : PigeonApiDelegateIMAAdDisplayContainer { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdDisplayContainer, adContainer: UIView, companionSlots: [IMACompanionAdSlot]?, adContainerViewController: UIViewController?) throws -> IMAAdDisplayContainer { - return IMAAdDisplayContainer(,adContainerViewController: adContainerViewController) - } - - func adContainer(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> UIView { - return pigeonInstance.adContainer - } - - func companionSlots(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> [IMACompanionAdSlot]? { - return pigeonInstance.companionSlots - } - - func setAdContainerViewController(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, controller: UIViewController?) throws { - pigeonInstance.adContainerViewController = controller - } - - func getAdContainerViewController(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws -> UIViewController? { - return pigeonInstance.adContainerViewController - } - - func registerFriendlyObstruction(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer, friendlyObstruction: IMAFriendlyObstruction) throws { - pigeonInstance.registerFriendlyObstruction(friendlyObstruction: friendlyObstruction) - } - - func unregisterAllFriendlyObstructions(pigeonApi: PigeonApiIMAAdDisplayContainer, pigeonInstance: IMAAdDisplayContainer) throws { - pigeonInstance.unregisterAllFriendlyObstructions() - } - -} -*/ - -/* -// 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. - -import GoogleInteractiveMediaAds -import UIKit -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdDisplayContainerTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, adContainer: TestView, companionSlots: [TestCompanionAdSlot], adContainerViewController: TestViewController) - XCTAssertNotNil(instance) - } - - func testAdContainer() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) - - let instance = TestAdDisplayContainer() - let value = try? api.pigeonDelegate.adContainer(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adContainer) - } - - func testCompanionSlots() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) - - let instance = TestAdDisplayContainer() - let value = try? api.pigeonDelegate.companionSlots(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.companionSlots) - } - - func testSetAdContainerViewController() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) - - let instance = TestAdDisplayContainer() - let controller = TestViewController - try? api.pigeonDelegate.setAdContainerViewController(pigeonApi: api, pigeonInstance: instance, controller: controller) - - XCTAssertEqual(instance.setAdContainerViewControllerArgs, [controller]) - } - - func testGetAdContainerViewController() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) - - let instance = TestAdDisplayContainer() - let value = try? api.pigeonDelegate.getAdContainerViewController(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.getAdContainerViewControllerCalled) - XCTAssertEqual(value, instance.getAdContainerViewController()) - } - - func testRegisterFriendlyObstruction() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) - - let instance = TestAdDisplayContainer() - let friendlyObstruction = TestFriendlyObstruction - try? api.pigeonDelegate.registerFriendlyObstruction(pigeonApi: api, pigeonInstance: instance, friendlyObstruction: friendlyObstruction) - - XCTAssertEqual(instance.registerFriendlyObstructionArgs, [friendlyObstruction]) - } - - func testUnregisterAllFriendlyObstructions() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdDisplayContainer(registrar) - - let instance = TestAdDisplayContainer() - try? api.pigeonDelegate.unregisterAllFriendlyObstructions(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.unregisterAllFriendlyObstructionsCalled) - } - -} -class TestAdDisplayContainer: IMAAdDisplayContainer { - private var adContainerTestValue = TestView - private var companionSlotsTestValue = [TestCompanionAdSlot] - var setAdContainerViewControllerArgs: [AnyHashable?]? = nil - var getAdContainerViewControllerCalled = false - var registerFriendlyObstructionArgs: [AnyHashable?]? = nil - var unregisterAllFriendlyObstructionsCalled = false - - override var adContainer: UIView { - return adContainerTestValue - } - override var companionSlots: [IMACompanionAdSlot] { - return companionSlotsTestValue - } - - override func setAdContainerViewController() { - setAdContainerViewControllerArgs = [controller] - } - override func getAdContainerViewController() { - getAdContainerViewControllerCalled = true - } - override func registerFriendlyObstruction() { - registerFriendlyObstructionArgs = [friendlyObstruction] - } - override func unregisterAllFriendlyObstructions() { - unregisterAllFriendlyObstructionsCalled = true - } -} -*/ - protocol PigeonApiDelegateUIView { func pigeonDefaultConstructor(pigeonApi: PigeonApiUIView) throws -> UIView } @@ -1489,7 +1471,7 @@ protocol PigeonApiDelegateUIView { protocol PigeonApiProtocolUIView { } -final class PigeonApiUIView: PigeonApiProtocolUIView { +final class PigeonApiUIView: PigeonApiProtocolUIView { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateUIView ///An implementation of [NSObject] used to access callback methods @@ -1497,7 +1479,10 @@ final class PigeonApiUIView: PigeonApiProtocolUIView { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateUIView) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateUIView + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } @@ -1505,17 +1490,20 @@ final class PigeonApiUIView: PigeonApiProtocolUIView { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.UIView.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.UIView.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1527,21 +1515,25 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of UIView and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: UIView, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: UIView, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec let channelName: String = "dev.flutter.pigeon.interactive_media_ads.UIView.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1559,51 +1551,6 @@ withIdentifier: pigeonIdentifierArg) } } } - -/* -// 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. - -import Foundation -import UIKit - - -/// ProxyApi implementation for `UIView`. -/// -/// 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 ViewProxyAPIDelegate : PigeonApiDelegateUIView { - func pigeonDefaultConstructor(pigeonApi: PigeonApiUIView) throws -> UIView { - return UIView() - } - -} -*/ - -/* -// 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. - -import UIKit -import Flutter -import XCTest - -@testable import interactive_media_ads - -class ViewTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiUIView(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) - XCTAssertNotNil(instance) - } - -} -*/ - protocol PigeonApiDelegateUIViewController { func pigeonDefaultConstructor(pigeonApi: PigeonApiUIViewController) throws -> UIViewController /// Retrieves the view that the controller manages. @@ -1617,10 +1564,12 @@ protocol PigeonApiDelegateUIViewController { protocol PigeonApiProtocolUIViewController { /// Notifies the view controller that its view was added to a view hierarchy. - func viewDidAppear(pigeonInstance pigeonInstanceArg: UIViewController, animated animatedArg: Bool, completion: @escaping (Result) -> Void) + func viewDidAppear( + pigeonInstance pigeonInstanceArg: UIViewController, animated animatedArg: Bool, + completion: @escaping (Result) -> Void) } -final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { +final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateUIViewController ///An implementation of [NSObject] used to access callback methods @@ -1628,25 +1577,33 @@ final class PigeonApiUIViewController: PigeonApiProtocolUIViewController { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateUIViewController) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateUIViewController + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiUIViewController?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiUIViewController? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.UIViewController.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.UIViewController.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1655,14 +1612,18 @@ withIdentifier: pigeonIdentifierArg) } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let viewChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.UIViewController.view", binaryMessenger: binaryMessenger, codec: codec) + let viewChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.UIViewController.view", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { viewChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! UIViewController let pigeonIdentifierArg = args[1] as! Int64 do { - api.pigeonRegistrar.instanceManager.addDartCreatedInstance(try api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: pigeonInstanceArg), withIdentifier: pigeonIdentifierArg) + api.pigeonRegistrar.instanceManager.addDartCreatedInstance( + try api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: pigeonInstanceArg), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1674,21 +1635,26 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of UIViewController and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: UIViewController, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: UIViewController, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.UIViewController.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.UIViewController.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1706,7 +1672,10 @@ withIdentifier: pigeonIdentifierArg) } } /// Notifies the view controller that its view was added to a view hierarchy. - func viewDidAppear(pigeonInstance pigeonInstanceArg: UIViewController, animated animatedArg: Bool, completion: @escaping (Result) -> Void) { + func viewDidAppear( + pigeonInstance pigeonInstanceArg: UIViewController, animated animatedArg: Bool, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -1717,8 +1686,10 @@ withIdentifier: pigeonIdentifierArg) } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.UIViewController.viewDidAppear" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.UIViewController.viewDidAppear" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, animatedArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1736,111 +1707,18 @@ withIdentifier: pigeonIdentifierArg) } } - -/* -// 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. - -import Foundation -import UIKit - -/// Implementation of `UIViewController` that calls to Dart in callback methods. -class ViewControllerImpl: UIViewController { - let api: PigeonApiProtocolUIViewController - - init(api: PigeonApiProtocolUIViewController) { - self.api = api - } - - func fixMe() { - api.viewDidAppear(pigeonInstance: self, animated: animated) { _ in } - } -} - -/// ProxyApi implementation for `UIViewController`. -/// -/// 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 ViewControllerProxyAPIDelegate : PigeonApiDelegateUIViewController { - func pigeonDefaultConstructor(pigeonApi: PigeonApiUIViewController) throws -> UIViewController { - return UIViewControllerImpl(api: pigeonApi) - } - - func view(pigeonApi: PigeonApiUIViewController, pigeonInstance: UIViewController): UIView { - return pigeonInstance.view - } - -} -*/ - -/* -// 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. - -import UIKit -import Flutter -import XCTest - -@testable import interactive_media_ads - -class ViewControllerTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiUIViewController(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) - XCTAssertNotNil(instance) - } - - func testView() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiUIViewController(registrar) - - let instance = TestViewController() - let value = try? api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.view) - } - - func testViewDidAppear() { - let api = TestViewControllerApi() - let instance = ViewControllerImpl(api: api) - let animated = true - instance.viewDidAppear(animated: animated) - - XCTAssertEqual(api.viewDidAppearArgs, [animated]) - } - -} -class TestViewController: UIViewController { - private var viewTestValue = TestView - - override var view: UIView { - return viewTestValue - } - -} -class TestViewControllerApi: PigeonApiProtocolUIViewController { - var viewDidAppearArgs: [AnyHashable?]? = nil - - func viewDidAppear(animated: Bool) throws { - viewDidAppearArgs = [animatedArg] - } -} -*/ - protocol PigeonApiDelegateIMAContentPlayhead { func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAContentPlayhead) throws -> IMAContentPlayhead /// Reflects the current playback time in seconds for the content. - func setCurrentTime(pigeonApi: PigeonApiIMAContentPlayhead, pigeonInstance: IMAContentPlayhead, timeInterval: Double) throws + func setCurrentTime( + pigeonApi: PigeonApiIMAContentPlayhead, pigeonInstance: IMAContentPlayhead, timeInterval: Double + ) throws } protocol PigeonApiProtocolIMAContentPlayhead { } -final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { +final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAContentPlayhead ///An implementation of [NSObject] used to access callback methods @@ -1848,25 +1726,33 @@ final class PigeonApiIMAContentPlayhead: PigeonApiProtocolIMAContentPlayhead { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAContentPlayhead) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAContentPlayhead + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAContentPlayhead?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAContentPlayhead? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1875,14 +1761,17 @@ withIdentifier: pigeonIdentifierArg) } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let setCurrentTimeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.setCurrentTime", binaryMessenger: binaryMessenger, codec: codec) + let setCurrentTimeChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.setCurrentTime", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setCurrentTimeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAContentPlayhead let timeIntervalArg = args[1] as! Double do { - try api.pigeonDelegate.setCurrentTime(pigeonApi: api, pigeonInstance: pigeonInstanceArg, timeInterval: timeIntervalArg) + try api.pigeonDelegate.setCurrentTime( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, timeInterval: timeIntervalArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -1894,21 +1783,26 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMAContentPlayhead and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAContentPlayhead, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAContentPlayhead, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAContentPlayhead.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -1926,90 +1820,26 @@ withIdentifier: pigeonIdentifierArg) } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMAContentPlayhead`. -/// -/// 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 ContentPlayheadProxyAPIDelegate : PigeonApiDelegateIMAContentPlayhead { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAContentPlayhead) throws -> IMAContentPlayhead { - return IMAContentPlayhead() - } - - func setCurrentTime(pigeonApi: PigeonApiIMAContentPlayhead, pigeonInstance: IMAContentPlayhead, timeInterval: Double) throws { - pigeonInstance.currentTime = timeInterval - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class ContentPlayheadTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAContentPlayhead(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) - XCTAssertNotNil(instance) - } - - func testSetCurrentTime() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAContentPlayhead(registrar) - - let instance = TestContentPlayhead() - let timeInterval = 1.0 - try? api.pigeonDelegate.setCurrentTime(pigeonApi: api, pigeonInstance: instance, timeInterval: timeInterval) - - XCTAssertEqual(instance.setCurrentTimeArgs, [timeInterval]) - } - -} -class TestContentPlayhead: IMAContentPlayhead { - var setCurrentTimeArgs: [AnyHashable?]? = nil - - - override func setCurrentTime() { - setCurrentTimeArgs = [timeInterval] - } -} -*/ - protocol PigeonApiDelegateIMAAdsLoader { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoader, settings: IMASettings?) throws -> IMAAdsLoader + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoader, settings: IMASettings?) throws + -> IMAAdsLoader /// Signal to the SDK that the content has completed. func contentComplete(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader) throws /// Request ads from the ad server. - func requestAds(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, request: IMAAdsRequest) throws + func requestAds( + pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, request: IMAAdsRequest) throws /// Delegate that receives `IMAAdsLoaderDelegate` callbacks. /// /// Note that this sets to a `weak` property in Swift. - func setDelegate(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, delegate: IMAAdsLoaderDelegate?) throws + func setDelegate( + pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, delegate: IMAAdsLoaderDelegate?) + throws } protocol PigeonApiProtocolIMAAdsLoader { } -final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { +final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsLoader ///An implementation of [NSObject] used to access callback methods @@ -2017,17 +1847,25 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsLoader) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdsLoader + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsLoader?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsLoader? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -2035,8 +1873,8 @@ final class PigeonApiIMAAdsLoader: PigeonApiProtocolIMAAdsLoader { let settingsArg: IMASettings? = nilOrValue(args[1]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, settings: settingsArg), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, settings: settingsArg), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2045,7 +1883,9 @@ withIdentifier: pigeonIdentifierArg) } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let contentCompleteChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.contentComplete", binaryMessenger: binaryMessenger, codec: codec) + let contentCompleteChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.contentComplete", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { contentCompleteChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -2060,14 +1900,17 @@ withIdentifier: pigeonIdentifierArg) } else { contentCompleteChannel.setMessageHandler(nil) } - let requestAdsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.requestAds", binaryMessenger: binaryMessenger, codec: codec) + let requestAdsChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.requestAds", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { requestAdsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsLoader let requestArg = args[1] as! IMAAdsRequest do { - try api.pigeonDelegate.requestAds(pigeonApi: api, pigeonInstance: pigeonInstanceArg, request: requestArg) + try api.pigeonDelegate.requestAds( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, request: requestArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2076,14 +1919,17 @@ withIdentifier: pigeonIdentifierArg) } else { requestAdsChannel.setMessageHandler(nil) } - let setDelegateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.setDelegate", binaryMessenger: binaryMessenger, codec: codec) + let setDelegateChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.setDelegate", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDelegateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsLoader let delegateArg: IMAAdsLoaderDelegate? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) + try api.pigeonDelegate.setDelegate( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2095,21 +1941,26 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMAAdsLoader and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdsLoader, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdsLoader, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoader.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -2127,111 +1978,6 @@ withIdentifier: pigeonIdentifierArg) } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMAAdsLoader`. -/// -/// 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 AdsLoaderProxyAPIDelegate : PigeonApiDelegateIMAAdsLoader { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoader, settings: IMASettings?) throws -> IMAAdsLoader { - return IMAAdsLoader(,settings: settings) - } - - func contentComplete(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader) throws { - pigeonInstance.contentComplete() - } - - func requestAds(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, request: IMAAdsRequest) throws { - pigeonInstance.requestAds(request: request) - } - - func setDelegate(pigeonApi: PigeonApiIMAAdsLoader, pigeonInstance: IMAAdsLoader, delegate: IMAAdsLoaderDelegate?) throws { - pigeonInstance.delegate = delegate - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdsLoaderTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsLoader(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, settings: TestSettings) - XCTAssertNotNil(instance) - } - - func testContentComplete() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsLoader(registrar) - - let instance = TestAdsLoader() - try? api.pigeonDelegate.contentComplete(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.contentCompleteCalled) - } - - func testRequestAds() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsLoader(registrar) - - let instance = TestAdsLoader() - let request = TestAdsRequest - try? api.pigeonDelegate.requestAds(pigeonApi: api, pigeonInstance: instance, request: request) - - XCTAssertEqual(instance.requestAdsArgs, [request]) - } - - func testSetDelegate() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsLoader(registrar) - - let instance = TestAdsLoader() - let delegate = TestAdsLoaderDelegate - try? api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: instance, delegate: delegate) - - XCTAssertEqual(instance.setDelegateArgs, [delegate]) - } - -} -class TestAdsLoader: IMAAdsLoader { - var contentCompleteCalled = false - var requestAdsArgs: [AnyHashable?]? = nil - var setDelegateArgs: [AnyHashable?]? = nil - - - override func contentComplete() { - contentCompleteCalled = true - } - override func requestAds() { - requestAdsArgs = [request] - } - override func setDelegate() { - setDelegateArgs = [delegate] - } -} -*/ - protocol PigeonApiDelegateIMASettings { func pigeonDefaultConstructor(pigeonApi: PigeonApiIMASettings) throws -> IMASettings /// Publisher Provided Identification (PPID) sent with ads request. @@ -2243,7 +1989,8 @@ protocol PigeonApiDelegateIMASettings { /// /// Setting this property after it has been sent to the IMAAdsLoader will be /// ignored and a warning will be logged. - func setLanguage(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, language: String) throws + func setLanguage(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, language: String) + throws /// Specifies maximum number of redirects after which subsequent redirects /// will be denied, and the ad load aborted. /// @@ -2251,40 +1998,49 @@ protocol PigeonApiDelegateIMASettings { /// error code 302. /// /// The default value is 4. - func setMaxRedirects(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, max: Int64) throws + func setMaxRedirects(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, max: Int64) + throws /// Feature flags and their states. - func setFeatureFlags(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, flags: [String: String]) throws + func setFeatureFlags( + pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, flags: [String: String]) throws /// Enable background audio playback for the SDK. /// /// The default value is false. - func setEnableBackgroundPlayback(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws + func setEnableBackgroundPlayback( + pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws /// Specifies whether to automatically play VMAP and ad rules ad breaks. /// /// The default value is true. - func setAutoPlayAdBreaks(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, autoPlay: Bool) throws + func setAutoPlayAdBreaks( + pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, autoPlay: Bool) throws /// Specifies whether to update the MPNowPlayingInfoCenter content with the /// title “Advertisement”. /// /// If disabled, MPNowPlayingInfoCenter is untouched. /// /// The default value is false. - func setDisableNowPlayingInfo(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, disable: Bool) throws + func setDisableNowPlayingInfo( + pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, disable: Bool) throws /// The partner specified video player that is integrating with the SDK. - func setPlayerType(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, type: String?) throws + func setPlayerType(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, type: String?) + throws /// The partner specified player version that is integrating with the SDK. - func setPlayerVersion(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, version: String?) throws + func setPlayerVersion( + pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, version: String?) throws /// The session ID to identify a single user session. /// /// This should be a UUID. /// /// It is used exclusively for frequency capping across the user session. - func setSessionID(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, sessionID: String?) throws + func setSessionID( + pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, sessionID: String?) throws /// Controls whether Same App Key is enabled. /// /// The value set persists across app sessions. /// /// The key is enabled by default. - func setSameAppKeyEnabled(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws + func setSameAppKeyEnabled( + pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws /// Toggles debug mode which will output detailed log information to the /// console. /// @@ -2292,13 +2048,14 @@ protocol PigeonApiDelegateIMASettings { /// enabled. /// /// The default value is false. - func setEnableDebugMode(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enable: Bool) throws + func setEnableDebugMode( + pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enable: Bool) throws } protocol PigeonApiProtocolIMASettings { } -final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { +final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMASettings ///An implementation of [NSObject] used to access callback methods @@ -2306,25 +2063,33 @@ final class PigeonApiIMASettings: PigeonApiProtocolIMASettings { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMASettings) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMASettings + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMASettings?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMASettings? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2333,14 +2098,17 @@ withIdentifier: pigeonIdentifierArg) } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let setPPIDChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPPID", binaryMessenger: binaryMessenger, codec: codec) + let setPPIDChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPPID", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setPPIDChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let ppidArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setPPID(pigeonApi: api, pigeonInstance: pigeonInstanceArg, ppid: ppidArg) + try api.pigeonDelegate.setPPID( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, ppid: ppidArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2349,14 +2117,17 @@ withIdentifier: pigeonIdentifierArg) } else { setPPIDChannel.setMessageHandler(nil) } - let setLanguageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setLanguage", binaryMessenger: binaryMessenger, codec: codec) + let setLanguageChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setLanguage", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setLanguageChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let languageArg = args[1] as! String do { - try api.pigeonDelegate.setLanguage(pigeonApi: api, pigeonInstance: pigeonInstanceArg, language: languageArg) + try api.pigeonDelegate.setLanguage( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, language: languageArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2365,14 +2136,17 @@ withIdentifier: pigeonIdentifierArg) } else { setLanguageChannel.setMessageHandler(nil) } - let setMaxRedirectsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setMaxRedirects", binaryMessenger: binaryMessenger, codec: codec) + let setMaxRedirectsChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setMaxRedirects", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setMaxRedirectsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let maxArg = args[1] as! Int64 do { - try api.pigeonDelegate.setMaxRedirects(pigeonApi: api, pigeonInstance: pigeonInstanceArg, max: maxArg) + try api.pigeonDelegate.setMaxRedirects( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, max: maxArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2381,14 +2155,17 @@ withIdentifier: pigeonIdentifierArg) } else { setMaxRedirectsChannel.setMessageHandler(nil) } - let setFeatureFlagsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setFeatureFlags", binaryMessenger: binaryMessenger, codec: codec) + let setFeatureFlagsChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setFeatureFlags", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setFeatureFlagsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let flagsArg = args[1] as! [String: String] do { - try api.pigeonDelegate.setFeatureFlags(pigeonApi: api, pigeonInstance: pigeonInstanceArg, flags: flagsArg) + try api.pigeonDelegate.setFeatureFlags( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, flags: flagsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2397,14 +2174,17 @@ withIdentifier: pigeonIdentifierArg) } else { setFeatureFlagsChannel.setMessageHandler(nil) } - let setEnableBackgroundPlaybackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setEnableBackgroundPlayback", binaryMessenger: binaryMessenger, codec: codec) + let setEnableBackgroundPlaybackChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setEnableBackgroundPlayback", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setEnableBackgroundPlaybackChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let enabledArg = args[1] as! Bool do { - try api.pigeonDelegate.setEnableBackgroundPlayback(pigeonApi: api, pigeonInstance: pigeonInstanceArg, enabled: enabledArg) + try api.pigeonDelegate.setEnableBackgroundPlayback( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, enabled: enabledArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2413,14 +2193,17 @@ withIdentifier: pigeonIdentifierArg) } else { setEnableBackgroundPlaybackChannel.setMessageHandler(nil) } - let setAutoPlayAdBreaksChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setAutoPlayAdBreaks", binaryMessenger: binaryMessenger, codec: codec) + let setAutoPlayAdBreaksChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setAutoPlayAdBreaks", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setAutoPlayAdBreaksChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let autoPlayArg = args[1] as! Bool do { - try api.pigeonDelegate.setAutoPlayAdBreaks(pigeonApi: api, pigeonInstance: pigeonInstanceArg, autoPlay: autoPlayArg) + try api.pigeonDelegate.setAutoPlayAdBreaks( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, autoPlay: autoPlayArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2429,14 +2212,17 @@ withIdentifier: pigeonIdentifierArg) } else { setAutoPlayAdBreaksChannel.setMessageHandler(nil) } - let setDisableNowPlayingInfoChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setDisableNowPlayingInfo", binaryMessenger: binaryMessenger, codec: codec) + let setDisableNowPlayingInfoChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setDisableNowPlayingInfo", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDisableNowPlayingInfoChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let disableArg = args[1] as! Bool do { - try api.pigeonDelegate.setDisableNowPlayingInfo(pigeonApi: api, pigeonInstance: pigeonInstanceArg, disable: disableArg) + try api.pigeonDelegate.setDisableNowPlayingInfo( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, disable: disableArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2445,14 +2231,17 @@ withIdentifier: pigeonIdentifierArg) } else { setDisableNowPlayingInfoChannel.setMessageHandler(nil) } - let setPlayerTypeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPlayerType", binaryMessenger: binaryMessenger, codec: codec) + let setPlayerTypeChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPlayerType", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setPlayerTypeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let typeArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setPlayerType(pigeonApi: api, pigeonInstance: pigeonInstanceArg, type: typeArg) + try api.pigeonDelegate.setPlayerType( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, type: typeArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2461,14 +2250,17 @@ withIdentifier: pigeonIdentifierArg) } else { setPlayerTypeChannel.setMessageHandler(nil) } - let setPlayerVersionChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPlayerVersion", binaryMessenger: binaryMessenger, codec: codec) + let setPlayerVersionChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setPlayerVersion", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setPlayerVersionChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let versionArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setPlayerVersion(pigeonApi: api, pigeonInstance: pigeonInstanceArg, version: versionArg) + try api.pigeonDelegate.setPlayerVersion( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, version: versionArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2477,14 +2269,17 @@ withIdentifier: pigeonIdentifierArg) } else { setPlayerVersionChannel.setMessageHandler(nil) } - let setSessionIDChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setSessionID", binaryMessenger: binaryMessenger, codec: codec) + let setSessionIDChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setSessionID", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setSessionIDChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let sessionIDArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setSessionID(pigeonApi: api, pigeonInstance: pigeonInstanceArg, sessionID: sessionIDArg) + try api.pigeonDelegate.setSessionID( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, sessionID: sessionIDArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2493,14 +2288,17 @@ withIdentifier: pigeonIdentifierArg) } else { setSessionIDChannel.setMessageHandler(nil) } - let setSameAppKeyEnabledChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setSameAppKeyEnabled", binaryMessenger: binaryMessenger, codec: codec) + let setSameAppKeyEnabledChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setSameAppKeyEnabled", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setSameAppKeyEnabledChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let enabledArg = args[1] as! Bool do { - try api.pigeonDelegate.setSameAppKeyEnabled(pigeonApi: api, pigeonInstance: pigeonInstanceArg, enabled: enabledArg) + try api.pigeonDelegate.setSameAppKeyEnabled( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, enabled: enabledArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2509,14 +2307,17 @@ withIdentifier: pigeonIdentifierArg) } else { setSameAppKeyEnabledChannel.setMessageHandler(nil) } - let setEnableDebugModeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setEnableDebugMode", binaryMessenger: binaryMessenger, codec: codec) + let setEnableDebugModeChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMASettings.setEnableDebugMode", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setEnableDebugModeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMASettings let enableArg = args[1] as! Bool do { - try api.pigeonDelegate.setEnableDebugMode(pigeonApi: api, pigeonInstance: pigeonInstanceArg, enable: enableArg) + try api.pigeonDelegate.setEnableDebugMode( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, enable: enableArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2528,21 +2329,26 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMASettings and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMASettings, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMASettings, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMASettings.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMASettings.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -2560,283 +2366,6 @@ withIdentifier: pigeonIdentifierArg) } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMASettings`. -/// -/// 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 SettingsProxyAPIDelegate : PigeonApiDelegateIMASettings { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMASettings) throws -> IMASettings { - return IMASettings() - } - - func setPPID(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, ppid: String?) throws { - pigeonInstance.pPID = ppid - } - - func setLanguage(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, language: String) throws { - pigeonInstance.language = language - } - - func setMaxRedirects(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, max: Int64) throws { - pigeonInstance.maxRedirects = max - } - - func setFeatureFlags(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, flags: [String: String]) throws { - pigeonInstance.featureFlags = flags - } - - func setEnableBackgroundPlayback(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws { - pigeonInstance.enableBackgroundPlayback = enabled - } - - func setAutoPlayAdBreaks(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, autoPlay: Bool) throws { - pigeonInstance.autoPlayAdBreaks = autoPlay - } - - func setDisableNowPlayingInfo(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, disable: Bool) throws { - pigeonInstance.disableNowPlayingInfo = disable - } - - func setPlayerType(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, type: String?) throws { - pigeonInstance.playerType = type - } - - func setPlayerVersion(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, version: String?) throws { - pigeonInstance.playerVersion = version - } - - func setSessionID(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, sessionID: String?) throws { - pigeonInstance.sessionID = sessionID - } - - func setSameAppKeyEnabled(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enabled: Bool) throws { - pigeonInstance.sameAppKeyEnabled = enabled - } - - func setEnableDebugMode(pigeonApi: PigeonApiIMASettings, pigeonInstance: IMASettings, enable: Bool) throws { - pigeonInstance.enableDebugMode = enable - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class SettingsTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) - XCTAssertNotNil(instance) - } - - func testSetPPID() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let ppid = "myString" - try? api.pigeonDelegate.setPPID(pigeonApi: api, pigeonInstance: instance, ppid: ppid) - - XCTAssertEqual(instance.setPPIDArgs, [ppid]) - } - - func testSetLanguage() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let language = "myString" - try? api.pigeonDelegate.setLanguage(pigeonApi: api, pigeonInstance: instance, language: language) - - XCTAssertEqual(instance.setLanguageArgs, [language]) - } - - func testSetMaxRedirects() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let max = 0 - try? api.pigeonDelegate.setMaxRedirects(pigeonApi: api, pigeonInstance: instance, max: max) - - XCTAssertEqual(instance.setMaxRedirectsArgs, [max]) - } - - func testSetFeatureFlags() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let flags = ["myString": "myString"] - try? api.pigeonDelegate.setFeatureFlags(pigeonApi: api, pigeonInstance: instance, flags: flags) - - XCTAssertEqual(instance.setFeatureFlagsArgs, [flags]) - } - - func testSetEnableBackgroundPlayback() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let enabled = true - try? api.pigeonDelegate.setEnableBackgroundPlayback(pigeonApi: api, pigeonInstance: instance, enabled: enabled) - - XCTAssertEqual(instance.setEnableBackgroundPlaybackArgs, [enabled]) - } - - func testSetAutoPlayAdBreaks() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let autoPlay = true - try? api.pigeonDelegate.setAutoPlayAdBreaks(pigeonApi: api, pigeonInstance: instance, autoPlay: autoPlay) - - XCTAssertEqual(instance.setAutoPlayAdBreaksArgs, [autoPlay]) - } - - func testSetDisableNowPlayingInfo() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let disable = true - try? api.pigeonDelegate.setDisableNowPlayingInfo(pigeonApi: api, pigeonInstance: instance, disable: disable) - - XCTAssertEqual(instance.setDisableNowPlayingInfoArgs, [disable]) - } - - func testSetPlayerType() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let type = "myString" - try? api.pigeonDelegate.setPlayerType(pigeonApi: api, pigeonInstance: instance, type: type) - - XCTAssertEqual(instance.setPlayerTypeArgs, [type]) - } - - func testSetPlayerVersion() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let version = "myString" - try? api.pigeonDelegate.setPlayerVersion(pigeonApi: api, pigeonInstance: instance, version: version) - - XCTAssertEqual(instance.setPlayerVersionArgs, [version]) - } - - func testSetSessionID() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let sessionID = "myString" - try? api.pigeonDelegate.setSessionID(pigeonApi: api, pigeonInstance: instance, sessionID: sessionID) - - XCTAssertEqual(instance.setSessionIDArgs, [sessionID]) - } - - func testSetSameAppKeyEnabled() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let enabled = true - try? api.pigeonDelegate.setSameAppKeyEnabled(pigeonApi: api, pigeonInstance: instance, enabled: enabled) - - XCTAssertEqual(instance.setSameAppKeyEnabledArgs, [enabled]) - } - - func testSetEnableDebugMode() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMASettings(registrar) - - let instance = TestSettings() - let enable = true - try? api.pigeonDelegate.setEnableDebugMode(pigeonApi: api, pigeonInstance: instance, enable: enable) - - XCTAssertEqual(instance.setEnableDebugModeArgs, [enable]) - } - -} -class TestSettings: IMASettings { - var setPPIDArgs: [AnyHashable?]? = nil - var setLanguageArgs: [AnyHashable?]? = nil - var setMaxRedirectsArgs: [AnyHashable?]? = nil - var setFeatureFlagsArgs: [AnyHashable?]? = nil - var setEnableBackgroundPlaybackArgs: [AnyHashable?]? = nil - var setAutoPlayAdBreaksArgs: [AnyHashable?]? = nil - var setDisableNowPlayingInfoArgs: [AnyHashable?]? = nil - var setPlayerTypeArgs: [AnyHashable?]? = nil - var setPlayerVersionArgs: [AnyHashable?]? = nil - var setSessionIDArgs: [AnyHashable?]? = nil - var setSameAppKeyEnabledArgs: [AnyHashable?]? = nil - var setEnableDebugModeArgs: [AnyHashable?]? = nil - - - override func setPPID() { - setPPIDArgs = [ppid] - } - override func setLanguage() { - setLanguageArgs = [language] - } - override func setMaxRedirects() { - setMaxRedirectsArgs = [max] - } - override func setFeatureFlags() { - setFeatureFlagsArgs = [flags] - } - override func setEnableBackgroundPlayback() { - setEnableBackgroundPlaybackArgs = [enabled] - } - override func setAutoPlayAdBreaks() { - setAutoPlayAdBreaksArgs = [autoPlay] - } - override func setDisableNowPlayingInfo() { - setDisableNowPlayingInfoArgs = [disable] - } - override func setPlayerType() { - setPlayerTypeArgs = [type] - } - override func setPlayerVersion() { - setPlayerVersionArgs = [version] - } - override func setSessionID() { - setSessionIDArgs = [sessionID] - } - override func setSameAppKeyEnabled() { - setSameAppKeyEnabledArgs = [enabled] - } - override func setEnableDebugMode() { - setEnableDebugModeArgs = [enable] - } -} -*/ - protocol PigeonApiDelegateIMAAdsRequest { /// Initializes an ads request instance with the given ad tag URL and ad /// display container. @@ -2845,7 +2374,10 @@ protocol PigeonApiDelegateIMAAdsRequest { /// calling `IMAAdsManager.destroy` on its current adsManager. Concurrent /// requests must use different ad containers. Does not support /// Picture-in-Picture. - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead?) throws -> IMAAdsRequest + func pigeonDefaultConstructor( + pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, + contentPlayhead: IMAContentPlayhead? + ) throws -> IMAAdsRequest /// Initializes an ads request instance with the given canned ads response and /// ad display container. /// @@ -2853,67 +2385,83 @@ protocol PigeonApiDelegateIMAAdsRequest { /// calling `IMAAdsManager.destroy` on its current adsManager. Concurrent /// requests must use different ad containers. Does not support /// Picture-in-Picture. - func withAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, adsResponse: String, adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead?) throws -> IMAAdsRequest + func withAdsResponse( + pigeonApi: PigeonApiIMAAdsRequest, adsResponse: String, + adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead? + ) throws -> IMAAdsRequest /// Specifies the full URL to use for ads loading from an ad server. /// /// Required for any adsRequest. - func getAdTagUrl(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> String? + func getAdTagUrl(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws + -> String? /// Specifies a VAST, VMAP, or ad rules response to be used instead of making /// a request through an ad tag URL. - func getAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> String? + func getAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws + -> String? /// The ad display container. - func getAdDisplayContainer(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> IMAAdDisplayContainer + func getAdDisplayContainer(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) + throws -> IMAAdDisplayContainer /// Specifies whether the player intends to start the content and ad in /// response to a user action or whether they will be automatically played. /// /// Changing this setting will have no impact on ad playback. - func setAdWillAutoPlay(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillAutoPlay: Bool) throws + func setAdWillAutoPlay( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillAutoPlay: Bool) throws /// Specifies whether the player intends to start the content and ad with no /// volume. /// /// Changing this setting will have no impact on ad playback. - func setAdWillPlayMuted(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillPlayMuted: Bool) throws + func setAdWillPlayMuted( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillPlayMuted: Bool) throws /// Specifies whether the player intends to continuously play the content /// videos one after another similar to TV broadcast. /// /// Not calling this function leaves the setting as unknown. Note: Changing /// this setting will have no impact on ad playback. - func setContinuousPlayback(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, continuousPlayback: Bool) throws + func setContinuousPlayback( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, continuousPlayback: Bool) + throws /// Specifies the duration of the content in seconds to be shown. /// /// Used in AdX requests. This parameter is optional. - func setContentDuration(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, duration: Double) throws + func setContentDuration( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, duration: Double) throws /// Specifies the keywords used to describe the content to be shown. /// /// Used in AdX requests. This parameter is optional. - func setContentKeywords(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, keywords: [String]?) throws + func setContentKeywords( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, keywords: [String]?) throws /// Specifies the title of the content to be shown. /// /// Used in AdX requests. This parameter is optional. - func setContentTitle(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, title: String?) throws + func setContentTitle( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, title: String?) throws /// Specifies the universal link to the content’s screen. /// /// If provided, this parameter is passed to the OM SDK. See /// [Apple documentation](https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content) /// for more information. - func setContentURL(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, contentURL: String?) throws + func setContentURL( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, contentURL: String?) throws /// Specifies the VAST load timeout in milliseconds for the initial request /// and any subsequent wrappers. /// /// This parameter is optional and will override the default timeout. - func setVastLoadTimeout(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, timeout: Double) throws + func setVastLoadTimeout( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, timeout: Double) throws /// Specifies the maximum amount of time to wait in seconds, after calling /// requestAds, before requesting the ad tag URL. /// /// This can be used to stagger requests during a live-stream event, in order /// to mitigate spikes in the number of requests. - func setLiveStreamPrefetchSeconds(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, seconds: Double) throws + func setLiveStreamPrefetchSeconds( + pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, seconds: Double) throws } protocol PigeonApiProtocolIMAAdsRequest { } -final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { +final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsRequest ///An implementation of [NSObject] used to access callback methods @@ -2921,17 +2469,25 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsRequest) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdsRequest + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsRequest?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsRequest? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -2941,8 +2497,10 @@ final class PigeonApiIMAAdsRequest: PigeonApiProtocolIMAAdsRequest { let contentPlayheadArg: IMAContentPlayhead? = nilOrValue(args[3]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, adTagUrl: adTagUrlArg, adDisplayContainer: adDisplayContainerArg, contentPlayhead: contentPlayheadArg), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor( + pigeonApi: api, adTagUrl: adTagUrlArg, adDisplayContainer: adDisplayContainerArg, + contentPlayhead: contentPlayheadArg), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2951,7 +2509,9 @@ withIdentifier: pigeonIdentifierArg) } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let withAdsResponseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.withAdsResponse", binaryMessenger: binaryMessenger, codec: codec) + let withAdsResponseChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.withAdsResponse", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { withAdsResponseChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -2961,8 +2521,10 @@ withIdentifier: pigeonIdentifierArg) let contentPlayheadArg: IMAContentPlayhead? = nilOrValue(args[3]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.withAdsResponse(pigeonApi: api, adsResponse: adsResponseArg, adDisplayContainer: adDisplayContainerArg, contentPlayhead: contentPlayheadArg), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.withAdsResponse( + pigeonApi: api, adsResponse: adsResponseArg, + adDisplayContainer: adDisplayContainerArg, contentPlayhead: contentPlayheadArg), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -2971,13 +2533,16 @@ withIdentifier: pigeonIdentifierArg) } else { withAdsResponseChannel.setMessageHandler(nil) } - let getAdTagUrlChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdTagUrl", binaryMessenger: binaryMessenger, codec: codec) + let getAdTagUrlChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdTagUrl", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { getAdTagUrlChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest do { - let result = try api.pigeonDelegate.getAdTagUrl(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.getAdTagUrl( + pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -2986,13 +2551,16 @@ withIdentifier: pigeonIdentifierArg) } else { getAdTagUrlChannel.setMessageHandler(nil) } - let getAdsResponseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdsResponse", binaryMessenger: binaryMessenger, codec: codec) + let getAdsResponseChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdsResponse", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { getAdsResponseChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest do { - let result = try api.pigeonDelegate.getAdsResponse(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.getAdsResponse( + pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -3001,13 +2569,16 @@ withIdentifier: pigeonIdentifierArg) } else { getAdsResponseChannel.setMessageHandler(nil) } - let getAdDisplayContainerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdDisplayContainer", binaryMessenger: binaryMessenger, codec: codec) + let getAdDisplayContainerChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.getAdDisplayContainer", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { getAdDisplayContainerChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest do { - let result = try api.pigeonDelegate.getAdDisplayContainer(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.getAdDisplayContainer( + pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -3016,14 +2587,17 @@ withIdentifier: pigeonIdentifierArg) } else { getAdDisplayContainerChannel.setMessageHandler(nil) } - let setAdWillAutoPlayChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setAdWillAutoPlay", binaryMessenger: binaryMessenger, codec: codec) + let setAdWillAutoPlayChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setAdWillAutoPlay", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setAdWillAutoPlayChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let adWillAutoPlayArg = args[1] as! Bool do { - try api.pigeonDelegate.setAdWillAutoPlay(pigeonApi: api, pigeonInstance: pigeonInstanceArg, adWillAutoPlay: adWillAutoPlayArg) + try api.pigeonDelegate.setAdWillAutoPlay( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, adWillAutoPlay: adWillAutoPlayArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3032,14 +2606,17 @@ withIdentifier: pigeonIdentifierArg) } else { setAdWillAutoPlayChannel.setMessageHandler(nil) } - let setAdWillPlayMutedChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setAdWillPlayMuted", binaryMessenger: binaryMessenger, codec: codec) + let setAdWillPlayMutedChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setAdWillPlayMuted", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setAdWillPlayMutedChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let adWillPlayMutedArg = args[1] as! Bool do { - try api.pigeonDelegate.setAdWillPlayMuted(pigeonApi: api, pigeonInstance: pigeonInstanceArg, adWillPlayMuted: adWillPlayMutedArg) + try api.pigeonDelegate.setAdWillPlayMuted( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, adWillPlayMuted: adWillPlayMutedArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3048,14 +2625,18 @@ withIdentifier: pigeonIdentifierArg) } else { setAdWillPlayMutedChannel.setMessageHandler(nil) } - let setContinuousPlaybackChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContinuousPlayback", binaryMessenger: binaryMessenger, codec: codec) + let setContinuousPlaybackChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContinuousPlayback", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContinuousPlaybackChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let continuousPlaybackArg = args[1] as! Bool do { - try api.pigeonDelegate.setContinuousPlayback(pigeonApi: api, pigeonInstance: pigeonInstanceArg, continuousPlayback: continuousPlaybackArg) + try api.pigeonDelegate.setContinuousPlayback( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, + continuousPlayback: continuousPlaybackArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3064,14 +2645,17 @@ withIdentifier: pigeonIdentifierArg) } else { setContinuousPlaybackChannel.setMessageHandler(nil) } - let setContentDurationChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentDuration", binaryMessenger: binaryMessenger, codec: codec) + let setContentDurationChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentDuration", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContentDurationChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let durationArg = args[1] as! Double do { - try api.pigeonDelegate.setContentDuration(pigeonApi: api, pigeonInstance: pigeonInstanceArg, duration: durationArg) + try api.pigeonDelegate.setContentDuration( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, duration: durationArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3080,14 +2664,17 @@ withIdentifier: pigeonIdentifierArg) } else { setContentDurationChannel.setMessageHandler(nil) } - let setContentKeywordsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentKeywords", binaryMessenger: binaryMessenger, codec: codec) + let setContentKeywordsChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentKeywords", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContentKeywordsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let keywordsArg: [String]? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setContentKeywords(pigeonApi: api, pigeonInstance: pigeonInstanceArg, keywords: keywordsArg) + try api.pigeonDelegate.setContentKeywords( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, keywords: keywordsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3096,14 +2683,17 @@ withIdentifier: pigeonIdentifierArg) } else { setContentKeywordsChannel.setMessageHandler(nil) } - let setContentTitleChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentTitle", binaryMessenger: binaryMessenger, codec: codec) + let setContentTitleChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentTitle", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContentTitleChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let titleArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setContentTitle(pigeonApi: api, pigeonInstance: pigeonInstanceArg, title: titleArg) + try api.pigeonDelegate.setContentTitle( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, title: titleArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3112,14 +2702,17 @@ withIdentifier: pigeonIdentifierArg) } else { setContentTitleChannel.setMessageHandler(nil) } - let setContentURLChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentURL", binaryMessenger: binaryMessenger, codec: codec) + let setContentURLChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setContentURL", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setContentURLChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let contentURLArg: String? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setContentURL(pigeonApi: api, pigeonInstance: pigeonInstanceArg, contentURL: contentURLArg) + try api.pigeonDelegate.setContentURL( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, contentURL: contentURLArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3128,14 +2721,17 @@ withIdentifier: pigeonIdentifierArg) } else { setContentURLChannel.setMessageHandler(nil) } - let setVastLoadTimeoutChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setVastLoadTimeout", binaryMessenger: binaryMessenger, codec: codec) + let setVastLoadTimeoutChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setVastLoadTimeout", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setVastLoadTimeoutChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let timeoutArg = args[1] as! Double do { - try api.pigeonDelegate.setVastLoadTimeout(pigeonApi: api, pigeonInstance: pigeonInstanceArg, timeout: timeoutArg) + try api.pigeonDelegate.setVastLoadTimeout( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, timeout: timeoutArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3144,14 +2740,17 @@ withIdentifier: pigeonIdentifierArg) } else { setVastLoadTimeoutChannel.setMessageHandler(nil) } - let setLiveStreamPrefetchSecondsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setLiveStreamPrefetchSeconds", binaryMessenger: binaryMessenger, codec: codec) + let setLiveStreamPrefetchSecondsChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.setLiveStreamPrefetchSeconds", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setLiveStreamPrefetchSecondsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRequest let secondsArg = args[1] as! Double do { - try api.pigeonDelegate.setLiveStreamPrefetchSeconds(pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) + try api.pigeonDelegate.setLiveStreamPrefetchSeconds( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -3163,21 +2762,26 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMAAdsRequest and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdsRequest, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdsRequest, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsRequest.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3195,393 +2799,134 @@ withIdentifier: pigeonIdentifierArg) } } } +protocol PigeonApiDelegateIMAAdsLoaderDelegate { + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoaderDelegate) throws + -> IMAAdsLoaderDelegate +} -/* -// 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. - -import Foundation -import GoogleInteractiveMediaAds - - -/// ProxyApi implementation for `IMAAdsRequest`. -/// -/// 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 AdsRequestProxyAPIDelegate : PigeonApiDelegateIMAAdsRequest { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead?) throws -> IMAAdsRequest { - return IMAAdsRequest(,adTagUrl: adTagUrl, adDisplayContainer: adDisplayContainer, contentPlayhead: contentPlayhead) - } - - func withAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, adsResponse: String, adDisplayContainer: IMAAdDisplayContainer, contentPlayhead: IMAContentPlayhead?) throws -> IMAAdsRequest { - return IMAAdsRequest(,adsResponse: adsResponse, adDisplayContainer: adDisplayContainer, contentPlayhead: contentPlayhead) - } - - func getAdTagUrl(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> String? { - return pigeonInstance.adTagUrl - } - - func getAdsResponse(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> String? { - return pigeonInstance.adsResponse - } - - func getAdDisplayContainer(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest) throws -> IMAAdDisplayContainer { - return pigeonInstance.adDisplayContainer - } +protocol PigeonApiProtocolIMAAdsLoaderDelegate { + /// Called when ads are successfully loaded from the ad servers by the loader. + func adLoaderLoadedWith( + pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, + adsLoadedData adsLoadedDataArg: IMAAdsLoadedData, + completion: @escaping (Result) -> Void) + /// Error reported by the ads loader when loading or requesting an ad fails. + func adsLoaderFailedWithErrorData( + pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, + adErrorData adErrorDataArg: IMAAdLoadingErrorData, + completion: @escaping (Result) -> Void) +} - func setAdWillAutoPlay(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillAutoPlay: Bool) throws { - pigeonInstance.adWillAutoPlay = adWillAutoPlay +final class PigeonApiIMAAdsLoaderDelegate: PigeonApiProtocolIMAAdsLoaderDelegate { + unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateIMAAdsLoaderDelegate + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - func setAdWillPlayMuted(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, adWillPlayMuted: Bool) throws { - pigeonInstance.adWillPlayMuted = adWillPlayMuted + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdsLoaderDelegate + ) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate } - - func setContinuousPlayback(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, continuousPlayback: Bool) throws { - pigeonInstance.continuousPlayback = continuousPlayback + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsLoaderDelegate? + ) { + let codec: FlutterStandardMessageCodec = + api != nil + ? FlutterStandardMessageCodec( + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) + : FlutterStandardMessageCodec.sharedInstance() + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + pigeonDefaultConstructorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonIdentifierArg = args[0] as! Int64 + do { + api.pigeonRegistrar.instanceManager.addDartCreatedInstance( + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), + withIdentifier: pigeonIdentifierArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + pigeonDefaultConstructorChannel.setMessageHandler(nil) + } } - func setContentDuration(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, duration: Double) throws { - pigeonInstance.contentDuration = duration + ///Creates a Dart instance of IMAAdsLoaderDelegate and attaches it to [pigeonInstance]. + func pigeonNewInstance( + pigeonInstance: IMAAdsLoaderDelegate, completion: @escaping (Result) -> Void + ) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + completion( + .failure( + PigeonError( + code: "new-instance-error", + message: + "Error: Attempting to create a new Dart instance of IMAAdsLoaderDelegate, but the class has a nonnull callback method.", + details: ""))) + } } - - func setContentKeywords(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, keywords: [String]?) throws { - pigeonInstance.contentKeywords = keywords + /// Called when ads are successfully loaded from the ad servers by the loader. + func adLoaderLoadedWith( + pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, + adsLoadedData adsLoadedDataArg: IMAAdsLoadedData, + completion: @escaping (Result) -> Void + ) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + return + } + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.adLoaderLoadedWith" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonInstanceArg, loaderArg, adsLoadedDataArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } } - func setContentTitle(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, title: String?) throws { - pigeonInstance.contentTitle = title - } - - func setContentURL(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, contentURL: String?) throws { - pigeonInstance.contentURL = contentURL - } - - func setVastLoadTimeout(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, timeout: Double) throws { - pigeonInstance.vastLoadTimeout = timeout - } - - func setLiveStreamPrefetchSeconds(pigeonApi: PigeonApiIMAAdsRequest, pigeonInstance: IMAAdsRequest, seconds: Double) throws { - pigeonInstance.liveStreamPrefetchSeconds = seconds - } - -} -*/ - -/* -// 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. - -import GoogleInteractiveMediaAds -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdsRequestTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, adTagUrl: "myString", adDisplayContainer: TestAdDisplayContainer, contentPlayhead: TestContentPlayhead) - XCTAssertNotNil(instance) - } - - func testWithAdsResponse() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = try? api.pigeonDelegate.withAdsResponse(pigeonApi: api, adsResponse: "myString", adDisplayContainer: TestAdDisplayContainer, contentPlayhead: TestContentPlayhead) - XCTAssertNotNil(instance) - } - - func testGetAdTagUrl() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let value = try? api.pigeonDelegate.getAdTagUrl(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.getAdTagUrlCalled) - XCTAssertEqual(value, instance.getAdTagUrl()) - } - - func testGetAdsResponse() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let value = try? api.pigeonDelegate.getAdsResponse(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.getAdsResponseCalled) - XCTAssertEqual(value, instance.getAdsResponse()) - } - - func testGetAdDisplayContainer() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let value = try? api.pigeonDelegate.getAdDisplayContainer(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.getAdDisplayContainerCalled) - XCTAssertEqual(value, instance.getAdDisplayContainer()) - } - - func testSetAdWillAutoPlay() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let adWillAutoPlay = true - try? api.pigeonDelegate.setAdWillAutoPlay(pigeonApi: api, pigeonInstance: instance, adWillAutoPlay: adWillAutoPlay) - - XCTAssertEqual(instance.setAdWillAutoPlayArgs, [adWillAutoPlay]) - } - - func testSetAdWillPlayMuted() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let adWillPlayMuted = true - try? api.pigeonDelegate.setAdWillPlayMuted(pigeonApi: api, pigeonInstance: instance, adWillPlayMuted: adWillPlayMuted) - - XCTAssertEqual(instance.setAdWillPlayMutedArgs, [adWillPlayMuted]) - } - - func testSetContinuousPlayback() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let continuousPlayback = true - try? api.pigeonDelegate.setContinuousPlayback(pigeonApi: api, pigeonInstance: instance, continuousPlayback: continuousPlayback) - - XCTAssertEqual(instance.setContinuousPlaybackArgs, [continuousPlayback]) - } - - func testSetContentDuration() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let duration = 1.0 - try? api.pigeonDelegate.setContentDuration(pigeonApi: api, pigeonInstance: instance, duration: duration) - - XCTAssertEqual(instance.setContentDurationArgs, [duration]) - } - - func testSetContentKeywords() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let keywords = ["myString"] - try? api.pigeonDelegate.setContentKeywords(pigeonApi: api, pigeonInstance: instance, keywords: keywords) - - XCTAssertEqual(instance.setContentKeywordsArgs, [keywords]) - } - - func testSetContentTitle() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let title = "myString" - try? api.pigeonDelegate.setContentTitle(pigeonApi: api, pigeonInstance: instance, title: title) - - XCTAssertEqual(instance.setContentTitleArgs, [title]) - } - - func testSetContentURL() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let contentURL = "myString" - try? api.pigeonDelegate.setContentURL(pigeonApi: api, pigeonInstance: instance, contentURL: contentURL) - - XCTAssertEqual(instance.setContentURLArgs, [contentURL]) - } - - func testSetVastLoadTimeout() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let timeout = 1.0 - try? api.pigeonDelegate.setVastLoadTimeout(pigeonApi: api, pigeonInstance: instance, timeout: timeout) - - XCTAssertEqual(instance.setVastLoadTimeoutArgs, [timeout]) - } - - func testSetLiveStreamPrefetchSeconds() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar) - - let instance = TestAdsRequest() - let seconds = 1.0 - try? api.pigeonDelegate.setLiveStreamPrefetchSeconds(pigeonApi: api, pigeonInstance: instance, seconds: seconds) - - XCTAssertEqual(instance.setLiveStreamPrefetchSecondsArgs, [seconds]) - } - -} -class TestAdsRequest: IMAAdsRequest { - var getAdTagUrlCalled = false - var getAdsResponseCalled = false - var getAdDisplayContainerCalled = false - var setAdWillAutoPlayArgs: [AnyHashable?]? = nil - var setAdWillPlayMutedArgs: [AnyHashable?]? = nil - var setContinuousPlaybackArgs: [AnyHashable?]? = nil - var setContentDurationArgs: [AnyHashable?]? = nil - var setContentKeywordsArgs: [AnyHashable?]? = nil - var setContentTitleArgs: [AnyHashable?]? = nil - var setContentURLArgs: [AnyHashable?]? = nil - var setVastLoadTimeoutArgs: [AnyHashable?]? = nil - var setLiveStreamPrefetchSecondsArgs: [AnyHashable?]? = nil - - - override func getAdTagUrl() { - getAdTagUrlCalled = true - } - override func getAdsResponse() { - getAdsResponseCalled = true - } - override func getAdDisplayContainer() { - getAdDisplayContainerCalled = true - } - override func setAdWillAutoPlay() { - setAdWillAutoPlayArgs = [adWillAutoPlay] - } - override func setAdWillPlayMuted() { - setAdWillPlayMutedArgs = [adWillPlayMuted] - } - override func setContinuousPlayback() { - setContinuousPlaybackArgs = [continuousPlayback] - } - override func setContentDuration() { - setContentDurationArgs = [duration] - } - override func setContentKeywords() { - setContentKeywordsArgs = [keywords] - } - override func setContentTitle() { - setContentTitleArgs = [title] - } - override func setContentURL() { - setContentURLArgs = [contentURL] - } - override func setVastLoadTimeout() { - setVastLoadTimeoutArgs = [timeout] - } - override func setLiveStreamPrefetchSeconds() { - setLiveStreamPrefetchSecondsArgs = [seconds] - } -} -*/ - -protocol PigeonApiDelegateIMAAdsLoaderDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoaderDelegate) throws -> IMAAdsLoaderDelegate -} - -protocol PigeonApiProtocolIMAAdsLoaderDelegate { - /// Called when ads are successfully loaded from the ad servers by the loader. - func adLoaderLoadedWith(pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, adsLoadedData adsLoadedDataArg: IMAAdsLoadedData, completion: @escaping (Result) -> Void) /// Error reported by the ads loader when loading or requesting an ad fails. - func adsLoaderFailedWithErrorData(pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, adErrorData adErrorDataArg: IMAAdLoadingErrorData, completion: @escaping (Result) -> Void) -} - -final class PigeonApiIMAAdsLoaderDelegate: PigeonApiProtocolIMAAdsLoaderDelegate { - unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - let pigeonDelegate: PigeonApiDelegateIMAAdsLoaderDelegate - ///An implementation of [NSObject] used to access callback methods - var pigeonApiNSObject: PigeonApiNSObject { - return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) - } - - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsLoaderDelegate) { - self.pigeonRegistrar = pigeonRegistrar - self.pigeonDelegate = delegate - } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsLoaderDelegate?) { - let codec: FlutterStandardMessageCodec = - api != nil - ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) - : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) - if let api = api { - pigeonDefaultConstructorChannel.setMessageHandler { message, reply in - let args = message as! [Any?] - let pigeonIdentifierArg = args[0] as! Int64 - do { - api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), -withIdentifier: pigeonIdentifierArg) - reply(wrapResult(nil)) - } catch { - reply(wrapError(error)) - } - } - } else { - pigeonDefaultConstructorChannel.setMessageHandler(nil) - } - } - - ///Creates a Dart instance of IMAAdsLoaderDelegate and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdsLoaderDelegate, completion: @escaping (Result) -> Void) { - if pigeonRegistrar.ignoreCallsToDart { - completion( - .failure( - PigeonError( - code: "ignore-calls-error", - message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { - completion(.success(())) - } else { - completion( - .failure( - PigeonError( - code: "new-instance-error", - message: "Error: Attempting to create a new Dart instance of IMAAdsLoaderDelegate, but the class has a nonnull callback method.", details: ""))) - } - } - /// Called when ads are successfully loaded from the ad servers by the loader. - func adLoaderLoadedWith(pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, adsLoadedData adsLoadedDataArg: IMAAdsLoadedData, completion: @escaping (Result) -> Void) { - if pigeonRegistrar.ignoreCallsToDart { - completion( - .failure( - PigeonError( - code: "ignore-calls-error", - message: "Calls to Dart are being ignored.", details: ""))) - return - } - let binaryMessenger = pigeonRegistrar.binaryMessenger - let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.adLoaderLoadedWith" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonInstanceArg, loaderArg, adsLoadedDataArg] as [Any?]) { response in - guard let listResponse = response as? [Any?] else { - completion(.failure(createConnectionError(withChannelName: channelName))) - return - } - if listResponse.count > 1 { - let code: String = listResponse[0] as! String - let message: String? = nilOrValue(listResponse[1]) - let details: String? = nilOrValue(listResponse[2]) - completion(.failure(PigeonError(code: code, message: message, details: details))) - } else { - completion(.success(())) - } - } - } - - /// Error reported by the ads loader when loading or requesting an ad fails. - func adsLoaderFailedWithErrorData(pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, adErrorData adErrorDataArg: IMAAdLoadingErrorData, completion: @escaping (Result) -> Void) { + func adsLoaderFailedWithErrorData( + pigeonInstance pigeonInstanceArg: IMAAdsLoaderDelegate, loader loaderArg: IMAAdsLoader, + adErrorData adErrorDataArg: IMAAdLoadingErrorData, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -3592,8 +2937,10 @@ withIdentifier: pigeonIdentifierArg) } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.adsLoaderFailedWithErrorData" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoaderDelegate.adsLoaderFailedWithErrorData" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, loaderArg, adErrorDataArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3611,109 +2958,18 @@ withIdentifier: pigeonIdentifierArg) } } - -/* -// 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. - -import Foundation - - -/// Implementation of `IMAAdsLoaderDelegate` that calls to Dart in callback methods. -class AdsLoaderDelegateImpl: IMAAdsLoaderDelegate { - let api: PigeonApiProtocolIMAAdsLoaderDelegate - - init(api: PigeonApiProtocolIMAAdsLoaderDelegate) { - self.api = api - } - - func fixMe() { - api.adLoaderLoadedWith(pigeonInstance: self, loader: loader, adsLoadedData: adsLoadedData) { _ in } - } - - func fixMe() { - api.adsLoaderFailedWithErrorData(pigeonInstance: self, loader: loader, adErrorData: adErrorData) { _ in } - } -} - -/// ProxyApi implementation for `IMAAdsLoaderDelegate`. -/// -/// 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 AdsLoaderDelegateProxyAPIDelegate : PigeonApiDelegateIMAAdsLoaderDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsLoaderDelegate) throws -> IMAAdsLoaderDelegate { - return IMAAdsLoaderDelegateImpl(api: pigeonApi) - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdsLoaderDelegateTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsLoaderDelegate(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) - XCTAssertNotNil(instance) - } - - func testAdLoaderLoadedWith() { - let api = TestAdsLoaderDelegateApi() - let instance = AdsLoaderDelegateImpl(api: api) - let loader = TestAdsLoader - let adsLoadedData = TestAdsLoadedData - instance.adLoaderLoadedWith(loader: loader, adsLoadedData: adsLoadedData) - - XCTAssertEqual(api.adLoaderLoadedWithArgs, [loader, adsLoadedData]) - } - - func testAdsLoaderFailedWithErrorData() { - let api = TestAdsLoaderDelegateApi() - let instance = AdsLoaderDelegateImpl(api: api) - let loader = TestAdsLoader - let adErrorData = TestAdLoadingErrorData - instance.adsLoaderFailedWithErrorData(loader: loader, adErrorData: adErrorData) - - XCTAssertEqual(api.adsLoaderFailedWithErrorDataArgs, [loader, adErrorData]) - } - -} -class TestAdsLoaderDelegateApi: PigeonApiProtocolIMAAdsLoaderDelegate { - var adLoaderLoadedWithArgs: [AnyHashable?]? = nil - var adsLoaderFailedWithErrorDataArgs: [AnyHashable?]? = nil - - func adLoaderLoadedWith(loader: IMAAdsLoader, adsLoadedData: IMAAdsLoadedData) throws { - adLoaderLoadedWithArgs = [loaderArg, adsLoadedDataArg] - } - func adsLoaderFailedWithErrorData(loader: IMAAdsLoader, adErrorData: IMAAdLoadingErrorData) throws { - adsLoaderFailedWithErrorDataArgs = [loaderArg, adErrorDataArg] - } -} -*/ - protocol PigeonApiDelegateIMAAdsLoadedData { /// The ads manager instance created by the ads loader. /// /// Will be null when using dynamic ad insertion. - func adsManager(pigeonApi: PigeonApiIMAAdsLoadedData, pigeonInstance: IMAAdsLoadedData) throws -> IMAAdsManager? + func adsManager(pigeonApi: PigeonApiIMAAdsLoadedData, pigeonInstance: IMAAdsLoadedData) throws + -> IMAAdsManager? } protocol PigeonApiProtocolIMAAdsLoadedData { } -final class PigeonApiIMAAdsLoadedData: PigeonApiProtocolIMAAdsLoadedData { +final class PigeonApiIMAAdsLoadedData: PigeonApiProtocolIMAAdsLoadedData { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsLoadedData ///An implementation of [NSObject] used to access callback methods @@ -3721,27 +2977,36 @@ final class PigeonApiIMAAdsLoadedData: PigeonApiProtocolIMAAdsLoadedData { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsLoadedData) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdsLoadedData + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAdsLoadedData and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdsLoadedData, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdsLoadedData, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) - let adsManagerArg = try! pigeonDelegate.adsManager(pigeonApi: self, pigeonInstance: pigeonInstance) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) + let adsManagerArg = try! pigeonDelegate.adsManager( + pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoadedData.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsLoadedData.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg, adsManagerArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3759,62 +3024,16 @@ final class PigeonApiIMAAdsLoadedData: PigeonApiProtocolIMAAdsLoadedData { } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMAAdsLoadedData`. -/// -/// 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 AdsLoadedDataProxyAPIDelegate : PigeonApiDelegateIMAAdsLoadedData { - func adsManager(pigeonApi: PigeonApiIMAAdsLoadedData, pigeonInstance: IMAAdsLoadedData) throws -> IMAAdsManager? { - return pigeonInstance.adsManager - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdsLoadedDataTests: XCTestCase { - func testAdsManager() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsLoadedData(registrar) - - let instance = TestAdsLoadedData() - let value = try? api.pigeonDelegate.adsManager(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adsManager) - } - -} -*/ - protocol PigeonApiDelegateIMAAdLoadingErrorData { /// The ad error that occurred while loading the ad. - func adError(pigeonApi: PigeonApiIMAAdLoadingErrorData, pigeonInstance: IMAAdLoadingErrorData) throws -> IMAAdError + func adError(pigeonApi: PigeonApiIMAAdLoadingErrorData, pigeonInstance: IMAAdLoadingErrorData) + throws -> IMAAdError } protocol PigeonApiProtocolIMAAdLoadingErrorData { } -final class PigeonApiIMAAdLoadingErrorData: PigeonApiProtocolIMAAdLoadingErrorData { +final class PigeonApiIMAAdLoadingErrorData: PigeonApiProtocolIMAAdLoadingErrorData { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdLoadingErrorData ///An implementation of [NSObject] used to access callback methods @@ -3822,27 +3041,35 @@ final class PigeonApiIMAAdLoadingErrorData: PigeonApiProtocolIMAAdLoadingErrorDa return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdLoadingErrorData) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdLoadingErrorData + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAdLoadingErrorData and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdLoadingErrorData, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdLoadingErrorData, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let adErrorArg = try! pigeonDelegate.adError(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdLoadingErrorData.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdLoadingErrorData.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg, adErrorArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -3860,53 +3087,6 @@ final class PigeonApiIMAAdLoadingErrorData: PigeonApiProtocolIMAAdLoadingErrorDa } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMAAdLoadingErrorData`. -/// -/// 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 AdLoadingErrorDataProxyAPIDelegate : PigeonApiDelegateIMAAdLoadingErrorData { - func adError(pigeonApi: PigeonApiIMAAdLoadingErrorData, pigeonInstance: IMAAdLoadingErrorData) throws -> IMAAdError { - return pigeonInstance.adError - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdLoadingErrorDataTests: XCTestCase { - func testAdError() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdLoadingErrorData(registrar) - - let instance = TestAdLoadingErrorData() - let value = try? api.pigeonDelegate.adError(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adError) - } - -} -*/ - protocol PigeonApiDelegateIMAAdError { /// The type of error that occurred during ad loading or ad playing. func type(pigeonApi: PigeonApiIMAAdError, pigeonInstance: IMAAdError) throws -> AdErrorType @@ -3919,7 +3099,7 @@ protocol PigeonApiDelegateIMAAdError { protocol PigeonApiProtocolIMAAdError { } -final class PigeonApiIMAAdError: PigeonApiProtocolIMAAdError { +final class PigeonApiIMAAdError: PigeonApiProtocolIMAAdError { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdError ///An implementation of [NSObject] used to access callback methods @@ -3927,30 +3107,39 @@ final class PigeonApiIMAAdError: PigeonApiProtocolIMAAdError { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdError) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdError + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAdError and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdError, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdError, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let typeArg = try! pigeonDelegate.type(pigeonApi: self, pigeonInstance: pigeonInstance) let codeArg = try! pigeonDelegate.code(pigeonApi: self, pigeonInstance: pigeonInstance) let messageArg = try! pigeonDelegate.message(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdError.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, typeArg, codeArg, messageArg] as [Any?]) { response in + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdError.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, typeArg, codeArg, messageArg] as [Any?]) { + response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -3967,144 +3156,15 @@ final class PigeonApiIMAAdError: PigeonApiProtocolIMAAdError { } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMAAdError`. -/// -/// 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 AdErrorProxyAPIDelegate : PigeonApiDelegateIMAAdError { - func type(pigeonApi: PigeonApiIMAAdError, pigeonInstance: IMAAdError) throws -> AdErrorType { - switch pigeonInstance.type { - case .loadingFailed: - return .loadingFailed - case .adPlayingFailed: - return .adPlayingFailed - @unknown default: - return .unknown - } - } - - func code(pigeonApi: PigeonApiIMAAdError, pigeonInstance: IMAAdError) throws -> AdErrorCode { - switch pigeonInstance.code { - case .adslotNotVisible: - return .adslotNotVisible - case .apiError: - return .apiError - case .companionAdLoadingFailed: - return .companionAdLoadingFailed - case .contentPlayheadMissing: - return .contentPlayheadMissing - case .failedLoadingAd: - return .failedLoadingAd - case .failedToRequestAds: - return .failedToRequestAds - case .invalidArguments: - return .invalidArguments - case .osRuntimeTooOld: - return .osRuntimeTooOld - case .playlistMalformedResponse: - return .playlistMalformedResponse - case .requiredListenersNotAdded: - return .requiredListenersNotAdded - case .streamInitializationFailed: - return .streamInitializationFailed - case .unknownError: - return .unknownError - case .vastAssetNotFound: - return .vastAssetNotFound - case .vastEmptyResponse: - return .vastEmptyResponse - case .vastInvalidUrl: - return .vastInvalidUrl - case .vastLinearAssetMismatch: - return .vastLinearAssetMismatch - case .vastLoadTimeout: - return .vastLoadTimeout - case .vastMalformedResponse: - return .vastMalformedResponse - case .vastMediaLoadTimeout: - return .vastMediaLoadTimeout - case .vastTooManyRedirects: - return .vastTooManyRedirects - case .vastTraffickingError: - return .vastTraffickingError - case .videoElementUsed: - return .videoElementUsed - case .videoElementRequired: - return .videoElementRequired - case .videoPlayError: - return .videoPlayError - @unknown default: - return .unknown - } - } - - func message(pigeonApi: PigeonApiIMAAdError, pigeonInstance: IMAAdError) throws -> String? { - return pigeonInstance.message - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdErrorTests: XCTestCase { - func testType() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdError(registrar) - - let instance = TestAdError() - let value = try? api.pigeonDelegate.type(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.type) - } - - func testCode() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdError(registrar) - - let instance = TestAdError() - let value = try? api.pigeonDelegate.code(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.code) - } - - func testMessage() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdError(registrar) - - let instance = TestAdError() - let value = try? api.pigeonDelegate.message(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.message) - } - -} -*/ - protocol PigeonApiDelegateIMAAdsManager { /// The `IMAAdsManagerDelegate` to notify with events during ad playback. - func setDelegate(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, delegate: IMAAdsManagerDelegate?) throws + func setDelegate( + pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, + delegate: IMAAdsManagerDelegate?) throws /// Initializes and loads the ad. - func initialize(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, adsRenderingSettings: IMAAdsRenderingSettings?) throws + func initialize( + pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, + adsRenderingSettings: IMAAdsRenderingSettings?) throws /// Starts advertisement playback. func start(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws /// Pauses advertisement. @@ -4123,7 +3183,7 @@ protocol PigeonApiDelegateIMAAdsManager { protocol PigeonApiProtocolIMAAdsManager { } -final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { +final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsManager ///An implementation of [NSObject] used to access callback methods @@ -4131,24 +3191,33 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsManager) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdsManager + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsManager?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsManager? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let setDelegateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.setDelegate", binaryMessenger: binaryMessenger, codec: codec) + let setDelegateChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.setDelegate", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDelegateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsManager let delegateArg: IMAAdsManagerDelegate? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) + try api.pigeonDelegate.setDelegate( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -4157,14 +3226,18 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { setDelegateChannel.setMessageHandler(nil) } - let initializeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.initialize", binaryMessenger: binaryMessenger, codec: codec) + let initializeChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.initialize", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { initializeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsManager let adsRenderingSettingsArg: IMAAdsRenderingSettings? = nilOrValue(args[1]) do { - try api.pigeonDelegate.initialize(pigeonApi: api, pigeonInstance: pigeonInstanceArg, adsRenderingSettings: adsRenderingSettingsArg) + try api.pigeonDelegate.initialize( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, + adsRenderingSettings: adsRenderingSettingsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -4173,7 +3246,9 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { initializeChannel.setMessageHandler(nil) } - let startChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.start", binaryMessenger: binaryMessenger, codec: codec) + let startChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.start", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { startChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4188,7 +3263,9 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { startChannel.setMessageHandler(nil) } - let pauseChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.pause", binaryMessenger: binaryMessenger, codec: codec) + let pauseChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.pause", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pauseChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4203,7 +3280,9 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { pauseChannel.setMessageHandler(nil) } - let resumeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.resume", binaryMessenger: binaryMessenger, codec: codec) + let resumeChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.resume", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { resumeChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4218,7 +3297,9 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { resumeChannel.setMessageHandler(nil) } - let skipChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.skip", binaryMessenger: binaryMessenger, codec: codec) + let skipChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.skip", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { skipChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4233,7 +3314,9 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { skipChannel.setMessageHandler(nil) } - let discardAdBreakChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.discardAdBreak", binaryMessenger: binaryMessenger, codec: codec) + let discardAdBreakChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.discardAdBreak", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { discardAdBreakChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4248,7 +3331,9 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } else { discardAdBreakChannel.setMessageHandler(nil) } - let destroyChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.destroy", binaryMessenger: binaryMessenger, codec: codec) + let destroyChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.destroy", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { destroyChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -4266,237 +3351,72 @@ final class PigeonApiIMAAdsManager: PigeonApiProtocolIMAAdsManager { } ///Creates a Dart instance of IMAAdsManager and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdsManager, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdsManager, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsManager.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) - return - } - if listResponse.count > 1 { - let code: String = listResponse[0] as! String - let message: String? = nilOrValue(listResponse[1]) - let details: String? = nilOrValue(listResponse[2]) - completion(.failure(PigeonError(code: code, message: message, details: details))) - } else { - completion(.success(())) - } - } - } - } -} - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMAAdsManager`. -/// -/// 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 AdsManagerProxyAPIDelegate : PigeonApiDelegateIMAAdsManager { - func setDelegate(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, delegate: IMAAdsManagerDelegate?) throws { - pigeonInstance.delegate = delegate - } - - func initialize(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager, adsRenderingSettings: IMAAdsRenderingSettings?) throws { - pigeonInstance.initialize(adsRenderingSettings: adsRenderingSettings) - } - - func start(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { - pigeonInstance.start() - } - - func pause(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { - pigeonInstance.pause() - } - - func resume(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { - pigeonInstance.resume() - } - - func skip(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { - pigeonInstance.skip() - } - - func discardAdBreak(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { - pigeonInstance.discardAdBreak() - } - - func destroy(pigeonApi: PigeonApiIMAAdsManager, pigeonInstance: IMAAdsManager) throws { - pigeonInstance.destroy() - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdsManagerTests: XCTestCase { - func testSetDelegate() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) - - let instance = TestAdsManager() - let delegate = TestAdsManagerDelegate - try? api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: instance, delegate: delegate) - - XCTAssertEqual(instance.setDelegateArgs, [delegate]) - } - - func testInitialize() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) - - let instance = TestAdsManager() - let adsRenderingSettings = TestAdsRenderingSettings - try? api.pigeonDelegate.initialize(pigeonApi: api, pigeonInstance: instance, adsRenderingSettings: adsRenderingSettings) - - XCTAssertEqual(instance.initializeArgs, [adsRenderingSettings]) - } - - func testStart() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) - - let instance = TestAdsManager() - try? api.pigeonDelegate.start(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.startCalled) - } - - func testPause() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) - - let instance = TestAdsManager() - try? api.pigeonDelegate.pause(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.pauseCalled) - } - - func testResume() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) - - let instance = TestAdsManager() - try? api.pigeonDelegate.resume(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.resumeCalled) - } - - func testSkip() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) - - let instance = TestAdsManager() - try? api.pigeonDelegate.skip(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.skipCalled) - } - - func testDiscardAdBreak() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) - - let instance = TestAdsManager() - try? api.pigeonDelegate.discardAdBreak(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.discardAdBreakCalled) - } - - func testDestroy() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManager(registrar) - - let instance = TestAdsManager() - try? api.pigeonDelegate.destroy(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.destroyCalled) - } - -} -class TestAdsManager: IMAAdsManager { - var setDelegateArgs: [AnyHashable?]? = nil - var initializeArgs: [AnyHashable?]? = nil - var startCalled = false - var pauseCalled = false - var resumeCalled = false - var skipCalled = false - var discardAdBreakCalled = false - var destroyCalled = false - - - override func setDelegate() { - setDelegateArgs = [delegate] - } - override func initialize() { - initializeArgs = [adsRenderingSettings] - } - override func start() { - startCalled = true - } - override func pause() { - pauseCalled = true - } - override func resume() { - resumeCalled = true - } - override func skip() { - skipCalled = true - } - override func discardAdBreak() { - discardAdBreakCalled = true - } - override func destroy() { - destroyCalled = true + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } } } -*/ - protocol PigeonApiDelegateIMAAdsManagerDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsManagerDelegate) throws -> IMAAdsManagerDelegate + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsManagerDelegate) throws + -> IMAAdsManagerDelegate } protocol PigeonApiProtocolIMAAdsManagerDelegate { /// Called when there is an IMAAdEvent. - func didReceiveAdEvent(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, event eventArg: IMAAdEvent, completion: @escaping (Result) -> Void) + func didReceiveAdEvent( + pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, + adsManager adsManagerArg: IMAAdsManager, event eventArg: IMAAdEvent, + completion: @escaping (Result) -> Void) /// Called when there was an error playing the ad. - func didReceiveAdError(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, error errorArg: IMAAdError, completion: @escaping (Result) -> Void) + func didReceiveAdError( + pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, + adsManager adsManagerArg: IMAAdsManager, error errorArg: IMAAdError, + completion: @escaping (Result) -> Void) /// Called when an ad is ready to play. - func didRequestContentPause(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, completion: @escaping (Result) -> Void) + func didRequestContentPause( + pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, + adsManager adsManagerArg: IMAAdsManager, + completion: @escaping (Result) -> Void) /// Called when an ad has finished or an error occurred during the playback. - func didRequestContentResume(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, completion: @escaping (Result) -> Void) + func didRequestContentResume( + pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, + adsManager adsManagerArg: IMAAdsManager, + completion: @escaping (Result) -> Void) } -final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelegate { +final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelegate { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsManagerDelegate ///An implementation of [NSObject] used to access callback methods @@ -4504,25 +3424,34 @@ final class PigeonApiIMAAdsManagerDelegate: PigeonApiProtocolIMAAdsManagerDelega return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsManagerDelegate) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdsManagerDelegate + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsManagerDelegate?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsManagerDelegate? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -4534,25 +3463,33 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMAAdsManagerDelegate and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdsManagerDelegate, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdsManagerDelegate, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { + } else { completion( .failure( PigeonError( code: "new-instance-error", - message: "Error: Attempting to create a new Dart instance of IMAAdsManagerDelegate, but the class has a nonnull callback method.", details: ""))) + message: + "Error: Attempting to create a new Dart instance of IMAAdsManagerDelegate, but the class has a nonnull callback method.", + details: ""))) } } /// Called when there is an IMAAdEvent. - func didReceiveAdEvent(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, event eventArg: IMAAdEvent, completion: @escaping (Result) -> Void) { + func didReceiveAdEvent( + pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, + adsManager adsManagerArg: IMAAdsManager, event eventArg: IMAAdEvent, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -4563,8 +3500,10 @@ withIdentifier: pigeonIdentifierArg) } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didReceiveAdEvent" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didReceiveAdEvent" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, adsManagerArg, eventArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4582,7 +3521,11 @@ withIdentifier: pigeonIdentifierArg) } /// Called when there was an error playing the ad. - func didReceiveAdError(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, error errorArg: IMAAdError, completion: @escaping (Result) -> Void) { + func didReceiveAdError( + pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, + adsManager adsManagerArg: IMAAdsManager, error errorArg: IMAAdError, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -4593,8 +3536,10 @@ withIdentifier: pigeonIdentifierArg) } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didReceiveAdError" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didReceiveAdError" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, adsManagerArg, errorArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4612,7 +3557,11 @@ withIdentifier: pigeonIdentifierArg) } /// Called when an ad is ready to play. - func didRequestContentPause(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, completion: @escaping (Result) -> Void) { + func didRequestContentPause( + pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, + adsManager adsManagerArg: IMAAdsManager, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -4623,8 +3572,10 @@ withIdentifier: pigeonIdentifierArg) } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didRequestContentPause" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didRequestContentPause" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, adsManagerArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4642,7 +3593,11 @@ withIdentifier: pigeonIdentifierArg) } /// Called when an ad has finished or an error occurred during the playback. - func didRequestContentResume(pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, adsManager adsManagerArg: IMAAdsManager, completion: @escaping (Result) -> Void) { + func didRequestContentResume( + pigeonInstance pigeonInstanceArg: IMAAdsManagerDelegate, + adsManager adsManagerArg: IMAAdsManager, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -4653,8 +3608,10 @@ withIdentifier: pigeonIdentifierArg) } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didRequestContentResume" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsManagerDelegate.didRequestContentResume" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, adsManagerArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -4672,132 +3629,6 @@ withIdentifier: pigeonIdentifierArg) } } - -/* -// 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. - -import Foundation - - -/// Implementation of `IMAAdsManagerDelegate` that calls to Dart in callback methods. -class AdsManagerDelegateImpl: IMAAdsManagerDelegate { - let api: PigeonApiProtocolIMAAdsManagerDelegate - - init(api: PigeonApiProtocolIMAAdsManagerDelegate) { - self.api = api - } - - func fixMe() { - api.didReceiveAdEvent(pigeonInstance: self, adsManager: adsManager, event: event) { _ in } - } - - func fixMe() { - api.didReceiveAdError(pigeonInstance: self, adsManager: adsManager, error: error) { _ in } - } - - func fixMe() { - api.didRequestContentPause(pigeonInstance: self, adsManager: adsManager) { _ in } - } - - func fixMe() { - api.didRequestContentResume(pigeonInstance: self, adsManager: adsManager) { _ in } - } -} - -/// ProxyApi implementation for `IMAAdsManagerDelegate`. -/// -/// 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 AdsManagerDelegateProxyAPIDelegate : PigeonApiDelegateIMAAdsManagerDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsManagerDelegate) throws -> IMAAdsManagerDelegate { - return IMAAdsManagerDelegateImpl(api: pigeonApi) - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdsManagerDelegateTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsManagerDelegate(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) - XCTAssertNotNil(instance) - } - - func testDidReceiveAdEvent() { - let api = TestAdsManagerDelegateApi() - let instance = AdsManagerDelegateImpl(api: api) - let adsManager = TestAdsManager - let event = TestAdEvent - instance.didReceiveAdEvent(adsManager: adsManager, event: event) - - XCTAssertEqual(api.didReceiveAdEventArgs, [adsManager, event]) - } - - func testDidReceiveAdError() { - let api = TestAdsManagerDelegateApi() - let instance = AdsManagerDelegateImpl(api: api) - let adsManager = TestAdsManager - let error = TestAdError - instance.didReceiveAdError(adsManager: adsManager, error: error) - - XCTAssertEqual(api.didReceiveAdErrorArgs, [adsManager, error]) - } - - func testDidRequestContentPause() { - let api = TestAdsManagerDelegateApi() - let instance = AdsManagerDelegateImpl(api: api) - let adsManager = TestAdsManager - instance.didRequestContentPause(adsManager: adsManager) - - XCTAssertEqual(api.didRequestContentPauseArgs, [adsManager]) - } - - func testDidRequestContentResume() { - let api = TestAdsManagerDelegateApi() - let instance = AdsManagerDelegateImpl(api: api) - let adsManager = TestAdsManager - instance.didRequestContentResume(adsManager: adsManager) - - XCTAssertEqual(api.didRequestContentResumeArgs, [adsManager]) - } - -} -class TestAdsManagerDelegateApi: PigeonApiProtocolIMAAdsManagerDelegate { - var didReceiveAdEventArgs: [AnyHashable?]? = nil - var didReceiveAdErrorArgs: [AnyHashable?]? = nil - var didRequestContentPauseArgs: [AnyHashable?]? = nil - var didRequestContentResumeArgs: [AnyHashable?]? = nil - - func didReceiveAdEvent(adsManager: IMAAdsManager, event: IMAAdEvent) throws { - didReceiveAdEventArgs = [adsManagerArg, eventArg] - } - func didReceiveAdError(adsManager: IMAAdsManager, error: IMAAdError) throws { - didReceiveAdErrorArgs = [adsManagerArg, errorArg] - } - func didRequestContentPause(adsManager: IMAAdsManager) throws { - didRequestContentPauseArgs = [adsManagerArg] - } - func didRequestContentResume(adsManager: IMAAdsManager) throws { - didRequestContentResumeArgs = [adsManagerArg] - } -} -*/ - protocol PigeonApiDelegateIMAAdEvent { /// Type of the event. func type(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> AdEventType @@ -4810,7 +3641,7 @@ protocol PigeonApiDelegateIMAAdEvent { protocol PigeonApiProtocolIMAAdEvent { } -final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { +final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdEvent ///An implementation of [NSObject] used to access callback methods @@ -4818,30 +3649,40 @@ final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdEvent) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdEvent + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAdEvent and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdEvent, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdEvent, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let typeArg = try! pigeonDelegate.type(pigeonApi: self, pigeonInstance: pigeonInstance) - let typeStringArg = try! pigeonDelegate.typeString(pigeonApi: self, pigeonInstance: pigeonInstance) + let typeStringArg = try! pigeonDelegate.typeString( + pigeonApi: self, pigeonInstance: pigeonInstance) let adDataArg = try! pigeonDelegate.adData(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdEvent.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, typeArg, typeStringArg, adDataArg] as [Any?]) { response in + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdEvent.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, typeArg, typeStringArg, adDataArg] as [Any?]) { + response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -4858,162 +3699,51 @@ final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMAAdEvent`. -/// -/// 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 AdEventProxyAPIDelegate : PigeonApiDelegateIMAAdEvent { - func type(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> AdEventType { - switch pigeonInstance.type { - case .adBreakEnded: - return .adBreakEnded - case .adBreakFetchError: - return .adBreakFetchError - case .adBreakReady: - return .adBreakReady - case .adBreakStarted: - return .adBreakStarted - case .adPeriodEnded: - return .adPeriodEnded - case .adPeriodStarted: - return .adPeriodStarted - case .allAdsCompleted: - return .allAdsCompleted - case .clicked: - return .clicked - case .completed: - return .completed - case .cuepointsChanged: - return .cuepointsChanged - case .firstQuartile: - return .firstQuartile - case .iconFallbackImageClosed: - return .iconFallbackImageClosed - case .iconTapped: - return .iconTapped - case .loaded: - return .loaded - case .log: - return .log - case .midpoint: - return .midpoint - case .pause: - return .pause - case .resume: - return .resume - case .skipped: - return .skipped - case .started: - return .started - case .streamLoaded: - return .streamLoaded - case .streamStarted: - return .streamStarted - case .tapped: - return .tapped - case .thirdQuartile: - return .thirdQuartile - @unknown default: - return .unknown - } - } - - func typeString(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> String { - return pigeonInstance.typeString - } - - func adData(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> [String: Any]? { - return pigeonInstance.adData - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdEventTests: XCTestCase { - func testType() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdEvent(registrar) - - let instance = TestAdEvent() - let value = try? api.pigeonDelegate.type(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.type) - } - - func testTypeString() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdEvent(registrar) - - let instance = TestAdEvent() - let value = try? api.pigeonDelegate.typeString(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.typeString) - } - - func testAdData() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdEvent(registrar) - - let instance = TestAdEvent() - let value = try? api.pigeonDelegate.adData(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adData) - } - -} -*/ - protocol PigeonApiDelegateIMAAdsRenderingSettings { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRenderingSettings) throws -> IMAAdsRenderingSettings + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRenderingSettings) throws + -> IMAAdsRenderingSettings /// If specified, the SDK will play the media with MIME type on the list. - func setMimeTypes(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, types: [String]?) throws + func setMimeTypes( + pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, + types: [String]?) throws /// Maximum recommended bitrate. /// /// The value is in kbit/s. - func setBitrate(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, bitrate: Int64) throws + func setBitrate( + pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, + bitrate: Int64) throws /// Timeout (in seconds) when loading a video ad media file. /// /// Use -1 for the default of 8 seconds. - func setLoadVideoTimeout(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, seconds: Double) throws + func setLoadVideoTimeout( + pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, + seconds: Double) throws /// For VMAP and ad rules playlists, only play ad breaks scheduled after this /// time (in seconds). - func setPlayAdsAfterTime(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, seconds: Double) throws + func setPlayAdsAfterTime( + pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, + seconds: Double) throws /// Specifies the list of UI elements that should be visible. - func setUIElements(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, types: [UIElementType]?) throws + func setUIElements( + pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, + types: [UIElementType]?) throws /// Whether or not the SDK will preload ad media. /// /// Default is YES. - func setEnablePreloading(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, enable: Bool) throws + func setEnablePreloading( + pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, + enable: Bool) throws /// Specifies the optional UIViewController that will be used to open links /// in-app. - func setLinkOpenerPresentingController(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, controller: UIViewController) throws + func setLinkOpenerPresentingController( + pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, + controller: UIViewController) throws } protocol PigeonApiProtocolIMAAdsRenderingSettings { } -final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSettings { +final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSettings { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdsRenderingSettings ///An implementation of [NSObject] used to access callback methods @@ -5021,25 +3751,34 @@ final class PigeonApiIMAAdsRenderingSettings: PigeonApiProtocolIMAAdsRenderingSe return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdsRenderingSettings) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdsRenderingSettings + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsRenderingSettings?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAAdsRenderingSettings? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5048,14 +3787,17 @@ withIdentifier: pigeonIdentifierArg) } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let setMimeTypesChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setMimeTypes", binaryMessenger: binaryMessenger, codec: codec) + let setMimeTypesChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setMimeTypes", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setMimeTypesChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let typesArg: [String]? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setMimeTypes(pigeonApi: api, pigeonInstance: pigeonInstanceArg, types: typesArg) + try api.pigeonDelegate.setMimeTypes( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, types: typesArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5064,14 +3806,17 @@ withIdentifier: pigeonIdentifierArg) } else { setMimeTypesChannel.setMessageHandler(nil) } - let setBitrateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setBitrate", binaryMessenger: binaryMessenger, codec: codec) + let setBitrateChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setBitrate", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setBitrateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let bitrateArg = args[1] as! Int64 do { - try api.pigeonDelegate.setBitrate(pigeonApi: api, pigeonInstance: pigeonInstanceArg, bitrate: bitrateArg) + try api.pigeonDelegate.setBitrate( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, bitrate: bitrateArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5080,14 +3825,17 @@ withIdentifier: pigeonIdentifierArg) } else { setBitrateChannel.setMessageHandler(nil) } - let setLoadVideoTimeoutChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setLoadVideoTimeout", binaryMessenger: binaryMessenger, codec: codec) + let setLoadVideoTimeoutChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setLoadVideoTimeout", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setLoadVideoTimeoutChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let secondsArg = args[1] as! Double do { - try api.pigeonDelegate.setLoadVideoTimeout(pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) + try api.pigeonDelegate.setLoadVideoTimeout( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5096,14 +3844,17 @@ withIdentifier: pigeonIdentifierArg) } else { setLoadVideoTimeoutChannel.setMessageHandler(nil) } - let setPlayAdsAfterTimeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setPlayAdsAfterTime", binaryMessenger: binaryMessenger, codec: codec) + let setPlayAdsAfterTimeChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setPlayAdsAfterTime", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setPlayAdsAfterTimeChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let secondsArg = args[1] as! Double do { - try api.pigeonDelegate.setPlayAdsAfterTime(pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) + try api.pigeonDelegate.setPlayAdsAfterTime( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, seconds: secondsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5112,14 +3863,17 @@ withIdentifier: pigeonIdentifierArg) } else { setPlayAdsAfterTimeChannel.setMessageHandler(nil) } - let setUIElementsChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setUIElements", binaryMessenger: binaryMessenger, codec: codec) + let setUIElementsChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setUIElements", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setUIElementsChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let typesArg: [UIElementType]? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setUIElements(pigeonApi: api, pigeonInstance: pigeonInstanceArg, types: typesArg) + try api.pigeonDelegate.setUIElements( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, types: typesArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5128,14 +3882,17 @@ withIdentifier: pigeonIdentifierArg) } else { setUIElementsChannel.setMessageHandler(nil) } - let setEnablePreloadingChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setEnablePreloading", binaryMessenger: binaryMessenger, codec: codec) + let setEnablePreloadingChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setEnablePreloading", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setEnablePreloadingChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let enableArg = args[1] as! Bool do { - try api.pigeonDelegate.setEnablePreloading(pigeonApi: api, pigeonInstance: pigeonInstanceArg, enable: enableArg) + try api.pigeonDelegate.setEnablePreloading( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, enable: enableArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5144,14 +3901,18 @@ withIdentifier: pigeonIdentifierArg) } else { setEnablePreloadingChannel.setMessageHandler(nil) } - let setLinkOpenerPresentingControllerChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setLinkOpenerPresentingController", binaryMessenger: binaryMessenger, codec: codec) + let setLinkOpenerPresentingControllerChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.setLinkOpenerPresentingController", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setLinkOpenerPresentingControllerChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMAAdsRenderingSettings let controllerArg = args[1] as! UIViewController do { - try api.pigeonDelegate.setLinkOpenerPresentingController(pigeonApi: api, pigeonInstance: pigeonInstanceArg, controller: controllerArg) + try api.pigeonDelegate.setLinkOpenerPresentingController( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, controller: controllerArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5163,21 +3924,27 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMAAdsRenderingSettings and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdsRenderingSettings, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAdsRenderingSettings, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdsRenderingSettings.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -5195,217 +3962,43 @@ withIdentifier: pigeonIdentifierArg) } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMAAdsRenderingSettings`. -/// -/// 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 AdsRenderingSettingsProxyAPIDelegate : PigeonApiDelegateIMAAdsRenderingSettings { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAAdsRenderingSettings) throws -> IMAAdsRenderingSettings { - return IMAAdsRenderingSettings() - } - - func setMimeTypes(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, types: [String]?) throws { - pigeonInstance.mimeTypes = types - } - - func setBitrate(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, bitrate: Int64) throws { - pigeonInstance.bitrate = bitrate - } - - func setLoadVideoTimeout(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, seconds: Double) throws { - pigeonInstance.loadVideoTimeout = seconds - } - - func setPlayAdsAfterTime(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, seconds: Double) throws { - pigeonInstance.playAdsAfterTime = seconds - } - - func setUIElements(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, types: [UIElementType]?) throws { - pigeonInstance.uIElements = types - } - - func setEnablePreloading(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, enable: Bool) throws { - pigeonInstance.enablePreloading = enable - } - - func setLinkOpenerPresentingController(pigeonApi: PigeonApiIMAAdsRenderingSettings, pigeonInstance: IMAAdsRenderingSettings, controller: UIViewController) throws { - pigeonInstance.linkOpenerPresentingController = controller - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdsRenderingSettingsTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) - XCTAssertNotNil(instance) - } - - func testSetMimeTypes() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) - - let instance = TestAdsRenderingSettings() - let types = ["myString"] - try? api.pigeonDelegate.setMimeTypes(pigeonApi: api, pigeonInstance: instance, types: types) - - XCTAssertEqual(instance.setMimeTypesArgs, [types]) - } - - func testSetBitrate() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) - - let instance = TestAdsRenderingSettings() - let bitrate = 0 - try? api.pigeonDelegate.setBitrate(pigeonApi: api, pigeonInstance: instance, bitrate: bitrate) - - XCTAssertEqual(instance.setBitrateArgs, [bitrate]) - } - - func testSetLoadVideoTimeout() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) - - let instance = TestAdsRenderingSettings() - let seconds = 1.0 - try? api.pigeonDelegate.setLoadVideoTimeout(pigeonApi: api, pigeonInstance: instance, seconds: seconds) - - XCTAssertEqual(instance.setLoadVideoTimeoutArgs, [seconds]) - } - - func testSetPlayAdsAfterTime() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) - - let instance = TestAdsRenderingSettings() - let seconds = 1.0 - try? api.pigeonDelegate.setPlayAdsAfterTime(pigeonApi: api, pigeonInstance: instance, seconds: seconds) - - XCTAssertEqual(instance.setPlayAdsAfterTimeArgs, [seconds]) - } - - func testSetUIElements() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) - - let instance = TestAdsRenderingSettings() - let types = [.adAttribution] - try? api.pigeonDelegate.setUIElements(pigeonApi: api, pigeonInstance: instance, types: types) - - XCTAssertEqual(instance.setUIElementsArgs, [types]) - } - - func testSetEnablePreloading() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) - - let instance = TestAdsRenderingSettings() - let enable = true - try? api.pigeonDelegate.setEnablePreloading(pigeonApi: api, pigeonInstance: instance, enable: enable) - - XCTAssertEqual(instance.setEnablePreloadingArgs, [enable]) - } - - func testSetLinkOpenerPresentingController() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdsRenderingSettings(registrar) - - let instance = TestAdsRenderingSettings() - let controller = TestViewController - try? api.pigeonDelegate.setLinkOpenerPresentingController(pigeonApi: api, pigeonInstance: instance, controller: controller) - - XCTAssertEqual(instance.setLinkOpenerPresentingControllerArgs, [controller]) - } - -} -class TestAdsRenderingSettings: IMAAdsRenderingSettings { - var setMimeTypesArgs: [AnyHashable?]? = nil - var setBitrateArgs: [AnyHashable?]? = nil - var setLoadVideoTimeoutArgs: [AnyHashable?]? = nil - var setPlayAdsAfterTimeArgs: [AnyHashable?]? = nil - var setUIElementsArgs: [AnyHashable?]? = nil - var setEnablePreloadingArgs: [AnyHashable?]? = nil - var setLinkOpenerPresentingControllerArgs: [AnyHashable?]? = nil - - - override func setMimeTypes() { - setMimeTypesArgs = [types] - } - override func setBitrate() { - setBitrateArgs = [bitrate] - } - override func setLoadVideoTimeout() { - setLoadVideoTimeoutArgs = [seconds] - } - override func setPlayAdsAfterTime() { - setPlayAdsAfterTimeArgs = [seconds] - } - override func setUIElements() { - setUIElementsArgs = [types] - } - override func setEnablePreloading() { - setEnablePreloadingArgs = [enable] - } - override func setLinkOpenerPresentingController() { - setLinkOpenerPresentingControllerArgs = [controller] - } -} -*/ - open class PigeonApiDelegateNSObject { } protocol PigeonApiProtocolNSObject { } -final class PigeonApiNSObject: PigeonApiProtocolNSObject { +final class PigeonApiNSObject: PigeonApiProtocolNSObject { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateNSObject - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateNSObject) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateNSObject + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of NSObject and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: NSObject, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: NSObject, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.NSObject.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.NSObject.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -5425,23 +4018,30 @@ final class PigeonApiNSObject: PigeonApiProtocolNSObject { } protocol PigeonApiDelegateIMAFriendlyObstruction { /// Initializes a friendly obstruction. - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAFriendlyObstruction, view: UIView, purpose: FriendlyObstructionPurpose, detailedReason: String?) throws -> IMAFriendlyObstruction + func pigeonDefaultConstructor( + pigeonApi: PigeonApiIMAFriendlyObstruction, view: UIView, purpose: FriendlyObstructionPurpose, + detailedReason: String? + ) throws -> IMAFriendlyObstruction /// The view causing the obstruction. - func view(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> UIView + func view(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) + throws -> UIView /// The purpose for registering the obstruction as friendly. - func purpose(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> FriendlyObstructionPurpose + func purpose(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) + throws -> FriendlyObstructionPurpose /// Optional, detailed reasoning for registering this obstruction as friendly. /// /// If the detailedReason is not null, it must follow the IAB standard by /// being 50 characters or less and only containing characters A-z, 0-9, or /// spaces. - func detailedReason(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> String? + func detailedReason( + pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction + ) throws -> String? } protocol PigeonApiProtocolIMAFriendlyObstruction { } -final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruction { +final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruction { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAFriendlyObstruction ///An implementation of [NSObject] used to access callback methods @@ -5449,17 +4049,26 @@ final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruc return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAFriendlyObstruction) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAFriendlyObstruction + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAFriendlyObstruction?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMAFriendlyObstruction? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMAFriendlyObstruction.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMAFriendlyObstruction.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -5469,8 +4078,9 @@ final class PigeonApiIMAFriendlyObstruction: PigeonApiProtocolIMAFriendlyObstruc let detailedReasonArg: String? = nilOrValue(args[3]) do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, view: viewArg, purpose: purposeArg, detailedReason: detailedReasonArg), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor( + pigeonApi: api, view: viewArg, purpose: purposeArg, detailedReason: detailedReasonArg), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5482,144 +4092,56 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMAFriendlyObstruction and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAFriendlyObstruction, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAFriendlyObstruction, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let viewArg = try! pigeonDelegate.view(pigeonApi: self, pigeonInstance: pigeonInstance) let purposeArg = try! pigeonDelegate.purpose(pigeonApi: self, pigeonInstance: pigeonInstance) - let detailedReasonArg = try! pigeonDelegate.detailedReason(pigeonApi: self, pigeonInstance: pigeonInstance) + let detailedReasonArg = try! pigeonDelegate.detailedReason( + pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAFriendlyObstruction.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, viewArg, purposeArg, detailedReasonArg] as [Any?]) { response in + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAFriendlyObstruction.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, viewArg, purposeArg, detailedReasonArg] as [Any?]) { + response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String - let message: String? = nilOrValue(listResponse[1]) - let details: String? = nilOrValue(listResponse[2]) - completion(.failure(PigeonError(code: code, message: message, details: details))) - } else { - completion(.success(())) - } - } - } - } -} - -/* -// 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. - -import Foundation -import UIKit - - -/// ProxyApi implementation for `IMAFriendlyObstruction`. -/// -/// 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 FriendlyObstructionProxyAPIDelegate : PigeonApiDelegateIMAFriendlyObstruction { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMAFriendlyObstruction, view: UIView, purpose: FriendlyObstructionPurpose, detailedReason: String?) throws -> IMAFriendlyObstruction { - return IMAFriendlyObstruction() - } - - func view(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> UIView { - return pigeonInstance.view - } - - func purpose(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> FriendlyObstructionPurpose { - switch pigeonInstance.purpose { - case .mediaControls: - return .mediaControls - case .closeAd: - return .closeAd - case .notVisible: - return .notVisible - case .other: - return .other - @unknown default: - return .unknown - } - } - - func detailedReason(pigeonApi: PigeonApiIMAFriendlyObstruction, pigeonInstance: IMAFriendlyObstruction) throws -> String? { - return pigeonInstance.detailedReason - } - -} -*/ - -/* -// 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. - -import UIKit -import Flutter -import XCTest - -@testable import interactive_media_ads - -class FriendlyObstructionTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAFriendlyObstruction(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api view: TestView, purpose: .mediaControls, detailedReason: "myString") - XCTAssertNotNil(instance) - } - - func testView() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAFriendlyObstruction(registrar) - - let instance = TestFriendlyObstruction() - let value = try? api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.view) - } - - func testPurpose() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAFriendlyObstruction(registrar) - - let instance = TestFriendlyObstruction() - let value = try? api.pigeonDelegate.purpose(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.purpose) - } - - func testDetailedReason() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAFriendlyObstruction(registrar) - - let instance = TestFriendlyObstruction() - let value = try? api.pigeonDelegate.detailedReason(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.detailedReason) + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } } - } -*/ - protocol PigeonApiDelegateIMACompanionAd { /// The value for the resource of this companion. - func resourceValue(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> String? + func resourceValue(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws + -> String? /// The API needed to execute this ad, or nil if unavailable. - func apiFramework(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> String? + func apiFramework(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws + -> String? /// The width of the companion in pixels. /// /// 0 if unavailable. @@ -5633,7 +4155,7 @@ protocol PigeonApiDelegateIMACompanionAd { protocol PigeonApiProtocolIMACompanionAd { } -final class PigeonApiIMACompanionAd: PigeonApiProtocolIMACompanionAd { +final class PigeonApiIMACompanionAd: PigeonApiProtocolIMACompanionAd { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMACompanionAd ///An implementation of [NSObject] used to access callback methods @@ -5641,31 +4163,43 @@ final class PigeonApiIMACompanionAd: PigeonApiProtocolIMACompanionAd { return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMACompanionAd) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMACompanionAd + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMACompanionAd and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMACompanionAd, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMACompanionAd, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) - let resourceValueArg = try! pigeonDelegate.resourceValue(pigeonApi: self, pigeonInstance: pigeonInstance) - let apiFrameworkArg = try! pigeonDelegate.apiFramework(pigeonApi: self, pigeonInstance: pigeonInstance) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) + let resourceValueArg = try! pigeonDelegate.resourceValue( + pigeonApi: self, pigeonInstance: pigeonInstance) + let apiFrameworkArg = try! pigeonDelegate.apiFramework( + pigeonApi: self, pigeonInstance: pigeonInstance) let widthArg = try! pigeonDelegate.width(pigeonApi: self, pigeonInstance: pigeonInstance) let heightArg = try! pigeonDelegate.height(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionAd.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, resourceValueArg, apiFrameworkArg, widthArg, heightArg] as [Any?]) { response in + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMACompanionAd.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage( + [pigeonIdentifierArg, resourceValueArg, apiFrameworkArg, widthArg, heightArg] as [Any?] + ) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -5682,135 +4216,61 @@ final class PigeonApiIMACompanionAd: PigeonApiProtocolIMACompanionAd { } } } - -/* -// 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. - -import Foundation - - - -/// ProxyApi implementation for `IMACompanionAd`. -/// -/// 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 CompanionAdProxyAPIDelegate : PigeonApiDelegateIMACompanionAd { - func resourceValue(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> String? { - return pigeonInstance.resourceValue - } - - func apiFramework(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> String? { - return pigeonInstance.apiFramework - } - - func width(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> Int64 { - return pigeonInstance.width - } - - func height(pigeonApi: PigeonApiIMACompanionAd, pigeonInstance: IMACompanionAd) throws -> Int64 { - return pigeonInstance.height - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class CompanionAdProxyApiTests: XCTestCase { - func testResourceValue() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAd(registrar) - - let instance = TestCompanionAd() - let value = try? api.pigeonDelegate.resourceValue(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.resourceValue) - } - - func testApiFramework() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAd(registrar) - - let instance = TestCompanionAd() - let value = try? api.pigeonDelegate.apiFramework(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.apiFramework) - } - - func testWidth() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAd(registrar) - - let instance = TestCompanionAd() - let value = try? api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.width) - } - - func testHeight() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAd(registrar) - - let instance = TestCompanionAd() - let value = try? api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.height) - } - -} -*/ - protocol PigeonApiDelegateIMACompanionAdSlot { /// Initializes an instance of a IMACompanionAdSlot with fluid size. - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView) throws -> IMACompanionAdSlot + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView) throws + -> IMACompanionAdSlot /// Initializes an instance of a IMACompanionAdSlot with design ad width and /// height. /// /// `width` and `height` are in pixels. - func size(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView, width: Int64, height: Int64) throws -> IMACompanionAdSlot + func size(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView, width: Int64, height: Int64) + throws -> IMACompanionAdSlot /// The view the companion will be rendered in. /// /// Display this view in your application before video ad starts. - func view(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> UIView + func view(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws + -> UIView /// The IMACompanionDelegate for receiving events from the companion ad slot. /// /// This instance only creates a weak reference to the delegate, so the Dart /// instance should create an explicit reference to receive callbacks. - func setDelegate(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot, delegate: IMACompanionDelegate?) throws + func setDelegate( + pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot, + delegate: IMACompanionDelegate?) throws /// Width of the slot, in pixels. - func width(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> Int64 + func width(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws + -> Int64 /// Height of the slot, in pixels. - func height(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> Int64 + func height(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws + -> Int64 } protocol PigeonApiProtocolIMACompanionAdSlot { } -final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { +final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMACompanionAdSlot - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMACompanionAdSlot) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMACompanionAdSlot + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMACompanionAdSlot?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMACompanionAdSlot? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -5818,8 +4278,8 @@ final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { let viewArg = args[1] as! UIView do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, view: viewArg), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api, view: viewArg), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5828,7 +4288,9 @@ withIdentifier: pigeonIdentifierArg) } else { pigeonDefaultConstructorChannel.setMessageHandler(nil) } - let sizeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.size", binaryMessenger: binaryMessenger, codec: codec) + let sizeChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.size", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { sizeChannel.setMessageHandler { message, reply in let args = message as! [Any?] @@ -5838,8 +4300,9 @@ withIdentifier: pigeonIdentifierArg) let heightArg = args[3] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.size(pigeonApi: api, view: viewArg, width: widthArg, height: heightArg), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.size( + pigeonApi: api, view: viewArg, width: widthArg, height: heightArg), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5848,14 +4311,17 @@ withIdentifier: pigeonIdentifierArg) } else { sizeChannel.setMessageHandler(nil) } - let setDelegateChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.setDelegate", binaryMessenger: binaryMessenger, codec: codec) + let setDelegateChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.setDelegate", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { setDelegateChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMACompanionAdSlot let delegateArg: IMACompanionDelegate? = nilOrValue(args[1]) do { - try api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) + try api.pigeonDelegate.setDelegate( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, delegate: delegateArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -5864,13 +4330,16 @@ withIdentifier: pigeonIdentifierArg) } else { setDelegateChannel.setMessageHandler(nil) } - let widthChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.width", binaryMessenger: binaryMessenger, codec: codec) + let widthChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.width", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { widthChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMACompanionAdSlot do { - let result = try api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.width( + pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -5879,13 +4348,16 @@ withIdentifier: pigeonIdentifierArg) } else { widthChannel.setMessageHandler(nil) } - let heightChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.height", binaryMessenger: binaryMessenger, codec: codec) + let heightChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.height", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { heightChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonInstanceArg = args[0] as! IMACompanionAdSlot do { - let result = try api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: pigeonInstanceArg) + let result = try api.pigeonDelegate.height( + pigeonApi: api, pigeonInstance: pigeonInstanceArg) reply(wrapResult(result)) } catch { reply(wrapError(error)) @@ -5897,22 +4369,27 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMACompanionAdSlot and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMACompanionAdSlot, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMACompanionAdSlot, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let viewArg = try! pigeonDelegate.view(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMACompanionAdSlot.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg, viewArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -5930,155 +4407,24 @@ withIdentifier: pigeonIdentifierArg) } } } - -/* -// 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. - -import Foundation -import UIKit - - -/// ProxyApi implementation for `IMACompanionAdSlot`. -/// -/// 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 CompanionAdSlotProxyAPIDelegate : PigeonApiDelegateIMACompanionAdSlot { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView) throws -> IMACompanionAdSlot { - return IMACompanionAdSlot() - } - - func size(pigeonApi: PigeonApiIMACompanionAdSlot, view: UIView, width: Int64, height: Int64) throws -> IMACompanionAdSlot { - return IMACompanionAdSlot(,width: width, height: height) - } - - func view(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> UIView { - return pigeonInstance.view - } - - func setDelegate(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot, delegate: IMACompanionDelegate?) throws { - pigeonInstance.delegate = delegate - } - - func width(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> Int64 { - return pigeonInstance.width() - } - - func height(pigeonApi: PigeonApiIMACompanionAdSlot, pigeonInstance: IMACompanionAdSlot) throws -> Int64 { - return pigeonInstance.height() - } - -} -*/ - -/* -// 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. - -import UIKit -import Flutter -import XCTest - -@testable import interactive_media_ads - -class CompanionAdSlotProxyApiTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api view: TestView) - XCTAssertNotNil(instance) - } - - func testSize() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) - - let instance = try? api.pigeonDelegate.size(pigeonApi: api, view: TestView, width: 0, height: 0) - XCTAssertNotNil(instance) - } - - func testView() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) - - let instance = TestCompanionAdSlot() - let value = try? api.pigeonDelegate.view(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.view) - } - - func testSetDelegate() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) - - let instance = TestCompanionAdSlot() - let delegate = TestCompanionDelegate - try? api.pigeonDelegate.setDelegate(pigeonApi: api, pigeonInstance: instance, delegate: delegate) - - XCTAssertEqual(instance.setDelegateArgs, [delegate]) - } - - func testWidth() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) - - let instance = TestCompanionAdSlot() - let value = try? api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.widthCalled) - XCTAssertEqual(value, instance.width()) - } - - func testHeight() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionAdSlot(registrar) - - let instance = TestCompanionAdSlot() - let value = try? api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: instance ) - - XCTAssertTrue(instance.heightCalled) - XCTAssertEqual(value, instance.height()) - } - -} -class TestCompanionAdSlot: IMACompanionAdSlot { - private var viewTestValue = TestView - var setDelegateArgs: [AnyHashable?]? = nil - var widthCalled = false - var heightCalled = false - - override var view: UIView { - return viewTestValue - } - - override func setDelegate() { - setDelegateArgs = [delegate] - } - override func width() { - widthCalled = true - } - override func height() { - heightCalled = true - } -} -*/ - protocol PigeonApiDelegateIMACompanionDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionDelegate) throws -> IMACompanionDelegate + func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionDelegate) throws + -> IMACompanionDelegate } protocol PigeonApiProtocolIMACompanionDelegate { /// Called when the slot is either filled or not filled. - func companionAdSlotFilled(pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, filled filledArg: Bool, completion: @escaping (Result) -> Void) + func companionAdSlotFilled( + pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, + filled filledArg: Bool, completion: @escaping (Result) -> Void) /// Called when the slot is clicked on by the user and will successfully /// navigate away. - func companionSlotWasClicked(pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, completion: @escaping (Result) -> Void) + func companionSlotWasClicked( + pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, + completion: @escaping (Result) -> Void) } -final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate { +final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMACompanionDelegate ///An implementation of [NSObject] used to access callback methods @@ -6086,25 +4432,34 @@ final class PigeonApiIMACompanionDelegate: PigeonApiProtocolIMACompanionDelegate return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) } - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMACompanionDelegate) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMACompanionDelegate + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } - static func setUpMessageHandlers(binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMACompanionDelegate?) { + static func setUpMessageHandlers( + binaryMessenger: FlutterBinaryMessenger, api: PigeonApiIMACompanionDelegate? + ) { let codec: FlutterStandardMessageCodec = api != nil ? FlutterStandardMessageCodec( - readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter(pigeonRegistrar: api!.pigeonRegistrar)) + readerWriter: InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter( + pigeonRegistrar: api!.pigeonRegistrar)) : FlutterStandardMessageCodec.sharedInstance() - let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.pigeon_defaultConstructor", binaryMessenger: binaryMessenger, codec: codec) + let pigeonDefaultConstructorChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.pigeon_defaultConstructor", + binaryMessenger: binaryMessenger, codec: codec) if let api = api { pigeonDefaultConstructorChannel.setMessageHandler { message, reply in let args = message as! [Any?] let pigeonIdentifierArg = args[0] as! Int64 do { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( -try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), -withIdentifier: pigeonIdentifierArg) + try api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api), + withIdentifier: pigeonIdentifierArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) @@ -6116,21 +4471,26 @@ withIdentifier: pigeonIdentifierArg) } ///Creates a Dart instance of IMACompanionDelegate and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMACompanionDelegate, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMACompanionDelegate, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonIdentifierArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -6148,7 +4508,10 @@ withIdentifier: pigeonIdentifierArg) } } /// Called when the slot is either filled or not filled. - func companionAdSlotFilled(pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, filled filledArg: Bool, completion: @escaping (Result) -> Void) { + func companionAdSlotFilled( + pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, + filled filledArg: Bool, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -6159,8 +4522,10 @@ withIdentifier: pigeonIdentifierArg) } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.companionAdSlotFilled" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.companionAdSlotFilled" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, slotArg, filledArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -6179,7 +4544,10 @@ withIdentifier: pigeonIdentifierArg) /// Called when the slot is clicked on by the user and will successfully /// navigate away. - func companionSlotWasClicked(pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, completion: @escaping (Result) -> Void) { + func companionSlotWasClicked( + pigeonInstance pigeonInstanceArg: IMACompanionDelegate, slot slotArg: IMACompanionAdSlot, + completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( @@ -6190,8 +4558,10 @@ withIdentifier: pigeonIdentifierArg) } let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.companionSlotWasClicked" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMACompanionDelegate.companionSlotWasClicked" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([pigeonInstanceArg, slotArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) @@ -6209,97 +4579,6 @@ withIdentifier: pigeonIdentifierArg) } } - -/* -// 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. - -import Foundation - - -/// Implementation of `IMACompanionDelegate` that calls to Dart in callback methods. -class CompanionDelegateImpl: IMACompanionDelegate { - let api: PigeonApiProtocolIMACompanionDelegate - - init(api: PigeonApiProtocolIMACompanionDelegate) { - self.api = api - } - - func fixMe() { - api.companionAdSlotFilled(pigeonInstance: self, slot: slot, filled: filled) { _ in } - } - - func fixMe() { - api.companionSlotWasClicked(pigeonInstance: self, slot: slot) { _ in } - } -} - -/// ProxyApi implementation for `IMACompanionDelegate`. -/// -/// 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 CompanionDelegateProxyAPIDelegate : PigeonApiDelegateIMACompanionDelegate { - func pigeonDefaultConstructor(pigeonApi: PigeonApiIMACompanionDelegate) throws -> IMACompanionDelegate { - return IMACompanionDelegateImpl(api: pigeonApi) - } - -} -*/ - -/* -// 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. - - -import Flutter -import XCTest - -@testable import interactive_media_ads - -class CompanionDelegateProxyApiTests: XCTestCase { - func testPigeonDefaultConstructor() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMACompanionDelegate(registrar) - - let instance = try? api.pigeonDelegate.pigeonDefaultConstructor(pigeonApi: api ) - XCTAssertNotNil(instance) - } - - func testCompanionAdSlotFilled() { - let api = TestCompanionDelegateApi() - let instance = CompanionDelegateImpl(api: api) - let slot = TestCompanionAdSlot - let filled = true - instance.companionAdSlotFilled(slot: slot, filled: filled) - - XCTAssertEqual(api.companionAdSlotFilledArgs, [slot, filled]) - } - - func testCompanionSlotWasClicked() { - let api = TestCompanionDelegateApi() - let instance = CompanionDelegateImpl(api: api) - let slot = TestCompanionAdSlot - instance.companionSlotWasClicked(slot: slot) - - XCTAssertEqual(api.companionSlotWasClickedArgs, [slot]) - } - -} -class TestCompanionDelegateApi: PigeonApiProtocolIMACompanionDelegate { - var companionAdSlotFilledArgs: [AnyHashable?]? = nil - var companionSlotWasClickedArgs: [AnyHashable?]? = nil - - func companionAdSlotFilled(slot: IMACompanionAdSlot, filled: Bool) throws { - companionAdSlotFilledArgs = [slotArg, filledArg] - } - func companionSlotWasClicked(slot: IMACompanionAdSlot) throws { - companionSlotWasClickedArgs = [slotArg] - } -} -*/ - protocol PigeonApiDelegateIMAAdPodInfo { /// The position of this ad within an ad pod. /// @@ -6341,169 +4620,71 @@ protocol PigeonApiDelegateIMAAdPodInfo { protocol PigeonApiProtocolIMAAdPodInfo { } -final class PigeonApiIMAAdPodInfo: PigeonApiProtocolIMAAdPodInfo { - unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar - let pigeonDelegate: PigeonApiDelegateIMAAdPodInfo - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdPodInfo) { - self.pigeonRegistrar = pigeonRegistrar - self.pigeonDelegate = delegate - } - ///Creates a Dart instance of IMAAdPodInfo and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAdPodInfo, completion: @escaping (Result) -> Void) { - if pigeonRegistrar.ignoreCallsToDart { - completion( - .failure( - PigeonError( - code: "ignore-calls-error", - message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { - completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) - let adPositionArg = try! pigeonDelegate.adPosition(pigeonApi: self, pigeonInstance: pigeonInstance) - let maxDurationArg = try! pigeonDelegate.maxDuration(pigeonApi: self, pigeonInstance: pigeonInstance) - let podIndexArg = try! pigeonDelegate.podIndex(pigeonApi: self, pigeonInstance: pigeonInstance) - let timeOffsetArg = try! pigeonDelegate.timeOffset(pigeonApi: self, pigeonInstance: pigeonInstance) - let totalAdsArg = try! pigeonDelegate.totalAds(pigeonApi: self, pigeonInstance: pigeonInstance) - let isBumperArg = try! pigeonDelegate.isBumper(pigeonApi: self, pigeonInstance: pigeonInstance) - let binaryMessenger = pigeonRegistrar.binaryMessenger - let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdPodInfo.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, adPositionArg, maxDurationArg, podIndexArg, timeOffsetArg, totalAdsArg, isBumperArg] as [Any?]) { response in - guard let listResponse = response as? [Any?] else { - completion(.failure(createConnectionError(withChannelName: channelName))) - return - } - if listResponse.count > 1 { - let code: String = listResponse[0] as! String - let message: String? = nilOrValue(listResponse[1]) - let details: String? = nilOrValue(listResponse[2]) - completion(.failure(PigeonError(code: code, message: message, details: details))) - } else { - completion(.success(())) - } - } - } - } -} - -/* -// 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. - -import Foundation -import GoogleInteractiveMediaAds - - -/// ProxyApi implementation for `IMAAdPodInfo`. -/// -/// 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 AdPodInfoProxyAPIDelegate : PigeonApiDelegateIMAAdPodInfo { - func adPosition(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Int64 { - return pigeonInstance.adPosition - } - - func maxDuration(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Double { - return pigeonInstance.maxDuration - } - - func podIndex(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Int64 { - return pigeonInstance.podIndex - } - - func timeOffset(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Double { - return pigeonInstance.timeOffset - } - - func totalAds(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Int64 { - return pigeonInstance.totalAds - } - - func isBumper(pigeonApi: PigeonApiIMAAdPodInfo, pigeonInstance: IMAAdPodInfo) throws -> Bool { - return pigeonInstance.isBumper - } - -} -*/ - -/* -// 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. - -import GoogleInteractiveMediaAds -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdPodInfoProxyAPITests: XCTestCase { - func testAdPosition() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) - - let instance = TestAdPodInfo() - let value = try? api.pigeonDelegate.adPosition(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adPosition) - } - - func testMaxDuration() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) - - let instance = TestAdPodInfo() - let value = try? api.pigeonDelegate.maxDuration(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.maxDuration) - } - - func testPodIndex() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) - - let instance = TestAdPodInfo() - let value = try? api.pigeonDelegate.podIndex(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.podIndex) - } - - func testTimeOffset() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) - - let instance = TestAdPodInfo() - let value = try? api.pigeonDelegate.timeOffset(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.timeOffset) - } - - func testTotalAds() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) - - let instance = TestAdPodInfo() - let value = try? api.pigeonDelegate.totalAds(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.totalAds) - } - - func testIsBumper() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAdPodInfo(registrar) - - let instance = TestAdPodInfo() - let value = try? api.pigeonDelegate.isBumper(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.isBumper) +final class PigeonApiIMAAdPodInfo: PigeonApiProtocolIMAAdPodInfo { + unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar + let pigeonDelegate: PigeonApiDelegateIMAAdPodInfo + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAdPodInfo + ) { + self.pigeonRegistrar = pigeonRegistrar + self.pigeonDelegate = delegate + } + ///Creates a Dart instance of IMAAdPodInfo and attaches it to [pigeonInstance]. + func pigeonNewInstance( + pigeonInstance: IMAAdPodInfo, completion: @escaping (Result) -> Void + ) { + if pigeonRegistrar.ignoreCallsToDart { + completion( + .failure( + PigeonError( + code: "ignore-calls-error", + message: "Calls to Dart are being ignored.", details: ""))) + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + completion(.success(())) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) + let adPositionArg = try! pigeonDelegate.adPosition( + pigeonApi: self, pigeonInstance: pigeonInstance) + let maxDurationArg = try! pigeonDelegate.maxDuration( + pigeonApi: self, pigeonInstance: pigeonInstance) + let podIndexArg = try! pigeonDelegate.podIndex( + pigeonApi: self, pigeonInstance: pigeonInstance) + let timeOffsetArg = try! pigeonDelegate.timeOffset( + pigeonApi: self, pigeonInstance: pigeonInstance) + let totalAdsArg = try! pigeonDelegate.totalAds( + pigeonApi: self, pigeonInstance: pigeonInstance) + let isBumperArg = try! pigeonDelegate.isBumper( + pigeonApi: self, pigeonInstance: pigeonInstance) + let binaryMessenger = pigeonRegistrar.binaryMessenger + let codec = pigeonRegistrar.codec + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAAdPodInfo.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage( + [ + pigeonIdentifierArg, adPositionArg, maxDurationArg, podIndexArg, timeOffsetArg, + totalAdsArg, isBumperArg, + ] as [Any?] + ) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PigeonError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } } - } -*/ - protocol PigeonApiDelegateIMAAd { /// The ad ID as specified in the VAST response. func adId(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String @@ -6588,57 +4769,95 @@ protocol PigeonApiDelegateIMAAd { protocol PigeonApiProtocolIMAAd { } -final class PigeonApiIMAAd: PigeonApiProtocolIMAAd { +final class PigeonApiIMAAd: PigeonApiProtocolIMAAd { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAd - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAd) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAAd + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAAd and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAAd, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAAd, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) let adIdArg = try! pigeonDelegate.adId(pigeonApi: self, pigeonInstance: pigeonInstance) let adTitleArg = try! pigeonDelegate.adTitle(pigeonApi: self, pigeonInstance: pigeonInstance) - let adDescriptionArg = try! pigeonDelegate.adDescription(pigeonApi: self, pigeonInstance: pigeonInstance) - let adSystemArg = try! pigeonDelegate.adSystem(pigeonApi: self, pigeonInstance: pigeonInstance) - let companionAdsArg = try! pigeonDelegate.companionAds(pigeonApi: self, pigeonInstance: pigeonInstance) - let contentTypeArg = try! pigeonDelegate.contentType(pigeonApi: self, pigeonInstance: pigeonInstance) - let durationArg = try! pigeonDelegate.duration(pigeonApi: self, pigeonInstance: pigeonInstance) - let uiElementsArg = try! pigeonDelegate.uiElements(pigeonApi: self, pigeonInstance: pigeonInstance) + let adDescriptionArg = try! pigeonDelegate.adDescription( + pigeonApi: self, pigeonInstance: pigeonInstance) + let adSystemArg = try! pigeonDelegate.adSystem( + pigeonApi: self, pigeonInstance: pigeonInstance) + let companionAdsArg = try! pigeonDelegate.companionAds( + pigeonApi: self, pigeonInstance: pigeonInstance) + let contentTypeArg = try! pigeonDelegate.contentType( + pigeonApi: self, pigeonInstance: pigeonInstance) + let durationArg = try! pigeonDelegate.duration( + pigeonApi: self, pigeonInstance: pigeonInstance) + let uiElementsArg = try! pigeonDelegate.uiElements( + pigeonApi: self, pigeonInstance: pigeonInstance) let widthArg = try! pigeonDelegate.width(pigeonApi: self, pigeonInstance: pigeonInstance) let heightArg = try! pigeonDelegate.height(pigeonApi: self, pigeonInstance: pigeonInstance) - let vastMediaWidthArg = try! pigeonDelegate.vastMediaWidth(pigeonApi: self, pigeonInstance: pigeonInstance) - let vastMediaHeightArg = try! pigeonDelegate.vastMediaHeight(pigeonApi: self, pigeonInstance: pigeonInstance) - let vastMediaBitrateArg = try! pigeonDelegate.vastMediaBitrate(pigeonApi: self, pigeonInstance: pigeonInstance) - let isLinearArg = try! pigeonDelegate.isLinear(pigeonApi: self, pigeonInstance: pigeonInstance) - let isSkippableArg = try! pigeonDelegate.isSkippable(pigeonApi: self, pigeonInstance: pigeonInstance) - let skipTimeOffsetArg = try! pigeonDelegate.skipTimeOffset(pigeonApi: self, pigeonInstance: pigeonInstance) - let adPodInfoArg = try! pigeonDelegate.adPodInfo(pigeonApi: self, pigeonInstance: pigeonInstance) - let traffickingParametersArg = try! pigeonDelegate.traffickingParameters(pigeonApi: self, pigeonInstance: pigeonInstance) - let creativeIDArg = try! pigeonDelegate.creativeID(pigeonApi: self, pigeonInstance: pigeonInstance) - let creativeAdIDArg = try! pigeonDelegate.creativeAdID(pigeonApi: self, pigeonInstance: pigeonInstance) - let universalAdIDsArg = try! pigeonDelegate.universalAdIDs(pigeonApi: self, pigeonInstance: pigeonInstance) - let advertiserNameArg = try! pigeonDelegate.advertiserName(pigeonApi: self, pigeonInstance: pigeonInstance) - let surveyURLArg = try! pigeonDelegate.surveyURL(pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaWidthArg = try! pigeonDelegate.vastMediaWidth( + pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaHeightArg = try! pigeonDelegate.vastMediaHeight( + pigeonApi: self, pigeonInstance: pigeonInstance) + let vastMediaBitrateArg = try! pigeonDelegate.vastMediaBitrate( + pigeonApi: self, pigeonInstance: pigeonInstance) + let isLinearArg = try! pigeonDelegate.isLinear( + pigeonApi: self, pigeonInstance: pigeonInstance) + let isSkippableArg = try! pigeonDelegate.isSkippable( + pigeonApi: self, pigeonInstance: pigeonInstance) + let skipTimeOffsetArg = try! pigeonDelegate.skipTimeOffset( + pigeonApi: self, pigeonInstance: pigeonInstance) + let adPodInfoArg = try! pigeonDelegate.adPodInfo( + pigeonApi: self, pigeonInstance: pigeonInstance) + let traffickingParametersArg = try! pigeonDelegate.traffickingParameters( + pigeonApi: self, pigeonInstance: pigeonInstance) + let creativeIDArg = try! pigeonDelegate.creativeID( + pigeonApi: self, pigeonInstance: pigeonInstance) + let creativeAdIDArg = try! pigeonDelegate.creativeAdID( + pigeonApi: self, pigeonInstance: pigeonInstance) + let universalAdIDsArg = try! pigeonDelegate.universalAdIDs( + pigeonApi: self, pigeonInstance: pigeonInstance) + let advertiserNameArg = try! pigeonDelegate.advertiserName( + pigeonApi: self, pigeonInstance: pigeonInstance) + let surveyURLArg = try! pigeonDelegate.surveyURL( + pigeonApi: self, pigeonInstance: pigeonInstance) let dealIDArg = try! pigeonDelegate.dealID(pigeonApi: self, pigeonInstance: pigeonInstance) - let wrapperAdIDsArg = try! pigeonDelegate.wrapperAdIDs(pigeonApi: self, pigeonInstance: pigeonInstance) - let wrapperCreativeIDsArg = try! pigeonDelegate.wrapperCreativeIDs(pigeonApi: self, pigeonInstance: pigeonInstance) - let wrapperSystemsArg = try! pigeonDelegate.wrapperSystems(pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperAdIDsArg = try! pigeonDelegate.wrapperAdIDs( + pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperCreativeIDsArg = try! pigeonDelegate.wrapperCreativeIDs( + pigeonApi: self, pigeonInstance: pigeonInstance) + let wrapperSystemsArg = try! pigeonDelegate.wrapperSystems( + pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAd.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, adIdArg, adTitleArg, adDescriptionArg, adSystemArg, companionAdsArg, contentTypeArg, durationArg, uiElementsArg, widthArg, heightArg, vastMediaWidthArg, vastMediaHeightArg, vastMediaBitrateArg, isLinearArg, isSkippableArg, skipTimeOffsetArg, adPodInfoArg, traffickingParametersArg, creativeIDArg, creativeAdIDArg, universalAdIDsArg, advertiserNameArg, surveyURLArg, dealIDArg, wrapperAdIDsArg, wrapperCreativeIDsArg, wrapperSystemsArg] as [Any?]) { response in + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage( + [ + pigeonIdentifierArg, adIdArg, adTitleArg, adDescriptionArg, adSystemArg, companionAdsArg, + contentTypeArg, durationArg, uiElementsArg, widthArg, heightArg, vastMediaWidthArg, + vastMediaHeightArg, vastMediaBitrateArg, isLinearArg, isSkippableArg, skipTimeOffsetArg, + adPodInfoArg, traffickingParametersArg, creativeIDArg, creativeAdIDArg, universalAdIDsArg, + advertiserNameArg, surveyURLArg, dealIDArg, wrapperAdIDsArg, wrapperCreativeIDsArg, + wrapperSystemsArg, + ] as [Any?] + ) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -6655,457 +4874,59 @@ final class PigeonApiIMAAd: PigeonApiProtocolIMAAd { } } } - -/* -// 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. - -import Foundation -import GoogleInteractiveMediaAds - - -/// ProxyApi implementation for `IMAAd`. -/// -/// 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 AdProxyAPIDelegate : PigeonApiDelegateIMAAd { - func adId(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.adId - } - - func adTitle(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.adTitle - } - - func adDescription(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.adDescription - } - - func adSystem(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.adSystem - } - - func companionAds(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMACompanionAd] { - return pigeonInstance.companionAds - } - - func contentType(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.contentType - } - - func duration(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Double { - return pigeonInstance.duration - } - - func uiElements(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [UIElementType] { - return pigeonInstance.uiElements - } - - func width(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { - return pigeonInstance.width - } - - func height(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { - return pigeonInstance.height - } - - func vastMediaWidth(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { - return pigeonInstance.vastMediaWidth - } - - func vastMediaHeight(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { - return pigeonInstance.vastMediaHeight - } - - func vastMediaBitrate(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { - return pigeonInstance.vastMediaBitrate - } - - func isLinear(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Bool { - return pigeonInstance.isLinear - } - - func isSkippable(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Bool { - return pigeonInstance.isSkippable - } - - func skipTimeOffset(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Double { - return pigeonInstance.skipTimeOffset - } - - func adPodInfo(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> IMAAdPodInfo { - return pigeonInstance.adPodInfo - } - - func traffickingParameters(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.traffickingParameters - } - - func creativeID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.creativeID - } - - func creativeAdID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.creativeAdID - } - - func universalAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMAUniversalAdID] { - return pigeonInstance.universalAdIDs - } - - func advertiserName(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.advertiserName - } - - func surveyURL(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String? { - return pigeonInstance.surveyURL - } - - func dealID(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { - return pigeonInstance.dealID - } - - func wrapperAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { - return pigeonInstance.wrapperAdIDs - } - - func wrapperCreativeIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { - return pigeonInstance.wrapperCreativeIDs - } - - func wrapperSystems(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [String] { - return pigeonInstance.wrapperSystems - } - -} -*/ - -/* -// 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. - -import GoogleInteractiveMediaAds -import Flutter -import XCTest - -@testable import interactive_media_ads - -class AdProxyAPITests: XCTestCase { - func testAdId() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.adId(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adId) - } - - func testAdTitle() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.adTitle(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adTitle) - } - - func testAdDescription() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.adDescription(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adDescription) - } - - func testAdSystem() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.adSystem(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adSystem) - } - - func testCompanionAds() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.companionAds) - } - - func testContentType() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.contentType(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.contentType) - } - - func testDuration() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.duration(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.duration) - } - - func testUiElements() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.uiElements(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.uiElements) - } - - func testWidth() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.width(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.width) - } - - func testHeight() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.height(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.height) - } - - func testVastMediaWidth() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.vastMediaWidth(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.vastMediaWidth) - } - - func testVastMediaHeight() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.vastMediaHeight(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.vastMediaHeight) - } - - func testVastMediaBitrate() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.vastMediaBitrate(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.vastMediaBitrate) - } - - func testIsLinear() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.isLinear(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.isLinear) - } - - func testIsSkippable() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.isSkippable(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.isSkippable) - } - - func testSkipTimeOffset() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.skipTimeOffset(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.skipTimeOffset) - } - - func testAdPodInfo() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.adPodInfo(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adPodInfo) - } - - func testTraffickingParameters() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.traffickingParameters(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.traffickingParameters) - } - - func testCreativeID() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.creativeID(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.creativeID) - } - - func testCreativeAdID() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.creativeAdID(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.creativeAdID) - } - - func testUniversalAdIDs() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.universalAdIDs) - } - - func testAdvertiserName() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.advertiserName(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.advertiserName) - } - - func testSurveyURL() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.surveyURL(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.surveyURL) - } - - func testDealID() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.dealID(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.dealID) - } - - func testWrapperAdIDs() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.wrapperAdIDs(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.wrapperAdIDs) - } - - func testWrapperCreativeIDs() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.wrapperCreativeIDs(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.wrapperCreativeIDs) - } - - func testWrapperSystems() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd() - let value = try? api.pigeonDelegate.wrapperSystems(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.wrapperSystems) - } - -} -*/ - protocol PigeonApiDelegateIMAUniversalAdID { /// The universal ad ID value. /// /// This will be “unknown” if it isn’t defined by the ad. - func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String + func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws + -> String /// The universal ad ID registry with which the value is registered. /// /// This will be “unknown” if it isn’t defined by the ad. - func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String + func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws + -> String } protocol PigeonApiProtocolIMAUniversalAdID { } -final class PigeonApiIMAUniversalAdID: PigeonApiProtocolIMAUniversalAdID { +final class PigeonApiIMAUniversalAdID: PigeonApiProtocolIMAUniversalAdID { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAUniversalAdID - init(pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAUniversalAdID) { + init( + pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, + delegate: PigeonApiDelegateIMAUniversalAdID + ) { self.pigeonRegistrar = pigeonRegistrar self.pigeonDelegate = delegate } ///Creates a Dart instance of IMAUniversalAdID and attaches it to [pigeonInstance]. - func pigeonNewInstance(pigeonInstance: IMAUniversalAdID, completion: @escaping (Result) -> Void) { + func pigeonNewInstance( + pigeonInstance: IMAUniversalAdID, completion: @escaping (Result) -> Void + ) { if pigeonRegistrar.ignoreCallsToDart { completion( .failure( PigeonError( code: "ignore-calls-error", message: "Calls to Dart are being ignored.", details: ""))) - } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { + } else if pigeonRegistrar.instanceManager.containsInstance(pigeonInstance as AnyObject) { completion(.success(())) - } else { - let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeonInstance as AnyObject) - let adIDValueArg = try! pigeonDelegate.adIDValue(pigeonApi: self, pigeonInstance: pigeonInstance) - let adIDRegistryArg = try! pigeonDelegate.adIDRegistry(pigeonApi: self, pigeonInstance: pigeonInstance) + } else { + let pigeonIdentifierArg = pigeonRegistrar.instanceManager.addHostCreatedInstance( + pigeonInstance as AnyObject) + let adIDValueArg = try! pigeonDelegate.adIDValue( + pigeonApi: self, pigeonInstance: pigeonInstance) + let adIDRegistryArg = try! pigeonDelegate.adIDRegistry( + pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec - let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance" - let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, adIDValueArg, adIDRegistryArg] as [Any?]) { response in + let channelName: String = + "dev.flutter.pigeon.interactive_media_ads.IMAUniversalAdID.pigeon_newInstance" + let channel = FlutterBasicMessageChannel( + name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([pigeonIdentifierArg, adIDValueArg, adIDRegistryArg] as [Any?]) { + response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return @@ -7122,64 +4943,3 @@ final class PigeonApiIMAUniversalAdID: PigeonApiProtocolIMAUniversalAdID { } } } - -/* -// 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. - -import Foundation -import GoogleInteractiveMediaAds - - -/// ProxyApi implementation for `IMAUniversalAdID`. -/// -/// 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 UniversalAdIDProxyAPIDelegate : PigeonApiDelegateIMAUniversalAdID { - func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String { - return pigeonInstance.adIDValue - } - - func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String { - return pigeonInstance.adIDRegistry - } - -} -*/ - -/* -// 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. - -import GoogleInteractiveMediaAds -import Flutter -import XCTest - -@testable import interactive_media_ads - -class UniversalAdIDProxyAPITests: XCTestCase { - func testAdIDValue() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAUniversalAdID(registrar) - - let instance = TestUniversalAdID() - let value = try? api.pigeonDelegate.adIDValue(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adIDValue) - } - - func testAdIDRegistry() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAUniversalAdID(registrar) - - let instance = TestUniversalAdID() - let value = try? api.pigeonDelegate.adIDRegistry(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adIDRegistry) - } - -} -*/ - diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/ProxyApiDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/ProxyApiDelegate.swift index bec580938d5..63e83d1f1e5 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/ProxyApiDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/ProxyApiDelegate.swift @@ -165,12 +165,17 @@ open class ProxyApiDelegate: InteractiveMediaAdsLibraryPigeonProxyApiDelegate { { return PigeonApiIMASettings(pigeonRegistrar: registrar, delegate: SettingsProxyAPIDelegate()) } - - func pigeonApiIMAAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAAd { + + func pigeonApiIMAAd(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAAd + { return PigeonApiIMAAd(pigeonRegistrar: registrar, delegate: AdProxyAPIDelegate()) } - - func pigeonApiIMAUniversalAdID(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) -> PigeonApiIMAUniversalAdID { - return PigeonApiIMAUniversalAdID(pigeonRegistrar: registrar, delegate: UniversalAdIDProxyAPIDelegate()) + + func pigeonApiIMAUniversalAdID(_ registrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar) + -> PigeonApiIMAUniversalAdID + { + return PigeonApiIMAUniversalAdID( + pigeonRegistrar: registrar, delegate: UniversalAdIDProxyAPIDelegate()) } } diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/UniversalAdIDProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/UniversalAdIDProxyAPIDelegate.swift index a1f9ec432e6..7230829bb8e 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/UniversalAdIDProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/UniversalAdIDProxyAPIDelegate.swift @@ -5,17 +5,20 @@ import Foundation import GoogleInteractiveMediaAds - /// ProxyApi implementation for `IMAUniversalAdID`. /// /// 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 UniversalAdIDProxyAPIDelegate : PigeonApiDelegateIMAUniversalAdID { - func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String { +class UniversalAdIDProxyAPIDelegate: PigeonApiDelegateIMAUniversalAdID { + func adIDValue(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws + -> String + { return pigeonInstance.adIDValue } - func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws -> String { + func adIDRegistry(pigeonApi: PigeonApiIMAUniversalAdID, pigeonInstance: IMAUniversalAdID) throws + -> String + { return pigeonInstance.adIDRegistry } } diff --git a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart index b1f274e5bdd..4460be7fa78 100644 --- a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart +++ b/packages/interactive_media_ads/lib/src/ios/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 (v26.0.0), do not edit directly. +// Autogenerated from Pigeon (v26.0.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 @@ -9,7 +9,8 @@ import 'dart:async'; import 'dart:io' show Platform; import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; -import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer, immutable, protected, visibleForTesting; +import 'package:flutter/foundation.dart' + show ReadBuffer, WriteBuffer, immutable, protected, visibleForTesting; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart' show WidgetsFlutterBinding; @@ -20,7 +21,8 @@ PlatformException _createConnectionError(String channelName) { ); } -List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { +List wrapResponse( + {Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } @@ -29,8 +31,9 @@ List wrapResponse({Object? result, PlatformException? error, bool empty } return [error.code, error.message, error.details]; } -/// Provides overrides for the constructors and static members of each proxy -/// API. + +/// Provides overrides for the constructors and static members of each +/// Dart proxy class. /// /// This is only intended to be used with unit tests to prevent errors from /// making message calls in a unit test. @@ -168,8 +171,8 @@ class PigeonOverrides { } } -/// An immutable object that serves as the base class for all ProxyApis and -/// can provide functional copies of itself. +/// An immutable object that serves as the base class for all Dart proxy classes +/// and can provide functional copies of itself. /// /// All implementers are expected to be [immutable] as defined by the annotation /// and override [pigeon_copy] returning an instance of itself. @@ -234,7 +237,7 @@ class PigeonInstanceManager { // 0 <= n < 2^16. static const int _maxDartCreatedIdentifier = 65536; - /// The default [PigeonInstanceManager] used by ProxyApis. + /// The default [PigeonInstanceManager] used by Dart proxy classes. /// /// On creation, this manager makes a call to clear the native /// InstanceManager. This is to prevent identifier conflicts after a host @@ -250,9 +253,10 @@ class PigeonInstanceManager { // by calling instanceManager.getIdentifier() inside of `==` while this was a // HashMap). final Expando _identifiers = Expando(); - final Map> _weakInstances = - >{}; - final Map _strongInstances = {}; + final Map> + _weakInstances = >{}; + final Map _strongInstances = + {}; late final Finalizer _finalizer; int _nextIdentifier = 0; @@ -265,7 +269,8 @@ class PigeonInstanceManager { return PigeonInstanceManager(onWeakReferenceRemoved: (_) {}); } WidgetsFlutterBinding.ensureInitialized(); - final _PigeonInternalInstanceManagerApi api = _PigeonInternalInstanceManagerApi(); + final _PigeonInternalInstanceManagerApi api = + _PigeonInternalInstanceManagerApi(); // Clears the native `PigeonInstanceManager` on the initial use of the Dart one. api.clear(); final PigeonInstanceManager instanceManager = PigeonInstanceManager( @@ -273,30 +278,52 @@ class PigeonInstanceManager { api.removeStrongReference(identifier); }, ); - _PigeonInternalInstanceManagerApi.setUpMessageHandlers(instanceManager: instanceManager); - IMAAdDisplayContainer.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + _PigeonInternalInstanceManagerApi.setUpMessageHandlers( + instanceManager: instanceManager); + IMAAdDisplayContainer.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); UIView.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - UIViewController.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAContentPlayhead.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdsLoader.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMASettings.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdsRequest.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdsLoaderDelegate.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdsLoadedData.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdLoadingErrorData.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdError.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdsManager.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdsManagerDelegate.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdEvent.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdsRenderingSettings.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - NSObject.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAFriendlyObstruction.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMACompanionAd.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMACompanionAdSlot.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMACompanionDelegate.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAAdPodInfo.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + UIViewController.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAContentPlayhead.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdsLoader.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMASettings.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdsRequest.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdsLoaderDelegate.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdsLoadedData.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdLoadingErrorData.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdError.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdsManager.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdsManagerDelegate.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdEvent.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdsRenderingSettings.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + NSObject.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAFriendlyObstruction.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMACompanionAd.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMACompanionAdSlot.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMACompanionDelegate.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); + IMAAdPodInfo.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); IMAAd.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); - IMAUniversalAdID.pigeon_setUpMessageHandlers(pigeon_instanceManager: instanceManager); + IMAUniversalAdID.pigeon_setUpMessageHandlers( + pigeon_instanceManager: instanceManager); return instanceManager; } @@ -375,15 +402,20 @@ class PigeonInstanceManager { /// /// This method also expects the host `InstanceManager` to have a strong /// reference to the instance the identifier is associated with. - T? getInstanceWithWeakReference(int identifier) { - final PigeonInternalProxyApiBaseClass? weakInstance = _weakInstances[identifier]?.target; + T? getInstanceWithWeakReference( + int identifier) { + final PigeonInternalProxyApiBaseClass? weakInstance = + _weakInstances[identifier]?.target; if (weakInstance == null) { - final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; + final PigeonInternalProxyApiBaseClass? strongInstance = + _strongInstances[identifier]; if (strongInstance != null) { - final PigeonInternalProxyApiBaseClass copy = strongInstance.pigeon_copy(); + final PigeonInternalProxyApiBaseClass copy = + strongInstance.pigeon_copy(); _identifiers[copy] = identifier; - _weakInstances[identifier] = WeakReference(copy); + _weakInstances[identifier] = + WeakReference(copy); _finalizer.attach(copy, identifier, detach: copy); return copy as T; } @@ -405,7 +437,8 @@ class PigeonInstanceManager { /// /// Throws assertion error if the instance or its identifier has already been /// added. - void addHostCreatedInstance(PigeonInternalProxyApiBaseClass instance, int identifier) { + void addHostCreatedInstance( + PigeonInternalProxyApiBaseClass instance, int identifier) { assert(!containsIdentifier(identifier)); assert(getIdentifier(instance) == null); assert(identifier >= 0); @@ -533,29 +566,29 @@ class _PigeonInternalInstanceManagerApi { } class _PigeonInternalProxyApiBaseCodec extends _PigeonCodec { - const _PigeonInternalProxyApiBaseCodec(this.instanceManager); - final PigeonInstanceManager instanceManager; - @override - void writeValue(WriteBuffer buffer, Object? value) { - if (value is PigeonInternalProxyApiBaseClass) { - buffer.putUint8(128); - writeValue(buffer, instanceManager.getIdentifier(value)); - } else { - super.writeValue(buffer, value); - } - } - @override - Object? readValueOfType(int type, ReadBuffer buffer) { - switch (type) { - case 128: - return instanceManager - .getInstanceWithWeakReference(readValue(buffer)! as int); - default: - return super.readValueOfType(type, buffer); - } - } -} + const _PigeonInternalProxyApiBaseCodec(this.instanceManager); + final PigeonInstanceManager instanceManager; + @override + void writeValue(WriteBuffer buffer, Object? value) { + if (value is PigeonInternalProxyApiBaseClass) { + buffer.putUint8(128); + writeValue(buffer, instanceManager.getIdentifier(value)); + } else { + super.writeValue(buffer, value); + } + } + @override + Object? readValueOfType(int type, ReadBuffer buffer) { + switch (type) { + case 128: + return instanceManager + .getInstanceWithWeakReference(readValue(buffer)! as int); + default: + return super.readValueOfType(type, buffer); + } + } +} /// Possible error types while loading or playing ads. /// @@ -563,8 +596,10 @@ class _PigeonInternalProxyApiBaseCodec extends _PigeonCodec { enum AdErrorType { /// An error occurred while loading the ads. loadingFailed, + /// An error occurred while playing the ads. adPlayingFailed, + /// An unexpected error occurred while loading or playing the ads. /// /// This may mean that the SDK wasn’t loaded properly or the wrapper doesn't @@ -578,58 +613,81 @@ enum AdErrorType { enum AdErrorCode { /// The ad slot is not visible on the page. adslotNotVisible, + /// Generic invalid usage of the API. apiError, + /// A companion ad failed to load or render. companionAdLoadingFailed, + /// Content playhead was not passed in, but list of ads has been returned from /// the server. contentPlayheadMissing, + /// There was an error loading the ad. failedLoadingAd, + /// There was a problem requesting ads from the server. failedToRequestAds, + /// Invalid arguments were provided to SDK methods. invalidArguments, + /// The version of the runtime is too old. osRuntimeTooOld, + /// Ads list response was malformed. playlistMalformedResponse, + /// Listener for at least one of the required vast events was not added. requiredListenersNotAdded, + /// There was an error initializing the stream. streamInitializationFailed, + /// An unexpected error occurred and the cause is not known. unknownError, + /// No assets were found in the VAST ad response. vastAssetNotFound, + /// A VAST response containing a single `` tag with no child tags. vastEmptyResponse, + /// At least one VAST wrapper loaded and a subsequent wrapper or inline ad /// load has resulted in a 404 response code. vastInvalidUrl, + /// Assets were found in the VAST ad response for a linear ad, but none of /// them matched the video player's capabilities. vastLinearAssetMismatch, + /// The VAST URI provided, or a VAST URI provided in a subsequent Wrapper /// element, was either unavailable or reached a timeout, as defined by the /// video player. vastLoadTimeout, + /// The ad response was not recognized as a valid VAST ad. vastMalformedResponse, + /// Failed to load media assets from a VAST response. vastMediaLoadTimeout, + /// The maximum number of VAST wrapper redirects has been reached. vastTooManyRedirects, + /// Trafficking error. /// /// Video player received an ad type that it was not expecting and/or cannot /// display. vastTraffickingError, + /// Another VideoAdsManager is still using the video. videoElementUsed, + /// A video element was not specified where it was required. videoElementRequired, + /// There was an error playing the video ad. videoPlayError, } @@ -640,53 +698,77 @@ enum AdErrorCode { enum AdEventType { /// Fired the first time each ad break ends. adBreakEnded, + /// Fired when an ad break will not play back any ads. adBreakFetchError, + /// Fired when an ad break is ready. adBreakReady, + /// Fired first time each ad break begins playback. adBreakStarted, + /// Fired every time the stream switches from advertising or slate to content. adPeriodEnded, + /// Fired every time the stream switches from content to advertising or slate. adPeriodStarted, + /// All valid ads managed by the ads manager have completed or the ad response /// did not return any valid ads. allAdsCompleted, + /// Fired when an ad is clicked. clicked, + /// Single ad has finished. completed, + /// Cuepoints changed for VOD stream (only used for dynamic ad insertion). cuepointsChanged, + /// First quartile of a linear ad was reached. firstQuartile, + /// The user has closed the icon fallback image dialog. iconFallbackImageClosed, + /// The user has tapped an ad icon. iconTapped, + /// An ad was loaded. loaded, + /// A log event for the ads being played. log, + /// Midpoint of a linear ad was reached. midpoint, + /// Ad paused. pause, + /// Ad resumed. resume, + /// Fired when an ad was skipped. skipped, + /// Fired when an ad starts playing. started, + /// Stream request has loaded (only used for dynamic ad insertion). streamLoaded, + /// Stream has started playing (only used for dynamic ad insertion). streamStarted, + /// Ad tapped. tapped, + /// Third quartile of a linear ad was reached.. thirdQuartile, + /// The event type is not recognized by this wrapper. unknown, } @@ -698,12 +780,15 @@ enum KeyValueObservingOptions { /// Indicates that the change dictionary should provide the new attribute /// value, if applicable. newValue, + /// Indicates that the change dictionary should contain the old attribute /// value, if applicable. oldValue, + /// If specified, a notification should be sent to the observer immediately, /// before the observer registration method even returns. initialValue, + /// Whether separate notifications should be sent to the observer before and /// after each change, instead of a single notification after the change. priorNotification, @@ -715,12 +800,15 @@ enum KeyValueObservingOptions { enum KeyValueChange { /// Indicates that the value of the observed key path was set to a new value. setting, + /// Indicates that an object has been inserted into the to-many relationship /// that is being observed. insertion, + /// Indicates that an object has been removed from the to-many relationship /// that is being observed. removal, + /// Indicates that an object has been replaced in the to-many relationship /// that is being observed. replacement, @@ -735,20 +823,25 @@ enum KeyValueChangeKey { /// this key is an NSIndexSet object that contains the indexes of the /// inserted, removed, or replaced objects. indexes, + /// An NSNumber object that contains a value corresponding to one of the /// NSKeyValueChange enums, indicating what sort of change has occurred. kind, + /// If the value of the kindKey entry is NSKeyValueChange.setting, and new was /// specified when the observer was registered, the value of this key is the /// new value for the attribute. newValue, + /// If the prior option was specified when the observer was registered this /// notification is sent prior to a change. notificationIsPrior, + /// If the value of the kindKey entry is NSKeyValueChange.setting, and old was /// specified when the observer was registered, the value of this key is the /// value before the attribute was changed. oldValue, + /// The key is not recognized by this wrapper. unknown, } @@ -761,6 +854,7 @@ enum FriendlyObstructionPurpose { closeAd, notVisible, other, + /// The purpose type is not recognized by this wrapper. unknown, } @@ -771,13 +865,14 @@ enum FriendlyObstructionPurpose { enum UIElementType { /// Ad attribution UI element. adAttribution, + /// Ad countdown element. countdown, + /// The element is not recognized by this wrapper. unknown, } - class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -785,28 +880,28 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is AdErrorType) { + } else if (value is AdErrorType) { buffer.putUint8(129); writeValue(buffer, value.index); - } else if (value is AdErrorCode) { + } else if (value is AdErrorCode) { buffer.putUint8(130); writeValue(buffer, value.index); - } else if (value is AdEventType) { + } else if (value is AdEventType) { buffer.putUint8(131); writeValue(buffer, value.index); - } else if (value is KeyValueObservingOptions) { + } else if (value is KeyValueObservingOptions) { buffer.putUint8(132); writeValue(buffer, value.index); - } else if (value is KeyValueChange) { + } else if (value is KeyValueChange) { buffer.putUint8(133); writeValue(buffer, value.index); - } else if (value is KeyValueChangeKey) { + } else if (value is KeyValueChangeKey) { buffer.putUint8(134); writeValue(buffer, value.index); - } else if (value is FriendlyObstructionPurpose) { + } else if (value is FriendlyObstructionPurpose) { buffer.putUint8(135); writeValue(buffer, value.index); - } else if (value is UIElementType) { + } else if (value is UIElementType) { buffer.putUint8(136); writeValue(buffer, value.index); } else { @@ -817,28 +912,28 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: final int? value = readValue(buffer) as int?; return value == null ? null : AdErrorType.values[value]; - case 130: + case 130: final int? value = readValue(buffer) as int?; return value == null ? null : AdErrorCode.values[value]; - case 131: + case 131: final int? value = readValue(buffer) as int?; return value == null ? null : AdEventType.values[value]; - case 132: + case 132: final int? value = readValue(buffer) as int?; return value == null ? null : KeyValueObservingOptions.values[value]; - case 133: + case 133: final int? value = readValue(buffer) as int?; return value == null ? null : KeyValueChange.values[value]; - case 134: + case 134: final int? value = readValue(buffer) as int?; return value == null ? null : KeyValueChangeKey.values[value]; - case 135: + case 135: final int? value = readValue(buffer) as int?; return value == null ? null : FriendlyObstructionPurpose.values[value]; - case 136: + case 136: final int? value = readValue(buffer) as int?; return value == null ? null : UIElementType.values[value]; default: @@ -846,6 +941,7 @@ class _PigeonCodec extends StandardMessageCodec { } } } + /// The `IMAAdDisplayContainer` is responsible for managing the ad container /// view and companion ad slots used for ad playback. /// @@ -6321,4 +6417,3 @@ class IMAUniversalAdID extends PigeonInternalProxyApiBaseClass { ); } } - From 07122c9aae25914666207abdf8f50ad631b9cab2 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 11 Aug 2025 18:45:18 -0400 Subject: [PATCH 04/30] fix tests sort of --- .../ios/RunnerTests/AdProxyAPITests.swift | 50 +++++++++---------- .../AdProxyAPIDelegate.swift | 13 ++--- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift index 8fcd2b0c3be..c9492f3851d 100644 --- a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift +++ b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift @@ -49,15 +49,15 @@ class AdProxyAPITests: XCTestCase { XCTAssertEqual(value, instance.adSystem) } - // func testCompanionAds() { - // let registrar = TestProxyApiRegistrar() - // let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + // func testCompanionAds() { + // let registrar = TestProxyApiRegistrar() + // let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) // - // let instance = TestAd.customInit() - // let value = try? api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) + // let instance = TestAd.customInit() + // let value = try? api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) // - // XCTAssertEqual(value, instance.companionAds) - // } + // XCTAssertEqual(value, instance.companionAds) + // } func testContentType() { let registrar = TestProxyApiRegistrar() @@ -169,15 +169,15 @@ class AdProxyAPITests: XCTestCase { XCTAssertEqual(value, instance.skipTimeOffset) } - func testAdPodInfo() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd.customInit() - let value = try? api.pigeonDelegate.adPodInfo(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.adPodInfo) - } + // func testAdPodInfo() { + // let registrar = TestProxyApiRegistrar() + // let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + // + // let instance = TestAd.customInit() + // let value = try? api.pigeonDelegate.adPodInfo(pigeonApi: api, pigeonInstance: instance) + // + // XCTAssertEqual(value, instance.adPodInfo) + // } func testTraffickingParameters() { let registrar = TestProxyApiRegistrar() @@ -210,15 +210,15 @@ class AdProxyAPITests: XCTestCase { XCTAssertEqual(value, instance.creativeAdID) } - func testUniversalAdIDs() { - let registrar = TestProxyApiRegistrar() - let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - - let instance = TestAd.customInit() - let value = try? api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) - - XCTAssertEqual(value, instance.universalAdIDs) - } + // func testUniversalAdIDs() { + // let registrar = TestProxyApiRegistrar() + // let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + // + // let instance = TestAd.customInit() + // let value = try? api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) + // + // XCTAssertEqual(value, instance.universalAdIDs) + // } func testAdvertiserName() { let registrar = TestProxyApiRegistrar() diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift index 02f17c554af..653e0754f94 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift @@ -83,9 +83,9 @@ class AdProxyAPIDelegate: PigeonApiDelegateIMAAd { return pigeonInstance.skipTimeOffset } - // func adPodInfo(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> IMAAdPodInfo { - // return pigeonInstance.adPodInfo - // } + func adPodInfo(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> IMAAdPodInfo { + return pigeonInstance.adPodInfo + } func traffickingParameters(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { return pigeonInstance.traffickingParameters @@ -99,9 +99,10 @@ class AdProxyAPIDelegate: PigeonApiDelegateIMAAd { return pigeonInstance.creativeAdID } - // func universalAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMAUniversalAdID] { - // return pigeonInstance.universalAdIDs - // } + func universalAdIDs(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [IMAUniversalAdID] + { + return pigeonInstance.universalAdIDs + } func advertiserName(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> String { return pigeonInstance.advertiserName From 9acd11cf824c98819c42d1fddce85c1158e0d67e Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 11 Aug 2025 18:55:58 -0400 Subject: [PATCH 05/30] try fix tests maybe --- .../ios/RunnerTests/AdProxyAPITests.swift | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift index c9492f3851d..1b69915e5bb 100644 --- a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift +++ b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift @@ -49,15 +49,15 @@ class AdProxyAPITests: XCTestCase { XCTAssertEqual(value, instance.adSystem) } - // func testCompanionAds() { - // let registrar = TestProxyApiRegistrar() - // let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - // - // let instance = TestAd.customInit() - // let value = try? api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) - // - // XCTAssertEqual(value, instance.companionAds) - // } + @MainActor func testCompanionAds() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.companionAds) + } func testContentType() { let registrar = TestProxyApiRegistrar() @@ -169,15 +169,15 @@ class AdProxyAPITests: XCTestCase { XCTAssertEqual(value, instance.skipTimeOffset) } - // func testAdPodInfo() { - // let registrar = TestProxyApiRegistrar() - // let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - // - // let instance = TestAd.customInit() - // let value = try? api.pigeonDelegate.adPodInfo(pigeonApi: api, pigeonInstance: instance) - // - // XCTAssertEqual(value, instance.adPodInfo) - // } + @MainActor func testAdPodInfo() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.adPodInfo(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.adPodInfo) + } func testTraffickingParameters() { let registrar = TestProxyApiRegistrar() @@ -210,15 +210,15 @@ class AdProxyAPITests: XCTestCase { XCTAssertEqual(value, instance.creativeAdID) } - // func testUniversalAdIDs() { - // let registrar = TestProxyApiRegistrar() - // let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - // - // let instance = TestAd.customInit() - // let value = try? api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) - // - // XCTAssertEqual(value, instance.universalAdIDs) - // } + @MainActor func testUniversalAdIDs() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + let instance = TestAd.customInit() + let value = try? api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, instance.universalAdIDs) + } func testAdvertiserName() { let registrar = TestProxyApiRegistrar() @@ -289,11 +289,11 @@ class TestAd: IMAAd { return instance } - let _universalAdIDs = [TestUniversalAdID.customInit()] + let _universalAdID = TestUniversalAdID.customInit() let _adPodInfo = TestAdPodInfo.customInit() - let _companionAds = [TestCompanionAd.customInit()] + let _companionAd = TestCompanionAd.customInit() override var adId: String { return "string1" @@ -312,7 +312,7 @@ class TestAd: IMAAd { } override var companionAds: [IMACompanionAd] { - return _companionAds + return [_companionAd] } override var contentType: String { @@ -376,7 +376,7 @@ class TestAd: IMAAd { } override var universalAdIDs: [IMAUniversalAdID] { - return _universalAdIDs + return [_universalAdID] } override var advertiserName: String { From 038f303bceb6a6e6f9e98a5738e0afaf4b8b82b1 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 12 Aug 2025 13:58:49 -0400 Subject: [PATCH 06/30] fix version bump --- packages/interactive_media_ads/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/interactive_media_ads/pubspec.yaml b/packages/interactive_media_ads/pubspec.yaml index 1b88ae73fed..376d105b1bf 100644 --- a/packages/interactive_media_ads/pubspec.yaml +++ b/packages/interactive_media_ads/pubspec.yaml @@ -2,7 +2,7 @@ name: interactive_media_ads description: A Flutter plugin for using the Interactive Media Ads SDKs on Android and iOS. repository: https://github.com/flutter/packages/tree/main/packages/interactive_media_ads issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+interactive_media_ads%22 -version: 0.2.6+2 # This must match the version in +version: 0.2.6+3 # This must match the version in # `android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt` and # `ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift` From bf56d725ffcf4bdd646399923baa0039a6ebc2a1 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:48:20 -0400 Subject: [PATCH 07/30] fix tests --- .../ios/RunnerTests/AdProxyAPITests.swift | 23 ++++++++++--------- .../UniversalAdIDProxyAPITests.swift | 2 +- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift index 1b69915e5bb..db817f5d3e5 100644 --- a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift +++ b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift @@ -54,7 +54,7 @@ class AdProxyAPITests: XCTestCase { let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) let instance = TestAd.customInit() - let value = try? api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) + let value = try! api.pigeonDelegate.companionAds(pigeonApi: api, pigeonInstance: instance) XCTAssertEqual(value, instance.companionAds) } @@ -215,7 +215,7 @@ class AdProxyAPITests: XCTestCase { let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) let instance = TestAd.customInit() - let value = try? api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) + let value = try! api.pigeonDelegate.universalAdIDs(pigeonApi: api, pigeonInstance: instance) XCTAssertEqual(value, instance.universalAdIDs) } @@ -283,17 +283,18 @@ class AdProxyAPITests: XCTestCase { class TestAd: IMAAd { // Workaround to subclass an Objective-C class that has an `init` constructor with NS_UNAVAILABLE - static func customInit() -> IMAAd { + static func customInit() -> TestAd { let instance = TestAd.perform(NSSelectorFromString("new")).takeRetainedValue() as! TestAd + instance._companionAd = TestCompanionAd.customInit() + instance._universalAdID = TestUniversalAdID.customInit() + instance._adPodInfo = TestAdPodInfo.customInit() return instance } - let _universalAdID = TestUniversalAdID.customInit() - - let _adPodInfo = TestAdPodInfo.customInit() - - let _companionAd = TestCompanionAd.customInit() + var _companionAd: TestCompanionAd? + var _adPodInfo: TestAdPodInfo? + var _universalAdID: TestUniversalAdID? override var adId: String { return "string1" @@ -312,7 +313,7 @@ class TestAd: IMAAd { } override var companionAds: [IMACompanionAd] { - return [_companionAd] + return [_companionAd!] } override var contentType: String { @@ -360,7 +361,7 @@ class TestAd: IMAAd { } override var adPodInfo: IMAAdPodInfo { - return _adPodInfo + return _adPodInfo! } override var traffickingParameters: String { @@ -376,7 +377,7 @@ class TestAd: IMAAd { } override var universalAdIDs: [IMAUniversalAdID] { - return [_universalAdID] + return [_universalAdID!] } override var advertiserName: String { diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/UniversalAdIDProxyAPITests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/UniversalAdIDProxyAPITests.swift index 785fa7d51e6..fb510abc88e 100644 --- a/packages/interactive_media_ads/example/ios/RunnerTests/UniversalAdIDProxyAPITests.swift +++ b/packages/interactive_media_ads/example/ios/RunnerTests/UniversalAdIDProxyAPITests.swift @@ -32,7 +32,7 @@ class UniversalAdIDProxyAPITests: XCTestCase { class TestUniversalAdID: IMAUniversalAdID { // Workaround to subclass an Objective-C class that has an `init` constructor with NS_UNAVAILABLE - static func customInit() -> IMAUniversalAdID { + static func customInit() -> TestUniversalAdID { let instance = TestUniversalAdID.perform(NSSelectorFromString("new")).takeRetainedValue() as! TestUniversalAdID From 2f37abc4f9b180ca1eaf606269083397d4fdad9b Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:14:20 -0400 Subject: [PATCH 08/30] update adevent to --- .../interactive_media_ads/AdEventProxyApi.kt | 5 ++++ .../InteractiveMediaAdsLibrary.g.kt | 12 +++++++--- .../AdEventProxyApiTest.kt | 12 ++++++++++ .../ios/RunnerTests/AdEventTests.swift | 18 ++++++++++++++ .../AdEventProxyAPIDelegate.swift | 4 ++++ .../InteractiveMediaAdsLibrary.g.swift | 11 +++++++-- .../src/android/interactive_media_ads.g.dart | 24 ++++++++++++------- .../lib/src/ios/interactive_media_ads.g.dart | 13 +++++++++- .../interactive_media_ads_android.dart | 5 +++- .../pigeons/interactive_media_ads_ios.dart | 6 +++++ 10 files changed, 95 insertions(+), 15 deletions(-) diff --git a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdEventProxyApi.kt b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdEventProxyApi.kt index 8cbf527a375..d2cef4e54c9 100644 --- a/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdEventProxyApi.kt +++ b/packages/interactive_media_ads/android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdEventProxyApi.kt @@ -4,6 +4,7 @@ package dev.flutter.packages.interactive_media_ads +import com.google.ads.interactivemedia.v3.api.Ad import com.google.ads.interactivemedia.v3.api.AdEvent /** @@ -50,4 +51,8 @@ class AdEventProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) : override fun adData(pigeon_instance: AdEvent): Map? { return pigeon_instance.adData } + + override fun ad(pigeon_instance: AdEvent): Ad? { + return pigeon_instance.ad + } } 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 05c1b2f9bbe..dee5d5d1ebf 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 (v26.0.0), do not edit directly. +// Autogenerated from Pigeon (v26.0.1), do not edit directly. // See also: https://pub.dev/packages/pigeon @file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") @@ -2558,7 +2558,7 @@ abstract class PigeonApiBaseManager( * Event to notify publisher that an event occurred with an Ad. * * See - * https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdEvent.html. + * https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/kotlin/com/google/ads/interactivemedia/v3/api/AdEvent. */ @Suppress("UNCHECKED_CAST") abstract class PigeonApiAdEvent( @@ -2572,6 +2572,11 @@ abstract class PigeonApiAdEvent( pigeon_instance: com.google.ads.interactivemedia.v3.api.AdEvent ): Map? + /** The ad with which this event is associated. */ + abstract fun ad( + pigeon_instance: com.google.ads.interactivemedia.v3.api.AdEvent + ): com.google.ads.interactivemedia.v3.api.Ad? + @Suppress("LocalVariableName", "FunctionName") /** Creates a Dart instance of AdEvent and attaches it to [pigeon_instanceArg]. */ fun pigeon_newInstance( @@ -2589,11 +2594,12 @@ abstract class PigeonApiAdEvent( pigeonRegistrar.instanceManager.addHostCreatedInstance(pigeon_instanceArg) val typeArg = type(pigeon_instanceArg) val adDataArg = adData(pigeon_instanceArg) + val adArg = ad(pigeon_instanceArg) val binaryMessenger = pigeonRegistrar.binaryMessenger val codec = pigeonRegistrar.codec val channelName = "dev.flutter.pigeon.interactive_media_ads.AdEvent.pigeon_newInstance" val channel = BasicMessageChannel(binaryMessenger, channelName, codec) - channel.send(listOf(pigeon_identifierArg, typeArg, adDataArg)) { + channel.send(listOf(pigeon_identifierArg, typeArg, adDataArg, adArg)) { if (it is List<*>) { if (it.size > 1) { callback( diff --git a/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/AdEventProxyApiTest.kt b/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/AdEventProxyApiTest.kt index 974ad7b5f3e..86a8386ed7a 100644 --- a/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/AdEventProxyApiTest.kt +++ b/packages/interactive_media_ads/android/src/test/kotlin/dev/flutter/packages/interactive_media_ads/AdEventProxyApiTest.kt @@ -4,6 +4,7 @@ package dev.flutter.packages.interactive_media_ads +import com.google.ads.interactivemedia.v3.api.Ad import com.google.ads.interactivemedia.v3.api.AdEvent import kotlin.test.Test import kotlin.test.assertEquals @@ -30,4 +31,15 @@ class AdEventProxyApiTest { assertEquals(mapOf("a" to "b", "c" to "d"), api.adData(instance)) } + + @Test + fun ad() { + val api = TestProxyApiRegistrar().getPigeonApiAdEvent() + + val ad = Mockito.mock() + val instance = Mockito.mock() + whenever(instance.ad).thenReturn(ad) + + assertEquals(ad, api.ad(instance)) + } } diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/AdEventTests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/AdEventTests.swift index 9906e315734..9b5a2947b25 100644 --- a/packages/interactive_media_ads/example/ios/RunnerTests/AdEventTests.swift +++ b/packages/interactive_media_ads/example/ios/RunnerTests/AdEventTests.swift @@ -41,6 +41,17 @@ final class AdEventTests: XCTestCase { XCTAssertEqual(value as! [String: String], ["my": "string"]) } + + func testAd() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAdEvent(registrar) + + let instance = TestAdEvent.customInit() + let value = try? api.pigeonDelegate.ad(pigeonApi: api, pigeonInstance: instance) + + XCTAssertNotNil(value) + XCTAssertEqual(value, instance.ad) + } } class TestAdEvent: IMAAdEvent { @@ -48,9 +59,12 @@ class TestAdEvent: IMAAdEvent { static func customInit() -> TestAdEvent { let instance = TestAdEvent.perform(NSSelectorFromString("new")).takeRetainedValue() as! TestAdEvent + instance._ad = TestAd.customInit() return instance } + var _ad: TestAd? + override var type: IMAAdEventType { return .AD_BREAK_ENDED } @@ -62,4 +76,8 @@ class TestAdEvent: IMAAdEvent { override var adData: [String: Any]? { return ["my": "string"] } + + override var ad: IMAAd? { + return _ad! + } } diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdEventProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdEventProxyAPIDelegate.swift index f4d018700d0..0af0c10204e 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdEventProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdEventProxyAPIDelegate.swift @@ -72,4 +72,8 @@ class AdEventProxyAPIDelegate: PigeonApiDelegateIMAAdEvent { func typeString(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> String { return pigeonInstance.typeString } + + func ad(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> IMAAd? { + return pigeonInstance.ad + } } diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift index 2458e05bd38..1f5257b6269 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift @@ -3636,6 +3636,11 @@ protocol PigeonApiDelegateIMAAdEvent { func typeString(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> String /// Extra data about the ad. func adData(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> [String: Any]? + /// The current ad that is playing or just played. + /// + /// This will be null except for events where an ad is available (start, + /// quartiles, midpoint, complete, and tap). + func ad(pigeonApi: PigeonApiIMAAdEvent, pigeonInstance: IMAAdEvent) throws -> IMAAd? } protocol PigeonApiProtocolIMAAdEvent { @@ -3675,14 +3680,16 @@ final class PigeonApiIMAAdEvent: PigeonApiProtocolIMAAdEvent { let typeStringArg = try! pigeonDelegate.typeString( pigeonApi: self, pigeonInstance: pigeonInstance) let adDataArg = try! pigeonDelegate.adData(pigeonApi: self, pigeonInstance: pigeonInstance) + let adArg = try! pigeonDelegate.ad(pigeonApi: self, pigeonInstance: pigeonInstance) let binaryMessenger = pigeonRegistrar.binaryMessenger let codec = pigeonRegistrar.codec let channelName: String = "dev.flutter.pigeon.interactive_media_ads.IMAAdEvent.pigeon_newInstance" let channel = FlutterBasicMessageChannel( name: channelName, binaryMessenger: binaryMessenger, codec: codec) - channel.sendMessage([pigeonIdentifierArg, typeArg, typeStringArg, adDataArg] as [Any?]) { - response in + channel.sendMessage( + [pigeonIdentifierArg, typeArg, typeStringArg, adDataArg, adArg] as [Any?] + ) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return 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 2b382216ef8..ac2d1955846 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 (v26.0.0), do not edit directly. +// Autogenerated from Pigeon (v26.0.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 @@ -32,8 +32,8 @@ List wrapResponse( return [error.code, error.message, error.details]; } -/// Provides overrides for the constructors and static members of each proxy -/// API. +/// Provides overrides for the constructors and static members of each +/// Dart proxy class. /// /// This is only intended to be used with unit tests to prevent errors from /// making message calls in a unit test. @@ -156,8 +156,8 @@ class PigeonOverrides { } } -/// An immutable object that serves as the base class for all ProxyApis and -/// can provide functional copies of itself. +/// An immutable object that serves as the base class for all Dart proxy classes +/// and can provide functional copies of itself. /// /// All implementers are expected to be [immutable] as defined by the annotation /// and override [pigeon_copy] returning an instance of itself. @@ -222,7 +222,7 @@ class PigeonInstanceManager { // 0 <= n < 2^16. static const int _maxDartCreatedIdentifier = 65536; - /// The default [PigeonInstanceManager] used by ProxyApis. + /// The default [PigeonInstanceManager] used by Dart proxy classes. /// /// On creation, this manager makes a call to clear the native /// InstanceManager. This is to prevent identifier conflicts after a host @@ -2677,7 +2677,7 @@ class BaseManager extends PigeonInternalProxyApiBaseClass { /// Event to notify publisher that an event occurred with an Ad. /// -/// See https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdEvent.html. +/// See https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/kotlin/com/google/ads/interactivemedia/v3/api/AdEvent. class AdEvent extends PigeonInternalProxyApiBaseClass { /// Constructs [AdEvent] without creating the associated native object. /// @@ -2689,6 +2689,7 @@ class AdEvent extends PigeonInternalProxyApiBaseClass { super.pigeon_instanceManager, required this.type, this.adData, + this.ad, }); /// The type of event that occurred. @@ -2697,6 +2698,9 @@ class AdEvent extends PigeonInternalProxyApiBaseClass { /// A map containing any extra ad data for the event, if needed. final Map? adData; + /// The ad with which this event is associated. + final Ad? ad; + static void pigeon_setUpMessageHandlers({ bool pigeon_clearHandlers = false, BinaryMessenger? pigeon_binaryMessenger, @@ -2704,6 +2708,7 @@ class AdEvent extends PigeonInternalProxyApiBaseClass { AdEvent Function( AdEventType type, Map? adData, + Ad? ad, )? pigeon_newInstance, }) { final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = @@ -2732,15 +2737,17 @@ class AdEvent extends PigeonInternalProxyApiBaseClass { 'Argument for dev.flutter.pigeon.interactive_media_ads.AdEvent.pigeon_newInstance was null, expected non-null AdEventType.'); final Map? arg_adData = (args[2] as Map?)?.cast(); + final Ad? arg_ad = (args[3] as Ad?); try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( - pigeon_newInstance?.call(arg_type!, arg_adData) ?? + pigeon_newInstance?.call(arg_type!, arg_adData, arg_ad) ?? AdEvent.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, type: arg_type!, adData: arg_adData, + ad: arg_ad, ), arg_pigeon_instanceIdentifier!, ); @@ -2763,6 +2770,7 @@ class AdEvent extends PigeonInternalProxyApiBaseClass { pigeon_instanceManager: pigeon_instanceManager, type: type, adData: adData, + ad: ad, ); } } diff --git a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart index 4460be7fa78..f2198d98098 100644 --- a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart +++ b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart @@ -4367,6 +4367,7 @@ class IMAAdEvent extends NSObject { required this.type, required this.typeString, this.adData, + this.ad, }) : super.pigeon_detached(); /// Type of the event. @@ -4378,6 +4379,12 @@ class IMAAdEvent extends NSObject { /// Extra data about the ad. final Map? adData; + /// The current ad that is playing or just played. + /// + /// This will be null except for events where an ad is available (start, + /// quartiles, midpoint, complete, and tap). + final IMAAd? ad; + static void pigeon_setUpMessageHandlers({ bool pigeon_clearHandlers = false, BinaryMessenger? pigeon_binaryMessenger, @@ -4386,6 +4393,7 @@ class IMAAdEvent extends NSObject { AdEventType type, String typeString, Map? adData, + IMAAd? ad, )? pigeon_newInstance, }) { final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = @@ -4417,17 +4425,19 @@ class IMAAdEvent extends NSObject { 'Argument for dev.flutter.pigeon.interactive_media_ads.IMAAdEvent.pigeon_newInstance was null, expected non-null String.'); final Map? arg_adData = (args[3] as Map?)?.cast(); + final IMAAd? arg_ad = (args[4] as IMAAd?); try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( pigeon_newInstance?.call( - arg_type!, arg_typeString!, arg_adData) ?? + arg_type!, arg_typeString!, arg_adData, arg_ad) ?? IMAAdEvent.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, type: arg_type!, typeString: arg_typeString!, adData: arg_adData, + ad: arg_ad, ), arg_pigeon_instanceIdentifier!, ); @@ -4451,6 +4461,7 @@ class IMAAdEvent extends NSObject { type: type, typeString: typeString, adData: adData, + ad: ad, ); } } diff --git a/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart b/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart index fed150aaa2d..9bd5a2b62d8 100644 --- a/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart +++ b/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart @@ -485,7 +485,7 @@ abstract class BaseManager { /// Event to notify publisher that an event occurred with an Ad. /// -/// See https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdEvent.html. +/// See https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/kotlin/com/google/ads/interactivemedia/v3/api/AdEvent. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'com.google.ads.interactivemedia.v3.api.AdEvent', @@ -497,6 +497,9 @@ abstract class AdEvent { /// A map containing any extra ad data for the event, if needed. late final Map? adData; + + /// The ad with which this event is associated. + late final Ad? ad; } /// Factory class for creating SDK objects. diff --git a/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart b/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart index f77c0639358..53e629a4cd4 100644 --- a/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart +++ b/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart @@ -697,6 +697,12 @@ abstract class IMAAdEvent extends NSObject { /// Extra data about the ad. late final Map? adData; + + /// The current ad that is playing or just played. + /// + /// This will be null except for events where an ad is available (start, + /// quartiles, midpoint, complete, and tap). + late final IMAAd? ad; } /// Set of properties that influence how ads are rendered. From db2365563cb6176f96f0f8b7c50eda5c4f4054ef Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:19:51 -0400 Subject: [PATCH 09/30] changelog update --- packages/interactive_media_ads/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/interactive_media_ads/CHANGELOG.md b/packages/interactive_media_ads/CHANGELOG.md index 88ed0a0b6dc..091170255ef 100644 --- a/packages/interactive_media_ads/CHANGELOG.md +++ b/packages/interactive_media_ads/CHANGELOG.md @@ -1,6 +1,8 @@ ## 0.2.6+3 * Adds internal wrappers for iOS native `IMAAd` and `IMAUniversalAdID`. +* Updates internal wrapper for iOS native `IMAAdEvent`. +* Updates internal wrapper for Android native `AdEvent`. ## 0.2.6+2 From dff3de9a50d472912e16d3c07e6d218f18283c72 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:39:06 -0400 Subject: [PATCH 10/30] fix pigeon code --- .../InteractiveMediaAdsLibrary.g.swift | 36 ++++++++++++++----- .../lib/src/ios/interactive_media_ads.g.dart | 20 +++++------ .../pigeons/interactive_media_ads_ios.dart | 8 ++--- 3 files changed, 42 insertions(+), 22 deletions(-) diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift index 1f5257b6269..8faa555dafe 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/InteractiveMediaAdsLibrary.g.swift @@ -854,8 +854,8 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: return } - if let instance = value as? NSObject { - pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar).pigeonNewInstance( + if let instance = value as? IMAAdPodInfo { + pigeonRegistrar.apiDelegate.pigeonApiIMAAdPodInfo(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) @@ -865,8 +865,8 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: return } - if let instance = value as? IMAAdPodInfo { - pigeonRegistrar.apiDelegate.pigeonApiIMAAdPodInfo(pigeonRegistrar).pigeonNewInstance( + if let instance = value as? IMAAd { + pigeonRegistrar.apiDelegate.pigeonApiIMAAd(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) @@ -876,8 +876,8 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: return } - if let instance = value as? IMAAd { - pigeonRegistrar.apiDelegate.pigeonApiIMAAd(pigeonRegistrar).pigeonNewInstance( + if let instance = value as? IMAUniversalAdID { + pigeonRegistrar.apiDelegate.pigeonApiIMAUniversalAdID(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) @@ -887,8 +887,8 @@ private class InteractiveMediaAdsLibraryPigeonInternalProxyApiCodecReaderWriter: return } - if let instance = value as? IMAUniversalAdID { - pigeonRegistrar.apiDelegate.pigeonApiIMAUniversalAdID(pigeonRegistrar).pigeonNewInstance( + if let instance = value as? NSObject { + pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar).pigeonNewInstance( pigeonInstance: instance ) { _ in } super.writeByte(128) @@ -4259,6 +4259,11 @@ protocol PigeonApiProtocolIMACompanionAdSlot { final class PigeonApiIMACompanionAdSlot: PigeonApiProtocolIMACompanionAdSlot { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMACompanionAdSlot + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + init( pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMACompanionAdSlot @@ -4630,6 +4635,11 @@ protocol PigeonApiProtocolIMAAdPodInfo { final class PigeonApiIMAAdPodInfo: PigeonApiProtocolIMAAdPodInfo { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAdPodInfo + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + init( pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAdPodInfo @@ -4779,6 +4789,11 @@ protocol PigeonApiProtocolIMAAd { final class PigeonApiIMAAd: PigeonApiProtocolIMAAd { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAAd + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + init( pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAAd @@ -4900,6 +4915,11 @@ protocol PigeonApiProtocolIMAUniversalAdID { final class PigeonApiIMAUniversalAdID: PigeonApiProtocolIMAUniversalAdID { unowned let pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar let pigeonDelegate: PigeonApiDelegateIMAUniversalAdID + ///An implementation of [NSObject] used to access callback methods + var pigeonApiNSObject: PigeonApiNSObject { + return pigeonRegistrar.apiDelegate.pigeonApiNSObject(pigeonRegistrar) + } + init( pigeonRegistrar: InteractiveMediaAdsLibraryPigeonProxyApiRegistrar, delegate: PigeonApiDelegateIMAUniversalAdID diff --git a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart index f2198d98098..5ecff6b7542 100644 --- a/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart +++ b/packages/interactive_media_ads/lib/src/ios/interactive_media_ads.g.dart @@ -5179,7 +5179,7 @@ class IMACompanionAd extends NSObject { /// Ad slot for companion ads. /// /// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMACompanionAdSlot. -class IMACompanionAdSlot extends PigeonInternalProxyApiBaseClass { +class IMACompanionAdSlot extends NSObject { /// Initializes an instance of a IMACompanionAdSlot with fluid size. factory IMACompanionAdSlot({ BinaryMessenger? pigeon_binaryMessenger, @@ -5202,7 +5202,7 @@ class IMACompanionAdSlot extends PigeonInternalProxyApiBaseClass { super.pigeon_binaryMessenger, super.pigeon_instanceManager, required this.view, - }) { + }) : super.pigeon_detached() { final int pigeonVar_instanceIdentifier = pigeon_instanceManager.addDartCreatedInstance(this); final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = @@ -5273,7 +5273,7 @@ class IMACompanionAdSlot extends PigeonInternalProxyApiBaseClass { required this.view, required int width, required int height, - }) { + }) : super.pigeon_detached() { final int pigeonVar_instanceIdentifier = pigeon_instanceManager.addDartCreatedInstance(this); final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = @@ -5315,7 +5315,7 @@ class IMACompanionAdSlot extends PigeonInternalProxyApiBaseClass { super.pigeon_binaryMessenger, super.pigeon_instanceManager, required this.view, - }); + }) : super.pigeon_detached(); late final _PigeonInternalProxyApiBaseCodec _pigeonVar_codecIMACompanionAdSlot = @@ -5775,7 +5775,7 @@ class IMACompanionDelegate extends NSObject { /// Simple data object containing podding metadata. /// /// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAAdPodInfo.html. -class IMAAdPodInfo extends PigeonInternalProxyApiBaseClass { +class IMAAdPodInfo extends NSObject { /// Constructs [IMAAdPodInfo] without creating the associated native object. /// /// This should only be used by subclasses created by this library or to @@ -5790,7 +5790,7 @@ class IMAAdPodInfo extends PigeonInternalProxyApiBaseClass { required this.timeOffset, required this.totalAds, required this.isBumper, - }); + }) : super.pigeon_detached(); /// The position of this ad within an ad pod. /// @@ -5937,7 +5937,7 @@ class IMAAdPodInfo extends PigeonInternalProxyApiBaseClass { /// Data object representing a single ad. /// /// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAAd. -class IMAAd extends PigeonInternalProxyApiBaseClass { +class IMAAd extends NSObject { /// Constructs [IMAAd] without creating the associated native object. /// /// This should only be used by subclasses created by this library or to @@ -5973,7 +5973,7 @@ class IMAAd extends PigeonInternalProxyApiBaseClass { required this.wrapperAdIDs, required this.wrapperCreativeIDs, required this.wrapperSystems, - }); + }) : super.pigeon_detached(); /// The ad ID as specified in the VAST response. final String adId; @@ -6335,7 +6335,7 @@ class IMAAd extends PigeonInternalProxyApiBaseClass { /// Simple data object containing universal ad ID information. /// /// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMAUniversalAdID.html. -class IMAUniversalAdID extends PigeonInternalProxyApiBaseClass { +class IMAUniversalAdID extends NSObject { /// Constructs [IMAUniversalAdID] without creating the associated native object. /// /// This should only be used by subclasses created by this library or to @@ -6346,7 +6346,7 @@ class IMAUniversalAdID extends PigeonInternalProxyApiBaseClass { super.pigeon_instanceManager, required this.adIDValue, required this.adIDRegistry, - }); + }) : super.pigeon_detached(); /// The universal ad ID value. /// diff --git a/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart b/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart index 53e629a4cd4..ce68660e7ff 100644 --- a/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart +++ b/packages/interactive_media_ads/pigeons/interactive_media_ads_ios.dart @@ -799,7 +799,7 @@ abstract class IMACompanionAd extends NSObject { /// /// See https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side/reference/Classes/IMACompanionAdSlot. @ProxyApi() -abstract class IMACompanionAdSlot { +abstract class IMACompanionAdSlot extends NSObject { /// Initializes an instance of a IMACompanionAdSlot with fluid size. IMACompanionAdSlot(); @@ -851,7 +851,7 @@ abstract class IMACompanionDelegate extends NSObject { @ProxyApi( swiftOptions: SwiftProxyApiOptions(import: 'GoogleInteractiveMediaAds'), ) -abstract class IMAAdPodInfo { +abstract class IMAAdPodInfo extends NSObject { /// The position of this ad within an ad pod. /// /// Will be 1 for standalone ads. @@ -900,7 +900,7 @@ abstract class IMAAdPodInfo { @ProxyApi( swiftOptions: SwiftProxyApiOptions(import: 'GoogleInteractiveMediaAds'), ) -abstract class IMAAd { +abstract class IMAAd extends NSObject { /// The ad ID as specified in the VAST response. late final String adId; @@ -1013,7 +1013,7 @@ abstract class IMAAd { @ProxyApi( swiftOptions: SwiftProxyApiOptions(import: 'GoogleInteractiveMediaAds'), ) -abstract class IMAUniversalAdID { +abstract class IMAUniversalAdID extends NSObject { /// The universal ad ID value. /// /// This will be “unknown” if it isn’t defined by the ad. From 660aa724dd198baef6190fb557ebaa237d841ce4 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:08:35 -0400 Subject: [PATCH 11/30] support a string value --- .../AdProxyAPIDelegate.swift | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift index 653e0754f94..3ba05f434d0 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift @@ -39,16 +39,25 @@ class AdProxyAPIDelegate: PigeonApiDelegateIMAAd { } func uiElements(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [UIElementType] { - return pigeonInstance.uiElements.map { - switch $0.intValue { - case IMAUiElementType.elements_AD_ATTRIBUTION.rawValue: - return UIElementType.adAttribution - case IMAUiElementType.elements_COUNTDOWN.rawValue: - return UIElementType.countdown + var uiElements: [UIElementType] = [] + let uiElementsArray = pigeonInstance.uiElements as NSArray + for uiElement in uiElementsArray { + switch uiElement { + case let uiElement as String where uiElement == "adAttribution": + uiElements.append(UIElementType.adAttribution) + case let uiElement as NSNumber + where uiElement.intValue == IMAUiElementType.elements_AD_ATTRIBUTION.rawValue: + uiElements.append(UIElementType.adAttribution) + case let uiElement as String where uiElement == "countdown": + uiElements.append(UIElementType.countdown) + case let uiElement as NSNumber + where uiElement.intValue == IMAUiElementType.elements_COUNTDOWN.rawValue: + uiElements.append(UIElementType.countdown) default: - return UIElementType.unknown + uiElements.append(UIElementType.unknown) } } + return uiElements } func width(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { From 3af470642b82ab3db70fb18d899e0f2e100372d8 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:20:22 -0400 Subject: [PATCH 12/30] fix tests --- .../ios/RunnerTests/AdProxyAPITests.swift | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift index db817f5d3e5..250afd04f13 100644 --- a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift +++ b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift @@ -83,7 +83,23 @@ class AdProxyAPITests: XCTestCase { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + var elementArray = NSMutableArray() + elementArray.add(NSNumber(value: IMAUiElementType.elements_AD_ATTRIBUTION.rawValue)) let instance = TestAd.customInit() + instance.testElements = elementArray + let value = try? api.pigeonDelegate.uiElements(pigeonApi: api, pigeonInstance: instance) + + XCTAssertEqual(value, [UIElementType.adAttribution]) + } + + func testUiElementsWithStrings() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) + + var elementArray = NSMutableArray() + elementArray.add("adAttribution") + let instance = TestAd.customInit() + instance.testElements = elementArray let value = try? api.pigeonDelegate.uiElements(pigeonApi: api, pigeonInstance: instance) XCTAssertEqual(value, [UIElementType.adAttribution]) @@ -296,6 +312,8 @@ class TestAd: IMAAd { var _adPodInfo: TestAdPodInfo? var _universalAdID: TestUniversalAdID? + var testElements: NSArray = NSArray() + override var adId: String { return "string1" } @@ -325,7 +343,7 @@ class TestAd: IMAAd { } override var uiElements: [NSNumber] { - return [NSNumber(value: IMAUiElementType.elements_AD_ATTRIBUTION.rawValue)] + return testElements as! [NSNumber] } override var width: Int { From b00649e79ee8b6ecff5a1e2a406a0a8cfc8dc5c3 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:24:11 -0400 Subject: [PATCH 13/30] comment the code --- .../example/ios/RunnerTests/AdProxyAPITests.swift | 4 ++-- .../Sources/interactive_media_ads/AdProxyAPIDelegate.swift | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift index 250afd04f13..20102a6eac4 100644 --- a/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift +++ b/packages/interactive_media_ads/example/ios/RunnerTests/AdProxyAPITests.swift @@ -83,7 +83,7 @@ class AdProxyAPITests: XCTestCase { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - var elementArray = NSMutableArray() + let elementArray = NSMutableArray() elementArray.add(NSNumber(value: IMAUiElementType.elements_AD_ATTRIBUTION.rawValue)) let instance = TestAd.customInit() instance.testElements = elementArray @@ -96,7 +96,7 @@ class AdProxyAPITests: XCTestCase { let registrar = TestProxyApiRegistrar() let api = registrar.apiDelegate.pigeonApiIMAAd(registrar) - var elementArray = NSMutableArray() + let elementArray = NSMutableArray() elementArray.add("adAttribution") let instance = TestAd.customInit() instance.testElements = elementArray diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift index 3ba05f434d0..4205b6fd33d 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift @@ -41,6 +41,10 @@ class AdProxyAPIDelegate: PigeonApiDelegateIMAAd { func uiElements(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [UIElementType] { var uiElements: [UIElementType] = [] let uiElementsArray = pigeonInstance.uiElements as NSArray + // IMAAd.uiElements is expected to be NSArray, but is returning as + // an NSArray and causing a crash when using Swift. This attempts + // to handle both scenarios and returns UIElementType.unknown if the value + // can't be handled. for uiElement in uiElementsArray { switch uiElement { case let uiElement as String where uiElement == "adAttribution": From 7f77c0928cef02cea8d697c53baea5d0b974e48c Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 18 Aug 2025 17:41:30 -0400 Subject: [PATCH 14/30] version bump --- .../packages/interactive_media_ads/AdsRequestProxyApi.kt | 2 +- .../interactive_media_ads/AdsRequestProxyAPIDelegate.swift | 2 +- packages/interactive_media_ads/pubspec.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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 8b48a5a2db4..5961639a8ed 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.6+3" + const val pluginVersion = "0.2.6+4" } override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) { 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 baf2bcab164..8df1ac0cbab 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.6+3" + static let pluginVersion = "0.2.6+4" func pigeonDefaultConstructor( pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, diff --git a/packages/interactive_media_ads/pubspec.yaml b/packages/interactive_media_ads/pubspec.yaml index 0550c8c3a74..564a6826fa3 100644 --- a/packages/interactive_media_ads/pubspec.yaml +++ b/packages/interactive_media_ads/pubspec.yaml @@ -2,7 +2,7 @@ name: interactive_media_ads description: A Flutter plugin for using the Interactive Media Ads SDKs on Android and iOS. repository: https://github.com/flutter/packages/tree/main/packages/interactive_media_ads issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+interactive_media_ads%22 -version: 0.2.6+3 # This must match the version in +version: 0.2.6+4 # This must match the version in # `android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt` and # `ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift` From 473357a745698a2bcb5bd01aec30e46452deeb0f Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 19 Aug 2025 13:54:03 -0400 Subject: [PATCH 15/30] improve ad proxy code --- .../AdProxyAPIDelegate.swift | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift index 4205b6fd33d..a4d0682799f 100644 --- a/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift +++ b/packages/interactive_media_ads/ios/interactive_media_ads/Sources/interactive_media_ads/AdProxyAPIDelegate.swift @@ -39,29 +39,35 @@ class AdProxyAPIDelegate: PigeonApiDelegateIMAAd { } func uiElements(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> [UIElementType] { - var uiElements: [UIElementType] = [] let uiElementsArray = pigeonInstance.uiElements as NSArray // IMAAd.uiElements is expected to be NSArray, but is returning as // an NSArray and causing a crash when using Swift. This attempts // to handle both scenarios and returns UIElementType.unknown if the value // can't be handled. - for uiElement in uiElementsArray { - switch uiElement { - case let uiElement as String where uiElement == "adAttribution": - uiElements.append(UIElementType.adAttribution) - case let uiElement as NSNumber - where uiElement.intValue == IMAUiElementType.elements_AD_ATTRIBUTION.rawValue: - uiElements.append(UIElementType.adAttribution) - case let uiElement as String where uiElement == "countdown": - uiElements.append(UIElementType.countdown) - case let uiElement as NSNumber - where uiElement.intValue == IMAUiElementType.elements_COUNTDOWN.rawValue: - uiElements.append(UIElementType.countdown) - default: - uiElements.append(UIElementType.unknown) + return uiElementsArray.map { uiElement -> UIElementType in + if let stringValue = uiElement as? String { + switch stringValue { + case "adAttribution": + return .adAttribution + case "countdown": + return .countdown + default: + return .unknown + } + } else if let numberValue = uiElement as? NSNumber, + let type = IMAUiElementType(rawValue: numberValue.intValue) + { + switch type { + case .elements_AD_ATTRIBUTION: + return .adAttribution + case .elements_COUNTDOWN: + return .countdown + default: + return .unknown + } } + return .unknown } - return uiElements } func width(pigeonApi: PigeonApiIMAAd, pigeonInstance: IMAAd) throws -> Int64 { From 711064bc9cfb285e53620b45ce1a8b8a6a049956 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 19 Aug 2025 19:47:08 -0400 Subject: [PATCH 16/30] start of implementation --- .../lib/src/platform_interface/ad_event.dart | 4 +- .../src/platform_interface/platform_ad.dart | 125 ++++++++++++++++++ .../platform_ad_pod_info.dart | 3 + .../platform_companion_ad.dart | 4 + .../platform_universal_ad_id.dart | 14 ++ 5 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart create mode 100644 packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart create mode 100644 packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart create mode 100644 packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart diff --git a/packages/interactive_media_ads/lib/src/platform_interface/ad_event.dart b/packages/interactive_media_ads/lib/src/platform_interface/ad_event.dart index 5246f8226bd..d051f99404f 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/ad_event.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/ad_event.dart @@ -110,7 +110,7 @@ enum AdEventType { /// Simple data class used to transport ad playback information. @immutable -class AdEvent { +base class AdEvent { /// Creates an [AdEvent]. const AdEvent({required this.type, this.adData = const {}}); @@ -123,7 +123,7 @@ class AdEvent { /// An event raised when there is an error loading or playing ads. @immutable -class AdErrorEvent { +base class AdErrorEvent { /// Creates an [AdErrorEvent]. const AdErrorEvent({required this.error}); diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart new file mode 100644 index 00000000000..5d21f554419 --- /dev/null +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart @@ -0,0 +1,125 @@ +import 'ad_ui_element.dart'; +import 'platform_ad_pod_info.dart'; +import 'platform_companion_ad.dart'; +import 'platform_universal_ad_id.dart'; + +/// Data object representing a single ad. +base class PlatformAd { + /// Constructs a [PlatformAd]. + PlatformAd({ + required this.adId, + required this.adPodInfo, + required this.adSystem, + required this.adWrapperCreativeIds, + required this.adWrapperIds, + required this.adWrapperSystems, + required this.advertiserName, + required this.companionAds, + required this.contentType, + required this.creativeAdId, + required this.creativeId, + required this.dealId, + required this.description, + required this.duration, + required this.height, + required this.skipTimeOffset, + required this.surveyUrl, + required this.title, + required this.traffickingParameters, + required this.uiElements, + required this.universalAdIds, + required this.vastMediaBitrate, + required this.vastMediaHeight, + required this.vastMediaWidth, + required this.width, + required this.isLinear, + required this.isSkippable, + }); + + /// The ad ID as specified in the VAST response. + final String adId; + + /// The pod metadata object. + final PlatformAdPodInfo adPodInfo; + + /// The ad system as specified in the VAST response. + final String adSystem; + + /// The IDs of the ads' creatives, starting with the first wrapper ad. + final List adWrapperCreativeIds; + + /// The wrapper ad IDs as specified in the VAST response. + final List adWrapperIds; + + /// The wrapper ad systems as specified in the VAST response. + final List adWrapperSystems; + + /// The advertiser name as defined by the serving party. + final String advertiserName; + + /// The companions for the current ad while using DAI. + /// + /// Returns an empty list in any other scenario. + final List companionAds; + + /// The content type of the currently selected creative, or null if no + /// creative is selected or the content type is unavailable. + final String? contentType; + + /// The ISCI (Industry Standard Commercial Identifier) code for an ad. + final String creativeAdId; + + /// The ID of the selected creative for the ad, + final String creativeId; + + /// The first deal ID present in the wrapper chain for the current ad, + /// starting from the top. + final String dealId; + + /// The description of this ad from the VAST response. + final String? description; + + /// The duration of the ad. + final Duration? duration; + + /// The height of the selected creative if non-linear, else returns 0. + final int height; + + /// The number of seconds of playback before the ad becomes skippable. + final double skipTimeOffset; + + /// The URL associated with the survey for the given ad. + final String? surveyUrl; + + /// The title of this ad from the VAST response. + final String? title; + + /// The custom parameters associated with the ad at the time of ad + /// trafficking. + final String traffickingParameters; + + /// Te set of ad UI elements rendered by the IMA SDK for this ad. + final List uiElements; + + /// The list of all universal ad IDs for this ad. + final List universalAdIds; + + /// The VAST bitrate in Kbps of the selected creative. + final int vastMediaBitrate; + + /// The VAST media height in pixels of the selected creative. + final int vastMediaHeight; + + /// The VAST media width in pixels of the selected creative. + final int vastMediaWidth; + + /// The width of the selected creative if non-linear, else returns 0. + final int width; + + /// Indicates whether the ad’s current mode of operation is linear or + /// non-linear. + final bool isLinear; + + /// Indicates whether the ad can be skipped by the user. + final bool isSkippable; +} diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart new file mode 100644 index 00000000000..96d92ffda9b --- /dev/null +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart @@ -0,0 +1,3 @@ +base class PlatformAdPodInfo { + +} \ No newline at end of file diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart new file mode 100644 index 00000000000..80ce8dc1e3e --- /dev/null +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart @@ -0,0 +1,4 @@ +/// An object that holds data corresponding to the companion Ad. +base class PlatformCompanionAd { + +} \ No newline at end of file diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart new file mode 100644 index 00000000000..bbd869d1cbd --- /dev/null +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart @@ -0,0 +1,14 @@ +/// Simple data object containing universal ad ID information. +base class PlatformUniversalAdId { + PlatformUniversalAdId({required this.adIDValue, required this.adIDRegistry}); + + /// The universal ad ID value. + /// + /// This will be “unknown” if it isn’t defined by the ad. + final String adIDValue; + + /// The universal ad ID registry with which the value is registered. + /// + /// This will be “unknown” if it isn’t defined by the ad. + final String adIDRegistry; +} From 88541d84a40e6145c7b12d7519d3cccefa28b06f Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Sun, 7 Sep 2025 16:26:49 -0400 Subject: [PATCH 17/30] platform implementations --- .../lib/src/android/android_ads_manager.dart | 98 +++++++++++++++- .../lib/src/ios/ios_ads_manager_delegate.dart | 108 +++++++++++++++++- .../src/platform_interface/platform_ad.dart | 8 +- .../{ad_event.dart => platform_ad_event.dart} | 14 ++- .../platform_ad_pod_info.dart | 58 +++++++++- .../platform_ads_manager_delegate.dart | 6 +- .../platform_companion_ad.dart | 24 +++- .../platform_interface.dart | 6 +- .../platform_universal_ad_id.dart | 13 ++- .../interactive_media_ads_android.dart | 2 +- 10 files changed, 317 insertions(+), 20 deletions(-) rename packages/interactive_media_ads/lib/src/platform_interface/{ad_event.dart => platform_ad_event.dart} (91%) diff --git a/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart b/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart index b9fab053aba..a313b1c77f0 100644 --- a/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart +++ b/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart @@ -87,10 +87,11 @@ class AndroidAdsManager extends PlatformAdsManager { proxy.newAdEventListener( onAdEvent: (_, ima.AdEvent event) { weakThis.target?._managerDelegate?.params.onAdEvent?.call( - AdEvent( + PlatformAdEvent( type: toInterfaceEventType(event.type), adData: event.adData?.cast() ?? {}, + ad: event.ad != null ? _asPlatformAd(event.ad!) : null, ), ); }, @@ -114,3 +115,98 @@ class AndroidAdsManager extends PlatformAdsManager { ); } } + +PlatformAd _asPlatformAd(ima.Ad ad) { + return PlatformAd( + adId: ad.adId, + adPodInfo: _asPlatformAdInfo(ad.adPodInfo), + adSystem: ad.adSystem, + adWrapperCreativeIds: ad.adWrapperCreativeIds, + adWrapperIds: ad.adWrapperIds, + adWrapperSystems: ad.adWrapperSystems, + advertiserName: ad.advertiserName, + companionAds: List.unmodifiable( + ad.companionAds.map(_asPlatformCompanionAd), + ), + contentType: ad.contentType, + creativeAdId: ad.creativeAdId, + creativeId: ad.creativeId, + dealId: ad.dealId, + description: ad.description, + duration: + ad.duration != -1 + ? Duration( + milliseconds: + (ad.duration * Duration.millisecondsPerSecond).round(), + ) + : null, + height: ad.height, + skipTimeOffset: + ad.skipTimeOffset == -1 + ? Duration( + milliseconds: + (ad.skipTimeOffset * Duration.millisecondsPerSecond).round(), + ) + : null, + surveyUrl: ad.surveyUrl, + title: ad.title, + traffickingParameters: ad.traffickingParameters, + uiElements: + ad.uiElements + .map((ima.UiElement element) { + return switch (element) { + ima.UiElement.adAttribution => AdUIElement.adAttribution, + ima.UiElement.countdown => AdUIElement.countdown, + ima.UiElement.unknown => null, + }; + }) + .whereType() + .toList(), + universalAdIds: ad.universalAdIds.map(_asPlatformUniversalAdId).toList(), + vastMediaBitrate: ad.vastMediaBitrate, + vastMediaHeight: ad.vastMediaHeight, + vastMediaWidth: ad.vastMediaWidth, + width: ad.width, + isLinear: ad.isLinear, + isSkippable: ad.isSkippable, + ); +} + +PlatformAdPodInfo _asPlatformAdInfo(ima.AdPodInfo adPodInfo) { + return PlatformAdPodInfo( + adPosition: adPodInfo.adPosition, + maxDuration: Duration( + milliseconds: + (adPodInfo.maxDuration * Duration.millisecondsPerSecond).round(), + ), + podIndex: adPodInfo.podIndex, + timeOffset: Duration( + milliseconds: + (adPodInfo.timeOffset * Duration.millisecondsPerSecond).round(), + ), + totalAds: adPodInfo.totalAds, + isBumper: adPodInfo.isBumper, + ); +} + +PlatformCompanionAd _asPlatformCompanionAd(ima.CompanionAd ad) { + return PlatformCompanionAd( + apiFramework: ad.apiFramework, + height: ad.height == 0 ? null : ad.height, + resourceValue: ad.resourceValue, + width: ad.width == 0 ? null : ad.width, + ); +} + +PlatformUniversalAdId _asPlatformUniversalAdId( + ima.UniversalAdId universalAdId, +) { + return PlatformUniversalAdId( + adIDValue: + universalAdId.adIdValue != 'unknown' ? universalAdId.adIdValue : null, + adIDRegistry: + universalAdId.adIdRegistry != 'unknown' + ? universalAdId.adIdRegistry + : null, + ); +} diff --git a/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart b/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart index 7b194ca107d..e2f7b69ff2e 100644 --- a/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart +++ b/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart @@ -66,13 +66,14 @@ final class IOSAdsManagerDelegate extends PlatformAdsManagerDelegate { return interfaceDelegate.target!._iosParams._proxy.newIMAAdsManagerDelegate( didReceiveAdEvent: (_, __, ima.IMAAdEvent event) { interfaceDelegate.target?.params.onAdEvent?.call( - AdEvent( + PlatformAdEvent( type: toInterfaceEventType(event.type), adData: event.adData?.map((String? key, Object? value) { return MapEntry(key!, value.toString()); }) ?? {}, + ad: event.ad != null ? _asPlatformAd(event.ad!) : null, ), ); }, @@ -89,14 +90,115 @@ final class IOSAdsManagerDelegate extends PlatformAdsManagerDelegate { }, didRequestContentPause: (_, __) { interfaceDelegate.target?.params.onAdEvent?.call( - const AdEvent(type: AdEventType.contentPauseRequested), + const PlatformAdEvent( + type: AdEventType.contentPauseRequested, + ad: null, + ), ); }, didRequestContentResume: (_, __) { interfaceDelegate.target?.params.onAdEvent?.call( - const AdEvent(type: AdEventType.contentResumeRequested), + const PlatformAdEvent( + type: AdEventType.contentResumeRequested, + ad: null, + ), ); }, ); } } + +PlatformAd _asPlatformAd(ima.IMAAd ad) { + return PlatformAd( + adId: ad.adId, + adPodInfo: _asPlatformAdInfo(ad.adPodInfo), + adSystem: ad.adSystem, + adWrapperCreativeIds: ad.wrapperCreativeIDs, + adWrapperIds: ad.wrapperAdIDs, + adWrapperSystems: ad.wrapperSystems, + advertiserName: ad.advertiserName, + companionAds: List.unmodifiable( + ad.companionAds.map(_asPlatformCompanionAd), + ), + contentType: ad.contentType, + creativeAdId: ad.creativeAdID, + creativeId: ad.creativeID, + dealId: ad.dealID, + description: ad.adDescription, + duration: + ad.duration != -1 + ? Duration( + milliseconds: + (ad.duration * Duration.millisecondsPerSecond).round(), + ) + : null, + height: ad.height, + skipTimeOffset: + ad.skipTimeOffset == -1 + ? Duration( + milliseconds: + (ad.skipTimeOffset * Duration.millisecondsPerSecond).round(), + ) + : null, + surveyUrl: ad.surveyURL, + title: ad.adTitle, + traffickingParameters: ad.traffickingParameters, + uiElements: + ad.uiElements + .map((ima.UIElementType element) { + return switch (element) { + ima.UIElementType.adAttribution => AdUIElement.adAttribution, + ima.UIElementType.countdown => AdUIElement.countdown, + ima.UIElementType.unknown => null, + }; + }) + .whereType() + .toList(), + universalAdIds: ad.universalAdIDs.map(_asPlatformUniversalAdId).toList(), + vastMediaBitrate: ad.vastMediaBitrate, + vastMediaHeight: ad.vastMediaHeight, + vastMediaWidth: ad.vastMediaWidth, + width: ad.width, + isLinear: ad.isLinear, + isSkippable: ad.isSkippable, + ); +} + +PlatformAdPodInfo _asPlatformAdInfo(ima.IMAAdPodInfo adPodInfo) { + return PlatformAdPodInfo( + adPosition: adPodInfo.adPosition, + maxDuration: Duration( + milliseconds: + (adPodInfo.maxDuration * Duration.millisecondsPerSecond).round(), + ), + podIndex: adPodInfo.podIndex, + timeOffset: Duration( + milliseconds: + (adPodInfo.timeOffset * Duration.millisecondsPerSecond).round(), + ), + totalAds: adPodInfo.totalAds, + isBumper: adPodInfo.isBumper, + ); +} + +PlatformCompanionAd _asPlatformCompanionAd(ima.IMACompanionAd ad) { + return PlatformCompanionAd( + apiFramework: ad.apiFramework, + height: ad.height == 0 ? null : ad.height, + resourceValue: ad.resourceValue, + width: ad.width == 0 ? null : ad.width, + ); +} + +PlatformUniversalAdId _asPlatformUniversalAdId( + ima.IMAUniversalAdID universalAdId, +) { + return PlatformUniversalAdId( + adIDValue: + universalAdId.adIDValue != 'unknown' ? universalAdId.adIDValue : null, + adIDRegistry: + universalAdId.adIDRegistry != 'unknown' + ? universalAdId.adIDRegistry + : null, + ); +} diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart index 5d21f554419..b5e29be55c7 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart @@ -1,3 +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. + import 'ad_ui_element.dart'; import 'platform_ad_pod_info.dart'; import 'platform_companion_ad.dart'; @@ -85,8 +89,8 @@ base class PlatformAd { /// The height of the selected creative if non-linear, else returns 0. final int height; - /// The number of seconds of playback before the ad becomes skippable. - final double skipTimeOffset; + /// The playback time before the ad becomes skippable. + final Duration? skipTimeOffset; /// The URL associated with the survey for the given ad. final String? surveyUrl; diff --git a/packages/interactive_media_ads/lib/src/platform_interface/ad_event.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_event.dart similarity index 91% rename from packages/interactive_media_ads/lib/src/platform_interface/ad_event.dart rename to packages/interactive_media_ads/lib/src/platform_interface/platform_ad_event.dart index d051f99404f..66b0ff1040e 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/ad_event.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_event.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'ad_error.dart'; +import 'platform_ad.dart'; /// Types of events that can occur during ad playback. enum AdEventType { @@ -110,13 +111,20 @@ enum AdEventType { /// Simple data class used to transport ad playback information. @immutable -base class AdEvent { - /// Creates an [AdEvent]. - const AdEvent({required this.type, this.adData = const {}}); +base class PlatformAdEvent { + /// Creates an [PlatformAdEvent]. + const PlatformAdEvent({ + required this.type, + required this.ad, + this.adData = const {}, + }); /// The type of event that occurred. final AdEventType type; + /// The ad with which this event is associated. + final PlatformAd? ad; + /// A map containing any extra ad data for the event, if needed. final Map adData; } diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart index 96d92ffda9b..14768b597e1 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart @@ -1,3 +1,59 @@ +// 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. + +/// Simple data object containing podding metadata. base class PlatformAdPodInfo { + /// Constructs a [PlatformAdPodInfo]. + PlatformAdPodInfo({ + required this.adPosition, + required this.maxDuration, + required this.podIndex, + required this.timeOffset, + required this.totalAds, + required this.isBumper, + }); + + /// The position of the ad within the pod. + /// + /// The value returned is one-based, for example, 1 of 2, 2 of 2, etc. If the + /// ad is not part of a pod, this will return 1. + final int adPosition; + + /// The maximum duration of the pod. + /// + /// For unknown duration, null. + final Duration? maxDuration; + + /// Returns the index of the ad pod. + /// + /// Client side: For a preroll pod, returns 0. For midrolls, returns 1, 2,…, + /// N. For a postroll pod, returns -1. Defaults to 0 if this ad is not part of + /// a pod, or this pod is not part of a playlist. + /// + /// DAI VOD: Returns the index of the ad pod. For a preroll pod, returns 0. + /// For midrolls, returns 1, 2,…,N. For a postroll pod, returns N+1…N+X. + /// Defaults to 0 if this ad is not part of a pod, or this pod is not part of + /// a playlist. + /// + /// DAI live stream: For a preroll pod, returns 0. For midrolls, returns the + /// break ID. Returns -2 if pod index cannot be determined (internal error). + final int podIndex; + + /// The content time offset at which the current ad pod was scheduled. + /// + /// For preroll pod, 0 is returned. For midrolls, the scheduled time is + /// returned in seconds. For postroll, -1 is returned. Defaults to 0 if this + /// ad is not part of a pod, or the pod is not part of an ad playlist. + final Duration timeOffset; + + /// Total number of ads in the pod this ad belongs to, including bumpers. + /// + /// Will be 1 for standalone ads. + final int totalAds; -} \ No newline at end of file + /// Specifies whether the ad is a bumper. + /// + /// Bumpers are short videos used to open and close ad breaks. + final bool isBumper; +} diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ads_manager_delegate.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ads_manager_delegate.dart index ab2b835c310..3e8e40aab9d 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ads_manager_delegate.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ads_manager_delegate.dart @@ -4,8 +4,8 @@ import 'package:flutter/foundation.dart'; -import 'ad_event.dart'; import 'interactive_media_ads_platform.dart'; +import 'platform_ad_event.dart'; /// Object specifying creation parameters for creating a /// [PlatformAdsManagerDelegate]. @@ -47,8 +47,8 @@ base class PlatformAdsManagerDelegateCreationParams { this.onAdErrorEvent, }); - /// Invoked when there is an [AdEvent]. - final void Function(AdEvent event)? onAdEvent; + /// Invoked when there is an [PlatformAdEvent]. + final void Function(PlatformAdEvent event)? onAdEvent; /// Invoked when there was an error playing the ad. Log the error and resume /// playing content. diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart index 80ce8dc1e3e..6eacdac78ba 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart @@ -1,4 +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. + /// An object that holds data corresponding to the companion Ad. base class PlatformCompanionAd { + /// Constructs a [PlatformCompanionAd]. + PlatformCompanionAd({ + required this.apiFramework, + required this.height, + required this.resourceValue, + required this.width, + }); + + /// The API needed to execute this ad, or null if unavailable. + final String? apiFramework; + + /// The height of the companion in pixels. + final int? height; + + /// The URL for the static resource of this companion. + final String? resourceValue; -} \ No newline at end of file + /// The width of the companion in pixels. + final int? width; +} diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_interface.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_interface.dart index 27ac8ef1743..6968b14553c 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_interface.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_interface.dart @@ -3,17 +3,21 @@ // found in the LICENSE file. export 'ad_error.dart'; -export 'ad_event.dart'; export 'ad_ui_element.dart'; export 'build_widget_creation_params.dart'; export 'companion_ad_slot_size.dart'; export 'interactive_media_ads_platform.dart'; +export 'platform_ad.dart'; export 'platform_ad_display_container.dart'; +export 'platform_ad_event.dart'; +export 'platform_ad_pod_info.dart'; export 'platform_ads_loader.dart'; export 'platform_ads_manager.dart'; export 'platform_ads_manager_delegate.dart'; export 'platform_ads_rendering_settings.dart'; export 'platform_ads_request.dart'; +export 'platform_companion_ad.dart'; export 'platform_companion_ad_slot.dart'; export 'platform_content_progress_provider.dart'; export 'platform_ima_settings.dart'; +export 'platform_universal_ad_id.dart'; diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart index bbd869d1cbd..032f45232db 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart @@ -1,14 +1,19 @@ +// 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. + /// Simple data object containing universal ad ID information. base class PlatformUniversalAdId { + /// Constructs a [PlatformUniversalAdId]. PlatformUniversalAdId({required this.adIDValue, required this.adIDRegistry}); /// The universal ad ID value. /// - /// This will be “unknown” if it isn’t defined by the ad. - final String adIDValue; + /// This will be null if it isn’t defined by the ad. + final String? adIDValue; /// The universal ad ID registry with which the value is registered. /// - /// This will be “unknown” if it isn’t defined by the ad. - final String adIDRegistry; + /// This will be null if it isn’t defined by the ad. + final String? adIDRegistry; } diff --git a/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart b/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart index ec8ba61ba8a..b3a0e2498b5 100644 --- a/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart +++ b/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart @@ -1018,7 +1018,7 @@ abstract class CompanionAd { late final int height; /// The URL for the static resource of this companion. - late final String resourceValue; + late final String? resourceValue; /// The width of the companion in pixels. /// From 5839848a8c3e5e6410a40968ae754de26ed9f2be Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Sun, 7 Sep 2025 17:10:17 -0400 Subject: [PATCH 18/30] app facing interface implementation --- .../lib/interactive_media_ads.dart | 1 - .../interactive_media_ads/lib/src/ad.dart | 194 ++++++++++++++++++ .../lib/src/ads_manager_delegate.dart | 25 ++- 3 files changed, 217 insertions(+), 3 deletions(-) create mode 100644 packages/interactive_media_ads/lib/src/ad.dart diff --git a/packages/interactive_media_ads/lib/interactive_media_ads.dart b/packages/interactive_media_ads/lib/interactive_media_ads.dart index 40fb2842ff1..130f7cb336e 100644 --- a/packages/interactive_media_ads/lib/interactive_media_ads.dart +++ b/packages/interactive_media_ads/lib/interactive_media_ads.dart @@ -19,7 +19,6 @@ export 'src/platform_interface/platform_interface.dart' AdErrorCode, AdErrorEvent, AdErrorType, - AdEvent, AdEventType, AdUIElement, AdsLoadErrorData, diff --git a/packages/interactive_media_ads/lib/src/ad.dart b/packages/interactive_media_ads/lib/src/ad.dart new file mode 100644 index 00000000000..c02399071f8 --- /dev/null +++ b/packages/interactive_media_ads/lib/src/ad.dart @@ -0,0 +1,194 @@ +// 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. + +import 'platform_interface/platform_interface.dart'; + +/// Data object representing a single ad. +class Ad { + /// Constructs a [Ad] from a specific platform implementation. + Ad.fromPlatform(this.platform); + + /// Implementation of [PlatformAd] for the current platform. + final PlatformAd platform; + + /// The ad ID as specified in the VAST response. + String get adId => platform.adId; + + /// The pod metadata object. + AdPodInfo get adPodInfo => AdPodInfo._fromPlatform(platform.adPodInfo); + + /// The ad system as specified in the VAST response. + String get adSystem => platform.adSystem; + + /// The IDs of the ads' creatives, starting with the first wrapper ad. + List get adWrapperCreativeIds => platform.adWrapperCreativeIds; + + /// The wrapper ad IDs as specified in the VAST response. + List get adWrapperIds => platform.adWrapperIds; + + /// The wrapper ad systems as specified in the VAST response. + List get adWrapperSystems => platform.adWrapperSystems; + + /// The advertiser name as defined by the serving party. + String get advertiserName => platform.advertiserName; + + /// The companions for the current ad while using DAI. + /// + /// Returns an empty list in any other scenario. + List get companionAds => List.unmodifiable( + platform.companionAds.map(CompanionAd._fromPlatform), + ); + + /// The content type of the currently selected creative, or null if no + /// creative is selected or the content type is unavailable. + String? get contentType => platform.contentType; + + /// The ISCI (Industry Standard Commercial Identifier) code for an ad. + String get creativeAdId => platform.creativeAdId; + + /// The ID of the selected creative for the ad, + String get creativeId => platform.creativeId; + + /// The first deal ID present in the wrapper chain for the current ad, + /// starting from the top. + String get dealId => platform.dealId; + + /// The description of this ad from the VAST response. + String? get description => platform.description; + + /// The duration of the ad. + Duration? get duration => platform.duration; + + /// The height of the selected creative if non-linear, else returns 0. + int get height => platform.height; + + /// The playback time before the ad becomes skippable. + Duration? get skipTimeOffset => platform.skipTimeOffset; + + /// The URL associated with the survey for the given ad. + String? get surveyUrl => platform.surveyUrl; + + /// The title of this ad from the VAST response. + String? get title => platform.title; + + /// The custom parameters associated with the ad at the time of ad + /// trafficking. + String get traffickingParameters => platform.traffickingParameters; + + /// Te set of ad UI elements rendered by the IMA SDK for this ad. + List get uiElements => platform.uiElements; + + /// The list of all universal ad IDs for this ad. + List get universalAdIds => List.unmodifiable( + platform.universalAdIds.map(UniversalAdId._fromPlatform), + ); + + /// The VAST bitrate in Kbps of the selected creative. + int get vastMediaBitrate => platform.vastMediaBitrate; + + /// The VAST media height in pixels of the selected creative. + int get vastMediaHeight => platform.vastMediaHeight; + + /// The VAST media width in pixels of the selected creative. + int get vastMediaWidth => platform.vastMediaWidth; + + /// The width of the selected creative if non-linear, else returns 0. + int get width => platform.width; + + /// Indicates whether the ad’s current mode of operation is linear or + /// non-linear. + bool get isLinear => platform.isLinear; + + /// Indicates whether the ad can be skipped by the user. + bool get isSkippable => platform.isSkippable; +} + +/// Simple data object containing podding metadata. +class AdPodInfo { + AdPodInfo._fromPlatform(this.platform); + + /// Implementation of [PlatformAdPodInfo] for the current platform. + final PlatformAdPodInfo platform; + + /// The position of the ad within the pod. + /// + /// The value returned is one-based, for example, 1 of 2, 2 of 2, etc. If the + /// ad is not part of a pod, this will return 1. + int get adPosition => platform.adPosition; + + /// The maximum duration of the pod. + /// + /// For unknown duration, null. + Duration? get maxDuration => platform.maxDuration; + + /// Returns the index of the ad pod. + /// + /// Client side: For a preroll pod, returns 0. For midrolls, returns 1, 2,…, + /// N. For a postroll pod, returns -1. Defaults to 0 if this ad is not part of + /// a pod, or this pod is not part of a playlist. + /// + /// DAI VOD: Returns the index of the ad pod. For a preroll pod, returns 0. + /// For midrolls, returns 1, 2,…,N. For a postroll pod, returns N+1…N+X. + /// Defaults to 0 if this ad is not part of a pod, or this pod is not part of + /// a playlist. + /// + /// DAI live stream: For a preroll pod, returns 0. For midrolls, returns the + /// break ID. Returns -2 if pod index cannot be determined (internal error). + int get podIndex => platform.podIndex; + + /// The content time offset at which the current ad pod was scheduled. + /// + /// For preroll pod, 0 is returned. For midrolls, the scheduled time is + /// returned in seconds. For postroll, -1 is returned. Defaults to 0 if this + /// ad is not part of a pod, or the pod is not part of an ad playlist. + Duration get timeOffset => platform.timeOffset; + + /// Total number of ads in the pod this ad belongs to, including bumpers. + /// + /// Will be 1 for standalone ads. + int get totalAds => platform.totalAds; + + /// Specifies whether the ad is a bumper. + /// + /// Bumpers are short videos used to open and close ad breaks. + bool get isBumper => platform.isBumper; +} + +/// An object that holds data corresponding to the companion Ad. +class CompanionAd { + CompanionAd._fromPlatform(this.platform); + + /// Implementation of [PlatformCompanionAd] for the current platform. + final PlatformCompanionAd platform; + + /// The API needed to execute this ad, or null if unavailable. + String? get apiFramework => platform.apiFramework; + + /// The height of the companion in pixels. + int? get height => platform.height; + + /// The URL for the static resource of this companion. + String? get resourceValue => platform.resourceValue; + + /// The width of the companion in pixels. + int? get width => platform.width; +} + +/// Simple data object containing universal ad ID information. +class UniversalAdId { + UniversalAdId._fromPlatform(this.platform); + + /// Implementation of [PlatformUniversalAdId] for the current platform. + final PlatformUniversalAdId platform; + + /// The universal ad ID value. + /// + /// This will be null if it isn’t defined by the ad. + String? get adIDValue => platform.adIDValue; + + /// The universal ad ID registry with which the value is registered. + /// + /// This will be null if it isn’t defined by the ad. + String? get adIDRegistry => platform.adIDRegistry; +} diff --git a/packages/interactive_media_ads/lib/src/ads_manager_delegate.dart b/packages/interactive_media_ads/lib/src/ads_manager_delegate.dart index b240634302e..7ba0dfba6be 100644 --- a/packages/interactive_media_ads/lib/src/ads_manager_delegate.dart +++ b/packages/interactive_media_ads/lib/src/ads_manager_delegate.dart @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'ad.dart'; import 'platform_interface/platform_interface.dart'; /// Delegate for ad events or errors that occur during ad or stream @@ -37,7 +38,9 @@ class AdsManagerDelegate { void Function(AdErrorEvent event)? onAdErrorEvent, }) : this.fromPlatformCreationParams( PlatformAdsManagerDelegateCreationParams( - onAdEvent: onAdEvent, + onAdEvent: + (PlatformAdEvent event) => + onAdEvent?.call(AdEvent._fromPlatform(event)), onAdErrorEvent: onAdErrorEvent, ), ); @@ -80,10 +83,28 @@ class AdsManagerDelegate { final PlatformAdsManagerDelegate platform; /// Invoked when there is an [AdEvent]. - void Function(AdEvent event)? get onAdEvent => platform.params.onAdEvent; + void Function(AdEvent event)? get onAdEvent => + (AdEvent event) => platform.params.onAdEvent?.call(event.platform); /// Invoked when there was an error playing the ad. Log the error and resume /// playing content. void Function(AdErrorEvent event)? get onAdErrorEvent => platform.params.onAdErrorEvent; } + +/// Simple data class used to transport ad playback information. +class AdEvent { + AdEvent._fromPlatform(this.platform); + + /// Implementation of [PlatformAdEvent] for the current platform. + final PlatformAdEvent platform; + + /// The type of event that occurred. + AdEventType get type => platform.type; + + /// The ad with which this event is associated. + Ad? get ad => platform.ad != null ? Ad.fromPlatform(platform.ad!) : null; + + /// A map containing any extra ad data for the event, if needed. + Map get adData => platform.adData; +} From 457ffe5d0f2737ec85326fe7e85b131079277021 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Sun, 7 Sep 2025 17:17:56 -0400 Subject: [PATCH 19/30] fix tests --- .../lib/src/platform_interface/platform_ad_event.dart | 2 +- .../test/ads_manager_delegate_test.dart | 7 ++++--- .../test/android/ads_manager_test.dart | 2 +- .../test/ios/ads_manager_delegate_tests.dart | 6 +++--- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_event.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_event.dart index 66b0ff1040e..8dc1661314b 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_event.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_event.dart @@ -115,7 +115,7 @@ base class PlatformAdEvent { /// Creates an [PlatformAdEvent]. const PlatformAdEvent({ required this.type, - required this.ad, + this.ad, this.adData = const {}, }); diff --git a/packages/interactive_media_ads/test/ads_manager_delegate_test.dart b/packages/interactive_media_ads/test/ads_manager_delegate_test.dart index 6082cde442b..9569f2d4f98 100644 --- a/packages/interactive_media_ads/test/ads_manager_delegate_test.dart +++ b/packages/interactive_media_ads/test/ads_manager_delegate_test.dart @@ -28,15 +28,16 @@ void main() { (_) => throw UnimplementedError(), ); - void onAdEvent(AdEvent event) {} void onAdErrorEvent(AdErrorEvent event) {} final AdsManagerDelegate delegate = AdsManagerDelegate( - onAdEvent: onAdEvent, + onAdEvent: expectAsync1((AdEvent event) {}), onAdErrorEvent: onAdErrorEvent, ); - expect(delegate.platform.params.onAdEvent, onAdEvent); + delegate.platform.params.onAdEvent!( + const PlatformAdEvent(type: AdEventType.adBreakEnded), + ); expect(delegate.platform.params.onAdErrorEvent, onAdErrorEvent); }); } diff --git a/packages/interactive_media_ads/test/android/ads_manager_test.dart b/packages/interactive_media_ads/test/android/ads_manager_test.dart index 9dc926c20f9..8f274bacd70 100644 --- a/packages/interactive_media_ads/test/android/ads_manager_test.dart +++ b/packages/interactive_media_ads/test/android/ads_manager_test.dart @@ -142,7 +142,7 @@ void main() { await adsManager.setAdsManagerDelegate( AndroidAdsManagerDelegate( PlatformAdsManagerDelegateCreationParams( - onAdEvent: expectAsync1((AdEvent event) { + onAdEvent: expectAsync1((PlatformAdEvent event) { expect(event.type, AdEventType.allAdsCompleted); expect(event.adData, {'hello': 'world'}); }), diff --git a/packages/interactive_media_ads/test/ios/ads_manager_delegate_tests.dart b/packages/interactive_media_ads/test/ios/ads_manager_delegate_tests.dart index d2df945123e..8b871337142 100644 --- a/packages/interactive_media_ads/test/ios/ads_manager_delegate_tests.dart +++ b/packages/interactive_media_ads/test/ios/ads_manager_delegate_tests.dart @@ -56,7 +56,7 @@ void main() { final IOSAdsManagerDelegate adsManagerDelegate = IOSAdsManagerDelegate( IOSAdsManagerDelegateCreationParams( - onAdEvent: expectAsync1((AdEvent event) { + onAdEvent: expectAsync1((PlatformAdEvent event) { expect(event.type, AdEventType.allAdsCompleted); expect(event.adData, {'hello': 'world'}); }), @@ -123,7 +123,7 @@ void main() { final IOSAdsManagerDelegate adsManagerDelegate = IOSAdsManagerDelegate( IOSAdsManagerDelegateCreationParams( - onAdEvent: expectAsync1((AdEvent event) { + onAdEvent: expectAsync1((PlatformAdEvent event) { expect(event.type, AdEventType.contentPauseRequested); }), proxy: imaProxy, @@ -183,7 +183,7 @@ void main() { final IOSAdsManagerDelegate adsManagerDelegate = IOSAdsManagerDelegate( IOSAdsManagerDelegateCreationParams( - onAdEvent: expectAsync1((AdEvent event) { + onAdEvent: expectAsync1((PlatformAdEvent event) { expect(event.type, AdEventType.contentResumeRequested); }), proxy: imaProxy, From 701e8e711f0d7df817dc530a98547dc834321688 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Sun, 7 Sep 2025 17:27:37 -0400 Subject: [PATCH 20/30] version bump --- packages/interactive_media_ads/CHANGELOG.md | 4 ++++ .../packages/interactive_media_ads/AdsRequestProxyApi.kt | 2 +- .../interactive_media_ads/AdsRequestProxyAPIDelegate.swift | 2 +- packages/interactive_media_ads/pubspec.yaml | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/interactive_media_ads/CHANGELOG.md b/packages/interactive_media_ads/CHANGELOG.md index 5c84cf244ec..043f263a271 100644 --- a/packages/interactive_media_ads/CHANGELOG.md +++ b/packages/interactive_media_ads/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.6+8 + +* Adds support for accessing data for an ad. See `AdEvent.ad`. + ## 0.2.6+7 * Updates Android `PlatformAdDisplayContainer` implementation to support preloading ads. 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 5a239da78ba..962cea169b9 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.6+7" + const val pluginVersion = "0.2.6+8" } override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) { 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 802c3851508..818a040c865 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.6+7" + static let pluginVersion = "0.2.6+8" func pigeonDefaultConstructor( pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer, diff --git a/packages/interactive_media_ads/pubspec.yaml b/packages/interactive_media_ads/pubspec.yaml index 17bb2c2c94f..1a86aa79aa4 100644 --- a/packages/interactive_media_ads/pubspec.yaml +++ b/packages/interactive_media_ads/pubspec.yaml @@ -2,7 +2,7 @@ name: interactive_media_ads description: A Flutter plugin for using the Interactive Media Ads SDKs on Android and iOS. repository: https://github.com/flutter/packages/tree/main/packages/interactive_media_ads issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+interactive_media_ads%22 -version: 0.2.6+7 # This must match the version in +version: 0.2.6+8 # This must match the version in # `android/src/main/kotlin/dev/flutter/packages/interactive_media_ads/AdsRequestProxyApi.kt` and # `ios/interactive_media_ads/Sources/interactive_media_ads/AdsRequestProxyAPIDelegate.swift` From 6bff03fe7140bacf571d814fed5c5b673a770644 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Sun, 7 Sep 2025 17:30:24 -0400 Subject: [PATCH 21/30] make resource value nullable --- .../InteractiveMediaAdsLibrary.g.kt | 2 +- .../lib/src/android/interactive_media_ads.g.dart | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) 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 f0028be7e34..3441ee59dc2 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 @@ -5860,7 +5860,7 @@ abstract class PigeonApiCompanionAd( /** The URL for the static resource of this companion. */ abstract fun resourceValue( pigeon_instance: com.google.ads.interactivemedia.v3.api.CompanionAd - ): String + ): String? /** * The width of the companion in pixels. 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 340fbc796be..bb97d133615 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 @@ -7534,7 +7534,7 @@ class CompanionAd extends PigeonInternalProxyApiBaseClass { super.pigeon_instanceManager, this.apiFramework, required this.height, - required this.resourceValue, + this.resourceValue, required this.width, }); @@ -7547,7 +7547,7 @@ class CompanionAd extends PigeonInternalProxyApiBaseClass { final int height; /// The URL for the static resource of this companion. - final String resourceValue; + final String? resourceValue; /// The width of the companion in pixels. /// @@ -7561,7 +7561,7 @@ class CompanionAd extends PigeonInternalProxyApiBaseClass { CompanionAd Function( String? apiFramework, int height, - String resourceValue, + String? resourceValue, int width, )? pigeon_newInstance, @@ -7599,10 +7599,6 @@ class CompanionAd extends PigeonInternalProxyApiBaseClass { 'Argument for dev.flutter.pigeon.interactive_media_ads.CompanionAd.pigeon_newInstance was null, expected non-null int.', ); final String? arg_resourceValue = (args[3] as String?); - assert( - arg_resourceValue != null, - 'Argument for dev.flutter.pigeon.interactive_media_ads.CompanionAd.pigeon_newInstance was null, expected non-null String.', - ); final int? arg_width = (args[4] as int?); assert( arg_width != null, @@ -7614,7 +7610,7 @@ class CompanionAd extends PigeonInternalProxyApiBaseClass { pigeon_newInstance?.call( arg_apiFramework, arg_height!, - arg_resourceValue!, + arg_resourceValue, arg_width!, ) ?? CompanionAd.pigeon_detached( @@ -7622,7 +7618,7 @@ class CompanionAd extends PigeonInternalProxyApiBaseClass { pigeon_instanceManager: pigeon_instanceManager, apiFramework: arg_apiFramework, height: arg_height!, - resourceValue: arg_resourceValue!, + resourceValue: arg_resourceValue, width: arg_width!, ), arg_pigeon_instanceIdentifier!, From 7f30199c28bdf026237005495ba99ca515455c9f Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:22:56 -0400 Subject: [PATCH 22/30] analyze error --- .../lib/src/ios/ios_ads_manager_delegate.dart | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart b/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart index e2f7b69ff2e..057793ea493 100644 --- a/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart +++ b/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart @@ -90,18 +90,12 @@ final class IOSAdsManagerDelegate extends PlatformAdsManagerDelegate { }, didRequestContentPause: (_, __) { interfaceDelegate.target?.params.onAdEvent?.call( - const PlatformAdEvent( - type: AdEventType.contentPauseRequested, - ad: null, - ), + const PlatformAdEvent(type: AdEventType.contentPauseRequested), ); }, didRequestContentResume: (_, __) { interfaceDelegate.target?.params.onAdEvent?.call( - const PlatformAdEvent( - type: AdEventType.contentResumeRequested, - ad: null, - ), + const PlatformAdEvent(type: AdEventType.contentResumeRequested), ); }, ); From 575eebd9478ab8f4a96b9196c5a5bc01d8ac2263 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Thu, 11 Sep 2025 12:57:46 -0400 Subject: [PATCH 23/30] update docs and add null checks --- .../interactive_media_ads/lib/src/ad.dart | 33 ++++++++------- .../lib/src/android/android_ads_manager.dart | 36 +++++++++------- .../lib/src/ios/ios_ads_manager_delegate.dart | 42 ++++++++++--------- .../src/platform_interface/platform_ad.dart | 16 +++---- .../platform_ad_pod_info.dart | 4 +- .../interactive_media_ads_android.dart | 2 +- 6 files changed, 73 insertions(+), 60 deletions(-) diff --git a/packages/interactive_media_ads/lib/src/ad.dart b/packages/interactive_media_ads/lib/src/ad.dart index c02399071f8..f9676901e04 100644 --- a/packages/interactive_media_ads/lib/src/ad.dart +++ b/packages/interactive_media_ads/lib/src/ad.dart @@ -6,7 +6,7 @@ import 'platform_interface/platform_interface.dart'; /// Data object representing a single ad. class Ad { - /// Constructs a [Ad] from a specific platform implementation. + /// Constructs an [Ad] from a specific platform implementation. Ad.fromPlatform(this.platform); /// Implementation of [PlatformAd] for the current platform. @@ -16,19 +16,19 @@ class Ad { String get adId => platform.adId; /// The pod metadata object. - AdPodInfo get adPodInfo => AdPodInfo._fromPlatform(platform.adPodInfo); + AdPodInfo get adPodInfo => AdPodInfo.fromPlatform(platform.adPodInfo); /// The ad system as specified in the VAST response. String get adSystem => platform.adSystem; /// The IDs of the ads' creatives, starting with the first wrapper ad. - List get adWrapperCreativeIds => platform.adWrapperCreativeIds; + List get wrapperCreativeIds => platform.wrapperCreativeIds; /// The wrapper ad IDs as specified in the VAST response. - List get adWrapperIds => platform.adWrapperIds; + List get wrapperIds => platform.wrapperIds; /// The wrapper ad systems as specified in the VAST response. - List get adWrapperSystems => platform.adWrapperSystems; + List get wrapperSystems => platform.wrapperSystems; /// The advertiser name as defined by the serving party. String get advertiserName => platform.advertiserName; @@ -37,7 +37,7 @@ class Ad { /// /// Returns an empty list in any other scenario. List get companionAds => List.unmodifiable( - platform.companionAds.map(CompanionAd._fromPlatform), + platform.companionAds.map(CompanionAd.fromPlatform), ); /// The content type of the currently selected creative, or null if no @@ -64,6 +64,8 @@ class Ad { int get height => platform.height; /// The playback time before the ad becomes skippable. + /// + /// The value is null for non-skippable ads, or if the value is unavailable. Duration? get skipTimeOffset => platform.skipTimeOffset; /// The URL associated with the survey for the given ad. @@ -76,12 +78,12 @@ class Ad { /// trafficking. String get traffickingParameters => platform.traffickingParameters; - /// Te set of ad UI elements rendered by the IMA SDK for this ad. - List get uiElements => platform.uiElements; + /// The set of ad UI elements rendered by the IMA SDK for this ad. + Set get uiElements => platform.uiElements; /// The list of all universal ad IDs for this ad. List get universalAdIds => List.unmodifiable( - platform.universalAdIds.map(UniversalAdId._fromPlatform), + platform.universalAdIds.map(UniversalAdId.fromPlatform), ); /// The VAST bitrate in Kbps of the selected creative. @@ -106,7 +108,8 @@ class Ad { /// Simple data object containing podding metadata. class AdPodInfo { - AdPodInfo._fromPlatform(this.platform); + /// Constructs an [AdPodInfo] from a specific platform implementation. + AdPodInfo.fromPlatform(this.platform); /// Implementation of [PlatformAdPodInfo] for the current platform. final PlatformAdPodInfo platform; @@ -140,8 +143,8 @@ class AdPodInfo { /// The content time offset at which the current ad pod was scheduled. /// /// For preroll pod, 0 is returned. For midrolls, the scheduled time is - /// returned in seconds. For postroll, -1 is returned. Defaults to 0 if this - /// ad is not part of a pod, or the pod is not part of an ad playlist. + /// returned. For postroll, -1 is returned. Defaults to 0 if this ad is not + /// part of a pod, or the pod is not part of an ad playlist. Duration get timeOffset => platform.timeOffset; /// Total number of ads in the pod this ad belongs to, including bumpers. @@ -157,7 +160,8 @@ class AdPodInfo { /// An object that holds data corresponding to the companion Ad. class CompanionAd { - CompanionAd._fromPlatform(this.platform); + /// Constructs a [CompanionAd] from a specific platform implementation. + CompanionAd.fromPlatform(this.platform); /// Implementation of [PlatformCompanionAd] for the current platform. final PlatformCompanionAd platform; @@ -177,7 +181,8 @@ class CompanionAd { /// Simple data object containing universal ad ID information. class UniversalAdId { - UniversalAdId._fromPlatform(this.platform); + /// Constructs an [UniversalAdId] from a specific platform implementation. + UniversalAdId.fromPlatform(this.platform); /// Implementation of [PlatformUniversalAdId] for the current platform. final PlatformUniversalAdId platform; diff --git a/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart b/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart index a313b1c77f0..ce5f467c77e 100644 --- a/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart +++ b/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart @@ -121,9 +121,9 @@ PlatformAd _asPlatformAd(ima.Ad ad) { adId: ad.adId, adPodInfo: _asPlatformAdInfo(ad.adPodInfo), adSystem: ad.adSystem, - adWrapperCreativeIds: ad.adWrapperCreativeIds, - adWrapperIds: ad.adWrapperIds, - adWrapperSystems: ad.adWrapperSystems, + wrapperCreativeIds: ad.adWrapperCreativeIds, + wrapperIds: ad.adWrapperIds, + wrapperSystems: ad.adWrapperSystems, advertiserName: ad.advertiserName, companionAds: List.unmodifiable( ad.companionAds.map(_asPlatformCompanionAd), @@ -134,12 +134,12 @@ PlatformAd _asPlatformAd(ima.Ad ad) { dealId: ad.dealId, description: ad.description, duration: - ad.duration != -1 - ? Duration( + ad.duration == -1 + ? null + : Duration( milliseconds: (ad.duration * Duration.millisecondsPerSecond).round(), - ) - : null, + ), height: ad.height, skipTimeOffset: ad.skipTimeOffset == -1 @@ -161,7 +161,7 @@ PlatformAd _asPlatformAd(ima.Ad ad) { }; }) .whereType() - .toList(), + .toSet(), universalAdIds: ad.universalAdIds.map(_asPlatformUniversalAdId).toList(), vastMediaBitrate: ad.vastMediaBitrate, vastMediaHeight: ad.vastMediaHeight, @@ -175,10 +175,14 @@ PlatformAd _asPlatformAd(ima.Ad ad) { PlatformAdPodInfo _asPlatformAdInfo(ima.AdPodInfo adPodInfo) { return PlatformAdPodInfo( adPosition: adPodInfo.adPosition, - maxDuration: Duration( - milliseconds: - (adPodInfo.maxDuration * Duration.millisecondsPerSecond).round(), - ), + maxDuration: + adPodInfo.maxDuration == -1 + ? null + : Duration( + milliseconds: + (adPodInfo.maxDuration * Duration.millisecondsPerSecond) + .round(), + ), podIndex: adPodInfo.podIndex, timeOffset: Duration( milliseconds: @@ -203,10 +207,10 @@ PlatformUniversalAdId _asPlatformUniversalAdId( ) { return PlatformUniversalAdId( adIDValue: - universalAdId.adIdValue != 'unknown' ? universalAdId.adIdValue : null, + universalAdId.adIdValue == 'unknown' ? null : universalAdId.adIdValue, adIDRegistry: - universalAdId.adIdRegistry != 'unknown' - ? universalAdId.adIdRegistry - : null, + universalAdId.adIdRegistry == 'unknown' + ? null + : universalAdId.adIdRegistry, ); } diff --git a/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart b/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart index 057793ea493..34af06306ac 100644 --- a/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart +++ b/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart @@ -107,9 +107,9 @@ PlatformAd _asPlatformAd(ima.IMAAd ad) { adId: ad.adId, adPodInfo: _asPlatformAdInfo(ad.adPodInfo), adSystem: ad.adSystem, - adWrapperCreativeIds: ad.wrapperCreativeIDs, - adWrapperIds: ad.wrapperAdIDs, - adWrapperSystems: ad.wrapperSystems, + wrapperCreativeIds: ad.wrapperCreativeIDs, + wrapperIds: ad.wrapperAdIDs, + wrapperSystems: ad.wrapperSystems, advertiserName: ad.advertiserName, companionAds: List.unmodifiable( ad.companionAds.map(_asPlatformCompanionAd), @@ -120,20 +120,20 @@ PlatformAd _asPlatformAd(ima.IMAAd ad) { dealId: ad.dealID, description: ad.adDescription, duration: - ad.duration != -1 - ? Duration( + ad.duration == -1 + ? null + : Duration( milliseconds: (ad.duration * Duration.millisecondsPerSecond).round(), - ) - : null, + ), height: ad.height, skipTimeOffset: ad.skipTimeOffset == -1 - ? Duration( + ? null + : Duration( milliseconds: (ad.skipTimeOffset * Duration.millisecondsPerSecond).round(), - ) - : null, + ), surveyUrl: ad.surveyURL, title: ad.adTitle, traffickingParameters: ad.traffickingParameters, @@ -147,7 +147,7 @@ PlatformAd _asPlatformAd(ima.IMAAd ad) { }; }) .whereType() - .toList(), + .toSet(), universalAdIds: ad.universalAdIDs.map(_asPlatformUniversalAdId).toList(), vastMediaBitrate: ad.vastMediaBitrate, vastMediaHeight: ad.vastMediaHeight, @@ -161,10 +161,14 @@ PlatformAd _asPlatformAd(ima.IMAAd ad) { PlatformAdPodInfo _asPlatformAdInfo(ima.IMAAdPodInfo adPodInfo) { return PlatformAdPodInfo( adPosition: adPodInfo.adPosition, - maxDuration: Duration( - milliseconds: - (adPodInfo.maxDuration * Duration.millisecondsPerSecond).round(), - ), + maxDuration: + adPodInfo.maxDuration == -1 + ? null + : Duration( + milliseconds: + (adPodInfo.maxDuration * Duration.millisecondsPerSecond) + .round(), + ), podIndex: adPodInfo.podIndex, timeOffset: Duration( milliseconds: @@ -189,10 +193,10 @@ PlatformUniversalAdId _asPlatformUniversalAdId( ) { return PlatformUniversalAdId( adIDValue: - universalAdId.adIDValue != 'unknown' ? universalAdId.adIDValue : null, + universalAdId.adIDValue == 'unknown' ? null : universalAdId.adIDValue, adIDRegistry: - universalAdId.adIDRegistry != 'unknown' - ? universalAdId.adIDRegistry - : null, + universalAdId.adIDRegistry == 'unknown' + ? null + : universalAdId.adIDRegistry, ); } diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart index b5e29be55c7..28ea88967b6 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart @@ -14,9 +14,9 @@ base class PlatformAd { required this.adId, required this.adPodInfo, required this.adSystem, - required this.adWrapperCreativeIds, - required this.adWrapperIds, - required this.adWrapperSystems, + required this.wrapperCreativeIds, + required this.wrapperIds, + required this.wrapperSystems, required this.advertiserName, required this.companionAds, required this.contentType, @@ -50,13 +50,13 @@ base class PlatformAd { final String adSystem; /// The IDs of the ads' creatives, starting with the first wrapper ad. - final List adWrapperCreativeIds; + final List wrapperCreativeIds; /// The wrapper ad IDs as specified in the VAST response. - final List adWrapperIds; + final List wrapperIds; /// The wrapper ad systems as specified in the VAST response. - final List adWrapperSystems; + final List wrapperSystems; /// The advertiser name as defined by the serving party. final String advertiserName; @@ -102,8 +102,8 @@ base class PlatformAd { /// trafficking. final String traffickingParameters; - /// Te set of ad UI elements rendered by the IMA SDK for this ad. - final List uiElements; + /// The set of ad UI elements rendered by the IMA SDK for this ad. + final Set uiElements; /// The list of all universal ad IDs for this ad. final List universalAdIds; diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart index 14768b597e1..36319d598f5 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart @@ -43,8 +43,8 @@ base class PlatformAdPodInfo { /// The content time offset at which the current ad pod was scheduled. /// /// For preroll pod, 0 is returned. For midrolls, the scheduled time is - /// returned in seconds. For postroll, -1 is returned. Defaults to 0 if this - /// ad is not part of a pod, or the pod is not part of an ad playlist. + /// returned. For postroll, -1 is returned. Defaults to 0 if this ad is not + /// part of a pod, or the pod is not part of an ad playlist. final Duration timeOffset; /// Total number of ads in the pod this ad belongs to, including bumpers. diff --git a/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart b/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart index 71a18004ca7..508c8969771 100644 --- a/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart +++ b/packages/interactive_media_ads/pigeons/interactive_media_ads_android.dart @@ -1155,7 +1155,7 @@ abstract class Ad { /// trafficking. late final String traffickingParameters; - /// Te set of ad UI elements rendered by the IMA SDK for this ad. + /// The set of ad UI elements rendered by the IMA SDK for this ad. late final List uiElements; /// The list of all universal ad IDs for this ad. From 8567b5a40b1c117732c3dc15a19135b8335f1c03 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Fri, 12 Sep 2025 13:49:25 -0400 Subject: [PATCH 24/30] add test for android ads --- .../lib/interactive_media_ads.dart | 1 + .../lib/src/android/android_ads_manager.dart | 6 +- .../test/android/ad_test.dart | 217 +++++++++++ .../test/android/ad_test.mocks.dart | 368 ++++++++++++++++++ 4 files changed, 589 insertions(+), 3 deletions(-) create mode 100644 packages/interactive_media_ads/test/android/ad_test.dart create mode 100644 packages/interactive_media_ads/test/android/ad_test.mocks.dart diff --git a/packages/interactive_media_ads/lib/interactive_media_ads.dart b/packages/interactive_media_ads/lib/interactive_media_ads.dart index 130f7cb336e..3b6b95ccbd4 100644 --- a/packages/interactive_media_ads/lib/interactive_media_ads.dart +++ b/packages/interactive_media_ads/lib/interactive_media_ads.dart @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +export 'src/ad.dart'; export 'src/ad_display_container.dart'; export 'src/ads_loader.dart'; export 'src/ads_manager_delegate.dart'; diff --git a/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart b/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart index ce5f467c77e..07e3b78318f 100644 --- a/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart +++ b/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart @@ -143,11 +143,11 @@ PlatformAd _asPlatformAd(ima.Ad ad) { height: ad.height, skipTimeOffset: ad.skipTimeOffset == -1 - ? Duration( + ? null + : Duration( milliseconds: (ad.skipTimeOffset * Duration.millisecondsPerSecond).round(), - ) - : null, + ), surveyUrl: ad.surveyUrl, title: ad.title, traffickingParameters: ad.traffickingParameters, diff --git a/packages/interactive_media_ads/test/android/ad_test.dart b/packages/interactive_media_ads/test/android/ad_test.dart new file mode 100644 index 00000000000..731df9e7d90 --- /dev/null +++ b/packages/interactive_media_ads/test/android/ad_test.dart @@ -0,0 +1,217 @@ +// 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. + +import 'package:flutter_test/flutter_test.dart'; +import 'package:interactive_media_ads/src/android/android_ads_manager.dart'; +import 'package:interactive_media_ads/src/android/android_ads_manager_delegate.dart'; +import 'package:interactive_media_ads/src/android/interactive_media_ads.g.dart' + as ima; +import 'package:interactive_media_ads/src/platform_interface/platform_interface.dart'; +import 'package:mockito/annotations.dart'; +import 'package:mockito/mockito.dart'; + +import 'ad_test.mocks.dart'; + +@GenerateNiceMocks(>[ + MockSpec(), + MockSpec(), + MockSpec(), + MockSpec(), +]) +void main() { + group('Ad', () { + setUp(() { + ima.PigeonOverrides.pigeon_reset(); + }); + + test('UniversalAdId sets unknown values to null', () async { + final MockAdsManager mockAdsManager = MockAdsManager(); + + late final void Function(ima.AdEventListener, ima.AdEvent) + onAdEventCallback; + + ima.PigeonOverrides.adEventListener_new = ({ + required void Function(ima.AdEventListener, ima.AdEvent) onAdEvent, + }) { + onAdEventCallback = onAdEvent; + return MockAdEventListener(); + }; + + ima.PigeonOverrides.adErrorListener_new = ({ + required void Function(ima.AdErrorListener, ima.AdErrorEvent) onAdError, + }) { + return MockAdErrorListener(); + }; + + final AndroidAdsManager adsManager = AndroidAdsManager(mockAdsManager); + + await adsManager.setAdsManagerDelegate( + AndroidAdsManagerDelegate( + PlatformAdsManagerDelegateCreationParams( + onAdEvent: expectAsync1((PlatformAdEvent event) { + expect(event.ad!.universalAdIds.single.adIDValue, isNull); + expect(event.ad!.universalAdIds.single.adIDRegistry, isNull); + }), + ), + ), + ); + + final MockAdEvent mockAdEvent = MockAdEvent(); + when(mockAdEvent.type).thenReturn(ima.AdEventType.allAdsCompleted); + when(mockAdEvent.ad).thenReturn( + createTestAd( + universalAdIds: [ + ima.UniversalAdId.pigeon_detached( + adIdRegistry: 'unknown', + adIdValue: 'unknown', + ), + ], + ), + ); + + onAdEventCallback(MockAdEventListener(), mockAdEvent); + }); + + test('CompanionAd sets 0 values for height/width to null', () async { + final MockAdsManager mockAdsManager = MockAdsManager(); + + late final void Function(ima.AdEventListener, ima.AdEvent) + onAdEventCallback; + + ima.PigeonOverrides.adEventListener_new = ({ + required void Function(ima.AdEventListener, ima.AdEvent) onAdEvent, + }) { + onAdEventCallback = onAdEvent; + return MockAdEventListener(); + }; + + ima.PigeonOverrides.adErrorListener_new = ({ + required void Function(ima.AdErrorListener, ima.AdErrorEvent) onAdError, + }) { + return MockAdErrorListener(); + }; + + final AndroidAdsManager adsManager = AndroidAdsManager(mockAdsManager); + + await adsManager.setAdsManagerDelegate( + AndroidAdsManagerDelegate( + PlatformAdsManagerDelegateCreationParams( + onAdEvent: expectAsync1((PlatformAdEvent event) { + expect(event.ad!.companionAds.single.width, isNull); + expect(event.ad!.companionAds.single.height, isNull); + }), + ), + ), + ); + + final MockAdEvent mockAdEvent = MockAdEvent(); + when(mockAdEvent.type).thenReturn(ima.AdEventType.allAdsCompleted); + when(mockAdEvent.ad).thenReturn( + createTestAd( + companionAds: [ + ima.CompanionAd.pigeon_detached(height: 0, width: 0), + ], + ), + ); + + onAdEventCallback(MockAdEventListener(), mockAdEvent); + }); + + test('Ad sets durations of -1 to null', () async { + final MockAdsManager mockAdsManager = MockAdsManager(); + + late final void Function(ima.AdEventListener, ima.AdEvent) + onAdEventCallback; + + ima.PigeonOverrides.adEventListener_new = ({ + required void Function(ima.AdEventListener, ima.AdEvent) onAdEvent, + }) { + onAdEventCallback = onAdEvent; + return MockAdEventListener(); + }; + + ima.PigeonOverrides.adErrorListener_new = ({ + required void Function(ima.AdErrorListener, ima.AdErrorEvent) onAdError, + }) { + return MockAdErrorListener(); + }; + + final AndroidAdsManager adsManager = AndroidAdsManager(mockAdsManager); + + await adsManager.setAdsManagerDelegate( + AndroidAdsManagerDelegate( + PlatformAdsManagerDelegateCreationParams( + onAdEvent: expectAsync1((PlatformAdEvent event) { + expect(event.ad!.duration, isNull); + expect(event.ad!.skipTimeOffset, isNull); + expect(event.ad!.adPodInfo.maxDuration, isNull); + }), + ), + ), + ); + + final MockAdEvent mockAdEvent = MockAdEvent(); + when(mockAdEvent.type).thenReturn(ima.AdEventType.allAdsCompleted); + when(mockAdEvent.ad).thenReturn( + createTestAd( + duration: -1, + skipTimeOffset: -1, + adPodInfo: ima.AdPodInfo.pigeon_detached( + adPosition: 0, + maxDuration: -1, + podIndex: 0, + timeOffset: 0, + totalAds: 0, + isBumper: true, + ), + ), + ); + + onAdEventCallback(MockAdEventListener(), mockAdEvent); + }); + }); +} + +ima.Ad createTestAd({ + List? universalAdIds, + List? companionAds, + ima.AdPodInfo? adPodInfo, + double? duration, + double? skipTimeOffset, +}) { + return ima.Ad.pigeon_detached( + adId: '', + adPodInfo: + adPodInfo ?? + ima.AdPodInfo.pigeon_detached( + adPosition: 0, + maxDuration: 0, + podIndex: 0, + timeOffset: 0, + totalAds: 0, + isBumper: false, + ), + adSystem: '', + adWrapperCreativeIds: const [], + adWrapperIds: const [], + adWrapperSystems: const [], + advertiserName: '', + companionAds: companionAds ?? const [], + creativeAdId: '', + creativeId: '', + dealId: '', + duration: duration ?? 0, + height: 0, + skipTimeOffset: skipTimeOffset ?? 0, + traffickingParameters: '', + uiElements: const [], + universalAdIds: universalAdIds ?? const [], + vastMediaBitrate: 0, + vastMediaHeight: 0, + vastMediaWidth: 0, + width: 0, + isLinear: true, + isSkippable: true, + ); +} diff --git a/packages/interactive_media_ads/test/android/ad_test.mocks.dart b/packages/interactive_media_ads/test/android/ad_test.mocks.dart new file mode 100644 index 00000000000..7e5eb36d8c0 --- /dev/null +++ b/packages/interactive_media_ads/test/android/ad_test.mocks.dart @@ -0,0 +1,368 @@ +// Mocks generated by Mockito 5.4.6 from annotations +// in interactive_media_ads/test/android/ad_test.dart. +// Do not manually edit this file. + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i3; + +import 'package:interactive_media_ads/src/android/interactive_media_ads.g.dart' + as _i2; +import 'package:mockito/mockito.dart' as _i1; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: must_be_immutable +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types +// ignore_for_file: subtype_of_sealed_class + +class _FakePigeonInstanceManager_0 extends _i1.SmartFake + implements _i2.PigeonInstanceManager { + _FakePigeonInstanceManager_0(Object parent, Invocation parentInvocation) + : super(parent, parentInvocation); +} + +class _FakeAdsManager_1 extends _i1.SmartFake implements _i2.AdsManager { + _FakeAdsManager_1(Object parent, Invocation parentInvocation) + : super(parent, parentInvocation); +} + +class _FakeAdEvent_2 extends _i1.SmartFake implements _i2.AdEvent { + _FakeAdEvent_2(Object parent, Invocation parentInvocation) + : super(parent, parentInvocation); +} + +class _FakeAdEventListener_3 extends _i1.SmartFake + implements _i2.AdEventListener { + _FakeAdEventListener_3(Object parent, Invocation parentInvocation) + : super(parent, parentInvocation); +} + +class _FakeAdErrorListener_4 extends _i1.SmartFake + implements _i2.AdErrorListener { + _FakeAdErrorListener_4(Object parent, Invocation parentInvocation) + : super(parent, parentInvocation); +} + +/// A class which mocks [AdsManager]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockAdsManager extends _i1.Mock implements _i2.AdsManager { + @override + _i2.PigeonInstanceManager get pigeon_instanceManager => + (super.noSuchMethod( + Invocation.getter(#pigeon_instanceManager), + returnValue: _FakePigeonInstanceManager_0( + this, + Invocation.getter(#pigeon_instanceManager), + ), + returnValueForMissingStub: _FakePigeonInstanceManager_0( + this, + Invocation.getter(#pigeon_instanceManager), + ), + ) + as _i2.PigeonInstanceManager); + + @override + _i3.Future discardAdBreak() => + (super.noSuchMethod( + Invocation.method(#discardAdBreak, []), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future pause() => + (super.noSuchMethod( + Invocation.method(#pause, []), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future start() => + (super.noSuchMethod( + Invocation.method(#start, []), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future> getAdCuePoints() => + (super.noSuchMethod( + Invocation.method(#getAdCuePoints, []), + returnValue: _i3.Future>.value([]), + returnValueForMissingStub: _i3.Future>.value( + [], + ), + ) + as _i3.Future>); + + @override + _i3.Future resume() => + (super.noSuchMethod( + Invocation.method(#resume, []), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future skip() => + (super.noSuchMethod( + Invocation.method(#skip, []), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i2.AdsManager pigeon_copy() => + (super.noSuchMethod( + Invocation.method(#pigeon_copy, []), + returnValue: _FakeAdsManager_1( + this, + Invocation.method(#pigeon_copy, []), + ), + returnValueForMissingStub: _FakeAdsManager_1( + this, + Invocation.method(#pigeon_copy, []), + ), + ) + as _i2.AdsManager); + + @override + _i3.Future addAdErrorListener(_i2.AdErrorListener? errorListener) => + (super.noSuchMethod( + Invocation.method(#addAdErrorListener, [errorListener]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future addAdEventListener(_i2.AdEventListener? adEventListener) => + (super.noSuchMethod( + Invocation.method(#addAdEventListener, [adEventListener]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future destroy() => + (super.noSuchMethod( + Invocation.method(#destroy, []), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future init(_i2.AdsRenderingSettings? settings) => + (super.noSuchMethod( + Invocation.method(#init, [settings]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future focus() => + (super.noSuchMethod( + Invocation.method(#focus, []), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future<_i2.AdProgressInfo?> getAdProgressInfo() => + (super.noSuchMethod( + Invocation.method(#getAdProgressInfo, []), + returnValue: _i3.Future<_i2.AdProgressInfo?>.value(), + returnValueForMissingStub: _i3.Future<_i2.AdProgressInfo?>.value(), + ) + as _i3.Future<_i2.AdProgressInfo?>); + + @override + _i3.Future<_i2.Ad?> getCurrentAd() => + (super.noSuchMethod( + Invocation.method(#getCurrentAd, []), + returnValue: _i3.Future<_i2.Ad?>.value(), + returnValueForMissingStub: _i3.Future<_i2.Ad?>.value(), + ) + as _i3.Future<_i2.Ad?>); + + @override + _i3.Future removeAdErrorListener(_i2.AdErrorListener? errorListener) => + (super.noSuchMethod( + Invocation.method(#removeAdErrorListener, [errorListener]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future removeAdEventListener( + _i2.AdEventListener? adEventListener, + ) => + (super.noSuchMethod( + Invocation.method(#removeAdEventListener, [adEventListener]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); +} + +/// A class which mocks [AdEvent]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockAdEvent extends _i1.Mock implements _i2.AdEvent { + @override + _i2.AdEventType get type => + (super.noSuchMethod( + Invocation.getter(#type), + returnValue: _i2.AdEventType.adBreakEnded, + returnValueForMissingStub: _i2.AdEventType.adBreakEnded, + ) + as _i2.AdEventType); + + @override + _i2.PigeonInstanceManager get pigeon_instanceManager => + (super.noSuchMethod( + Invocation.getter(#pigeon_instanceManager), + returnValue: _FakePigeonInstanceManager_0( + this, + Invocation.getter(#pigeon_instanceManager), + ), + returnValueForMissingStub: _FakePigeonInstanceManager_0( + this, + Invocation.getter(#pigeon_instanceManager), + ), + ) + as _i2.PigeonInstanceManager); + + @override + _i2.AdEvent pigeon_copy() => + (super.noSuchMethod( + Invocation.method(#pigeon_copy, []), + returnValue: _FakeAdEvent_2( + this, + Invocation.method(#pigeon_copy, []), + ), + returnValueForMissingStub: _FakeAdEvent_2( + this, + Invocation.method(#pigeon_copy, []), + ), + ) + as _i2.AdEvent); +} + +/// A class which mocks [AdEventListener]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockAdEventListener extends _i1.Mock implements _i2.AdEventListener { + @override + void Function(_i2.AdEventListener, _i2.AdEvent) get onAdEvent => + (super.noSuchMethod( + Invocation.getter(#onAdEvent), + returnValue: + (_i2.AdEventListener pigeon_instance, _i2.AdEvent event) {}, + returnValueForMissingStub: + (_i2.AdEventListener pigeon_instance, _i2.AdEvent event) {}, + ) + as void Function(_i2.AdEventListener, _i2.AdEvent)); + + @override + _i2.PigeonInstanceManager get pigeon_instanceManager => + (super.noSuchMethod( + Invocation.getter(#pigeon_instanceManager), + returnValue: _FakePigeonInstanceManager_0( + this, + Invocation.getter(#pigeon_instanceManager), + ), + returnValueForMissingStub: _FakePigeonInstanceManager_0( + this, + Invocation.getter(#pigeon_instanceManager), + ), + ) + as _i2.PigeonInstanceManager); + + @override + _i2.AdEventListener pigeon_copy() => + (super.noSuchMethod( + Invocation.method(#pigeon_copy, []), + returnValue: _FakeAdEventListener_3( + this, + Invocation.method(#pigeon_copy, []), + ), + returnValueForMissingStub: _FakeAdEventListener_3( + this, + Invocation.method(#pigeon_copy, []), + ), + ) + as _i2.AdEventListener); +} + +/// A class which mocks [AdErrorListener]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockAdErrorListener extends _i1.Mock implements _i2.AdErrorListener { + @override + void Function(_i2.AdErrorListener, _i2.AdErrorEvent) get onAdError => + (super.noSuchMethod( + Invocation.getter(#onAdError), + returnValue: + ( + _i2.AdErrorListener pigeon_instance, + _i2.AdErrorEvent event, + ) {}, + returnValueForMissingStub: + ( + _i2.AdErrorListener pigeon_instance, + _i2.AdErrorEvent event, + ) {}, + ) + as void Function(_i2.AdErrorListener, _i2.AdErrorEvent)); + + @override + _i2.PigeonInstanceManager get pigeon_instanceManager => + (super.noSuchMethod( + Invocation.getter(#pigeon_instanceManager), + returnValue: _FakePigeonInstanceManager_0( + this, + Invocation.getter(#pigeon_instanceManager), + ), + returnValueForMissingStub: _FakePigeonInstanceManager_0( + this, + Invocation.getter(#pigeon_instanceManager), + ), + ) + as _i2.PigeonInstanceManager); + + @override + _i2.AdErrorListener pigeon_copy() => + (super.noSuchMethod( + Invocation.method(#pigeon_copy, []), + returnValue: _FakeAdErrorListener_4( + this, + Invocation.method(#pigeon_copy, []), + ), + returnValueForMissingStub: _FakeAdErrorListener_4( + this, + Invocation.method(#pigeon_copy, []), + ), + ) + as _i2.AdErrorListener); +} From ccc3ad1065050b8b0d08b2826b94b1682b6a19ff Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Fri, 12 Sep 2025 14:11:40 -0400 Subject: [PATCH 25/30] tests for ios --- ...manager_delegate_tests.dart => ads_manager_delegate_test.dart} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/interactive_media_ads/test/ios/{ads_manager_delegate_tests.dart => ads_manager_delegate_test.dart} (100%) diff --git a/packages/interactive_media_ads/test/ios/ads_manager_delegate_tests.dart b/packages/interactive_media_ads/test/ios/ads_manager_delegate_test.dart similarity index 100% rename from packages/interactive_media_ads/test/ios/ads_manager_delegate_tests.dart rename to packages/interactive_media_ads/test/ios/ads_manager_delegate_test.dart From 4e9374476bcea6283e0193f6e0f3f69d417c342b Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Fri, 12 Sep 2025 14:12:04 -0400 Subject: [PATCH 26/30] actually add ios tests --- .../test/ios/ad_test.dart | 233 ++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 packages/interactive_media_ads/test/ios/ad_test.dart diff --git a/packages/interactive_media_ads/test/ios/ad_test.dart b/packages/interactive_media_ads/test/ios/ad_test.dart new file mode 100644 index 00000000000..bd3c1fab689 --- /dev/null +++ b/packages/interactive_media_ads/test/ios/ad_test.dart @@ -0,0 +1,233 @@ +// 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. + +import 'package:flutter_test/flutter_test.dart'; +import 'package:interactive_media_ads/src/ios/interactive_media_ads.g.dart'; +import 'package:interactive_media_ads/src/ios/ios_ads_manager_delegate.dart'; +import 'package:interactive_media_ads/src/platform_interface/platform_interface.dart' + hide AdEventType; + +void main() { + group('Ad', () { + setUp(() { + PigeonOverrides.pigeon_reset(); + }); + + test('UniversalAdID sets unknown values to null', () { + late final void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdEvent) + didReceiveAdEventCallback; + + late final IMAAdsManagerDelegate delegate; + PigeonOverrides.iMAAdsManagerDelegate_new = ({ + required void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdEvent) + didReceiveAdEvent, + required void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdError) + didReceiveAdError, + required void Function(IMAAdsManagerDelegate, IMAAdsManager) + didRequestContentPause, + required void Function(IMAAdsManagerDelegate, IMAAdsManager) + didRequestContentResume, + }) { + didReceiveAdEventCallback = didReceiveAdEvent; + delegate = IMAAdsManagerDelegate.pigeon_detached( + didReceiveAdEvent: didReceiveAdEvent, + didReceiveAdError: didReceiveAdError, + didRequestContentPause: didRequestContentPause, + didRequestContentResume: didRequestContentResume, + ); + return delegate; + }; + + final IOSAdsManagerDelegate adsManagerDelegate = IOSAdsManagerDelegate( + IOSAdsManagerDelegateCreationParams( + onAdEvent: expectAsync1((PlatformAdEvent event) { + expect(event.ad!.universalAdIds.single.adIDValue, isNull); + expect(event.ad!.universalAdIds.single.adIDRegistry, isNull); + }), + ), + ); + + // Calls the field because the value is instantiated lazily. + // ignore: unnecessary_statements + adsManagerDelegate.delegate; + + didReceiveAdEventCallback( + delegate, + IMAAdsManager.pigeon_detached(), + IMAAdEvent.pigeon_detached( + type: AdEventType.allAdsCompleted, + typeString: 'typeString', + ad: createTestAd( + universalAdIds: [ + IMAUniversalAdID.pigeon_detached( + adIDRegistry: 'unknown', + adIDValue: 'unknown', + ), + ], + ), + ), + ); + }); + + test('CompanionAd sets 0 values for height/width to null', () { + late final void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdEvent) + didReceiveAdEventCallback; + + late final IMAAdsManagerDelegate delegate; + PigeonOverrides.iMAAdsManagerDelegate_new = ({ + required void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdEvent) + didReceiveAdEvent, + required void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdError) + didReceiveAdError, + required void Function(IMAAdsManagerDelegate, IMAAdsManager) + didRequestContentPause, + required void Function(IMAAdsManagerDelegate, IMAAdsManager) + didRequestContentResume, + }) { + didReceiveAdEventCallback = didReceiveAdEvent; + delegate = IMAAdsManagerDelegate.pigeon_detached( + didReceiveAdEvent: didReceiveAdEvent, + didReceiveAdError: didReceiveAdError, + didRequestContentPause: didRequestContentPause, + didRequestContentResume: didRequestContentResume, + ); + return delegate; + }; + + final IOSAdsManagerDelegate adsManagerDelegate = IOSAdsManagerDelegate( + IOSAdsManagerDelegateCreationParams( + onAdEvent: expectAsync1((PlatformAdEvent event) { + expect(event.ad!.companionAds.single.width, isNull); + expect(event.ad!.companionAds.single.height, isNull); + }), + ), + ); + + // Calls the field because the value is instantiated lazily. + // ignore: unnecessary_statements + adsManagerDelegate.delegate; + + didReceiveAdEventCallback( + delegate, + IMAAdsManager.pigeon_detached(), + IMAAdEvent.pigeon_detached( + type: AdEventType.allAdsCompleted, + typeString: 'typeString', + ad: createTestAd( + companionAds: [ + IMACompanionAd.pigeon_detached(height: 0, width: 0), + ], + ), + ), + ); + }); + + test('Ad sets durations of -1 to null', () { + late final void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdEvent) + didReceiveAdEventCallback; + + late final IMAAdsManagerDelegate delegate; + PigeonOverrides.iMAAdsManagerDelegate_new = ({ + required void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdEvent) + didReceiveAdEvent, + required void Function(IMAAdsManagerDelegate, IMAAdsManager, IMAAdError) + didReceiveAdError, + required void Function(IMAAdsManagerDelegate, IMAAdsManager) + didRequestContentPause, + required void Function(IMAAdsManagerDelegate, IMAAdsManager) + didRequestContentResume, + }) { + didReceiveAdEventCallback = didReceiveAdEvent; + delegate = IMAAdsManagerDelegate.pigeon_detached( + didReceiveAdEvent: didReceiveAdEvent, + didReceiveAdError: didReceiveAdError, + didRequestContentPause: didRequestContentPause, + didRequestContentResume: didRequestContentResume, + ); + return delegate; + }; + + final IOSAdsManagerDelegate adsManagerDelegate = IOSAdsManagerDelegate( + IOSAdsManagerDelegateCreationParams( + onAdEvent: expectAsync1((PlatformAdEvent event) { + expect(event.ad!.duration, isNull); + expect(event.ad!.skipTimeOffset, isNull); + expect(event.ad!.adPodInfo.maxDuration, isNull); + }), + ), + ); + + // Calls the field because the value is instantiated lazily. + // ignore: unnecessary_statements + adsManagerDelegate.delegate; + + didReceiveAdEventCallback( + delegate, + IMAAdsManager.pigeon_detached(), + IMAAdEvent.pigeon_detached( + type: AdEventType.allAdsCompleted, + typeString: 'typeString', + ad: createTestAd( + duration: -1, + skipTimeOffset: -1, + adPodInfo: IMAAdPodInfo.pigeon_detached( + adPosition: 0, + maxDuration: -1, + podIndex: 0, + timeOffset: 0, + totalAds: 0, + isBumper: true, + ), + ), + ), + ); + }); + }); +} + +IMAAd createTestAd({ + List? universalAdIds, + List? companionAds, + IMAAdPodInfo? adPodInfo, + double? duration, + double? skipTimeOffset, +}) { + return IMAAd.pigeon_detached( + adId: '', + adPodInfo: + adPodInfo ?? + IMAAdPodInfo.pigeon_detached( + adPosition: 0, + maxDuration: 0, + podIndex: 0, + timeOffset: 0, + totalAds: 0, + isBumper: false, + ), + adSystem: '', + adTitle: '', + adDescription: '', + contentType: '', + wrapperCreativeIDs: const [], + wrapperAdIDs: const [], + wrapperSystems: const [], + advertiserName: '', + companionAds: companionAds ?? const [], + creativeAdID: '', + creativeID: '', + dealID: '', + duration: duration ?? 0, + height: 0, + skipTimeOffset: skipTimeOffset ?? 0, + traffickingParameters: '', + uiElements: const [], + universalAdIDs: universalAdIds ?? const [], + vastMediaBitrate: 0, + vastMediaHeight: 0, + vastMediaWidth: 0, + width: 0, + isLinear: true, + isSkippable: true, + ); +} From bc899423332c6a3110a4cb946e0b9132629f9529 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Fri, 12 Sep 2025 14:20:17 -0400 Subject: [PATCH 27/30] include ad for test --- .../test/ads_manager_delegate_test.dart | 45 ++++++++++++++++++- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/packages/interactive_media_ads/test/ads_manager_delegate_test.dart b/packages/interactive_media_ads/test/ads_manager_delegate_test.dart index 9569f2d4f98..5dc6b03e8a6 100644 --- a/packages/interactive_media_ads/test/ads_manager_delegate_test.dart +++ b/packages/interactive_media_ads/test/ads_manager_delegate_test.dart @@ -31,12 +31,53 @@ void main() { void onAdErrorEvent(AdErrorEvent event) {} final AdsManagerDelegate delegate = AdsManagerDelegate( - onAdEvent: expectAsync1((AdEvent event) {}), + onAdEvent: expectAsync1((AdEvent event) { + expect(event.type, AdEventType.adBreakEnded); + expect(event.ad, isNotNull); + }), onAdErrorEvent: onAdErrorEvent, ); delegate.platform.params.onAdEvent!( - const PlatformAdEvent(type: AdEventType.adBreakEnded), + PlatformAdEvent( + type: AdEventType.adBreakEnded, + ad: PlatformAd( + adId: '', + adPodInfo: PlatformAdPodInfo( + adPosition: 0, + maxDuration: Duration.zero, + podIndex: 0, + timeOffset: Duration.zero, + totalAds: 0, + isBumper: true, + ), + adSystem: '', + wrapperCreativeIds: const [], + wrapperIds: const [], + wrapperSystems: const [], + advertiserName: '', + companionAds: const [], + contentType: '', + creativeAdId: '', + creativeId: '', + dealId: '', + description: '', + duration: Duration.zero, + height: 9, + skipTimeOffset: Duration.zero, + surveyUrl: '', + title: '', + traffickingParameters: '', + uiElements: const {}, + universalAdIds: const [], + vastMediaBitrate: 0, + vastMediaHeight: 0, + vastMediaWidth: 0, + width: 0, + isLinear: true, + isSkippable: false, + ), + ), ); expect(delegate.platform.params.onAdErrorEvent, onAdErrorEvent); }); From ba27a6a4f43a12a404cbaaa154eeea989f709159 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Fri, 26 Sep 2025 13:46:39 -0400 Subject: [PATCH 28/30] update licenses --- packages/interactive_media_ads/lib/src/ad.dart | 2 +- .../lib/src/platform_interface/platform_ad.dart | 2 +- .../lib/src/platform_interface/platform_ad_pod_info.dart | 2 +- .../lib/src/platform_interface/platform_companion_ad.dart | 2 +- .../src/platform_interface/platform_universal_ad_id.dart | 2 +- packages/interactive_media_ads/test/android/ad_test.dart | 2 +- packages/interactive_media_ads/test/ios/ad_test.dart | 8 ++++---- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/interactive_media_ads/lib/src/ad.dart b/packages/interactive_media_ads/lib/src/ad.dart index f9676901e04..0a52acf5c6f 100644 --- a/packages/interactive_media_ads/lib/src/ad.dart +++ b/packages/interactive_media_ads/lib/src/ad.dart @@ -1,4 +1,4 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. +// Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart index 28ea88967b6..e796eb15b15 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart @@ -1,4 +1,4 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. +// Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart index 36319d598f5..ff6f0984901 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad_pod_info.dart @@ -1,4 +1,4 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. +// Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart index 6eacdac78ba..09aea0c972e 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart @@ -1,4 +1,4 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. +// Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart index 032f45232db..cfdf6ab0bfc 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart @@ -1,4 +1,4 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. +// Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/packages/interactive_media_ads/test/android/ad_test.dart b/packages/interactive_media_ads/test/android/ad_test.dart index 731df9e7d90..835490a8144 100644 --- a/packages/interactive_media_ads/test/android/ad_test.dart +++ b/packages/interactive_media_ads/test/android/ad_test.dart @@ -1,4 +1,4 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. +// Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/packages/interactive_media_ads/test/ios/ad_test.dart b/packages/interactive_media_ads/test/ios/ad_test.dart index bd3c1fab689..7531c16e331 100644 --- a/packages/interactive_media_ads/test/ios/ad_test.dart +++ b/packages/interactive_media_ads/test/ios/ad_test.dart @@ -1,4 +1,4 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. +// Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -54,7 +54,7 @@ void main() { didReceiveAdEventCallback( delegate, - IMAAdsManager.pigeon_detached(), + IMAAdsManager.pigeon_detached(adCuePoints: const []), IMAAdEvent.pigeon_detached( type: AdEventType.allAdsCompleted, typeString: 'typeString', @@ -110,7 +110,7 @@ void main() { didReceiveAdEventCallback( delegate, - IMAAdsManager.pigeon_detached(), + IMAAdsManager.pigeon_detached(adCuePoints: const []), IMAAdEvent.pigeon_detached( type: AdEventType.allAdsCompleted, typeString: 'typeString', @@ -164,7 +164,7 @@ void main() { didReceiveAdEventCallback( delegate, - IMAAdsManager.pigeon_detached(), + IMAAdsManager.pigeon_detached(adCuePoints: const []), IMAAdEvent.pigeon_detached( type: AdEventType.allAdsCompleted, typeString: 'typeString', From dda426cf7fa4b9609353bac508bf2c06e22c6e9d Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:57:49 -0400 Subject: [PATCH 29/30] update mocks --- .../test/android/ad_test.mocks.dart | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/interactive_media_ads/test/android/ad_test.mocks.dart b/packages/interactive_media_ads/test/android/ad_test.mocks.dart index 7e5eb36d8c0..71f4f1b8d1a 100644 --- a/packages/interactive_media_ads/test/android/ad_test.mocks.dart +++ b/packages/interactive_media_ads/test/android/ad_test.mocks.dart @@ -55,6 +55,15 @@ class _FakeAdErrorListener_4 extends _i1.SmartFake /// /// See the documentation for Mockito's code generation for more information. class MockAdsManager extends _i1.Mock implements _i2.AdsManager { + @override + List get adCuePoints => + (super.noSuchMethod( + Invocation.getter(#adCuePoints), + returnValue: [], + returnValueForMissingStub: [], + ) + as List); + @override _i2.PigeonInstanceManager get pigeon_instanceManager => (super.noSuchMethod( @@ -97,17 +106,6 @@ class MockAdsManager extends _i1.Mock implements _i2.AdsManager { ) as _i3.Future); - @override - _i3.Future> getAdCuePoints() => - (super.noSuchMethod( - Invocation.method(#getAdCuePoints, []), - returnValue: _i3.Future>.value([]), - returnValueForMissingStub: _i3.Future>.value( - [], - ), - ) - as _i3.Future>); - @override _i3.Future resume() => (super.noSuchMethod( From 7d8f720ee6754d247d914ca337bad50e2b97db9a Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 1 Oct 2025 13:05:28 -0400 Subject: [PATCH 30/30] some comment fixes --- .../interactive_media_ads/lib/src/ad.dart | 24 +++++++++++-------- .../lib/src/android/android_ads_manager.dart | 4 ++-- .../lib/src/ios/ios_ads_manager_delegate.dart | 4 ++-- .../src/platform_interface/platform_ad.dart | 14 +++++------ .../platform_companion_ad.dart | 18 ++++++++------ .../platform_universal_ad_id.dart | 6 ++--- .../test/android/ad_test.dart | 4 ++-- .../test/ios/ad_test.dart | 4 ++-- 8 files changed, 43 insertions(+), 35 deletions(-) diff --git a/packages/interactive_media_ads/lib/src/ad.dart b/packages/interactive_media_ads/lib/src/ad.dart index 0a52acf5c6f..32454800bae 100644 --- a/packages/interactive_media_ads/lib/src/ad.dart +++ b/packages/interactive_media_ads/lib/src/ad.dart @@ -60,6 +60,9 @@ class Ad { /// The duration of the ad. Duration? get duration => platform.duration; + /// The width of the selected creative if non-linear, else returns 0. + int get width => platform.width; + /// The height of the selected creative if non-linear, else returns 0. int get height => platform.height; @@ -95,9 +98,6 @@ class Ad { /// The VAST media width in pixels of the selected creative. int get vastMediaWidth => platform.vastMediaWidth; - /// The width of the selected creative if non-linear, else returns 0. - int get width => platform.width; - /// Indicates whether the ad’s current mode of operation is linear or /// non-linear. bool get isLinear => platform.isLinear; @@ -166,17 +166,21 @@ class CompanionAd { /// Implementation of [PlatformCompanionAd] for the current platform. final PlatformCompanionAd platform; - /// The API needed to execute this ad, or null if unavailable. - String? get apiFramework => platform.apiFramework; + /// The width of the companion in pixels. + /// + /// `null` if unavailable. + int? get width => platform.width; /// The height of the companion in pixels. + /// + /// `null` if unavailable. int? get height => platform.height; + /// The API needed to execute this ad, or null if unavailable. + String? get apiFramework => platform.apiFramework; + /// The URL for the static resource of this companion. String? get resourceValue => platform.resourceValue; - - /// The width of the companion in pixels. - int? get width => platform.width; } /// Simple data object containing universal ad ID information. @@ -190,10 +194,10 @@ class UniversalAdId { /// The universal ad ID value. /// /// This will be null if it isn’t defined by the ad. - String? get adIDValue => platform.adIDValue; + String? get adIdValue => platform.adIdValue; /// The universal ad ID registry with which the value is registered. /// /// This will be null if it isn’t defined by the ad. - String? get adIDRegistry => platform.adIDRegistry; + String? get adIdRegistry => platform.adIdRegistry; } diff --git a/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart b/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart index d8152fccd69..dd1abee41a5 100644 --- a/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart +++ b/packages/interactive_media_ads/lib/src/android/android_ads_manager.dart @@ -215,9 +215,9 @@ PlatformUniversalAdId _asPlatformUniversalAdId( ima.UniversalAdId universalAdId, ) { return PlatformUniversalAdId( - adIDValue: + adIdValue: universalAdId.adIdValue == 'unknown' ? null : universalAdId.adIdValue, - adIDRegistry: + adIdRegistry: universalAdId.adIdRegistry == 'unknown' ? null : universalAdId.adIdRegistry, diff --git a/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart b/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart index 81e53c87527..841a1441588 100644 --- a/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart +++ b/packages/interactive_media_ads/lib/src/ios/ios_ads_manager_delegate.dart @@ -192,9 +192,9 @@ PlatformUniversalAdId _asPlatformUniversalAdId( ima.IMAUniversalAdID universalAdId, ) { return PlatformUniversalAdId( - adIDValue: + adIdValue: universalAdId.adIDValue == 'unknown' ? null : universalAdId.adIDValue, - adIDRegistry: + adIdRegistry: universalAdId.adIDRegistry == 'unknown' ? null : universalAdId.adIDRegistry, diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart index e796eb15b15..b86f2c4fe6a 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_ad.dart @@ -25,6 +25,7 @@ base class PlatformAd { required this.dealId, required this.description, required this.duration, + required this.width, required this.height, required this.skipTimeOffset, required this.surveyUrl, @@ -33,9 +34,8 @@ base class PlatformAd { required this.uiElements, required this.universalAdIds, required this.vastMediaBitrate, - required this.vastMediaHeight, required this.vastMediaWidth, - required this.width, + required this.vastMediaHeight, required this.isLinear, required this.isSkippable, }); @@ -86,6 +86,9 @@ base class PlatformAd { /// The duration of the ad. final Duration? duration; + /// The width of the selected creative if non-linear, else returns 0. + final int width; + /// The height of the selected creative if non-linear, else returns 0. final int height; @@ -111,14 +114,11 @@ base class PlatformAd { /// The VAST bitrate in Kbps of the selected creative. final int vastMediaBitrate; - /// The VAST media height in pixels of the selected creative. - final int vastMediaHeight; - /// The VAST media width in pixels of the selected creative. final int vastMediaWidth; - /// The width of the selected creative if non-linear, else returns 0. - final int width; + /// The VAST media height in pixels of the selected creative. + final int vastMediaHeight; /// Indicates whether the ad’s current mode of operation is linear or /// non-linear. diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart index 09aea0c972e..3179e5f565e 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_companion_ad.dart @@ -6,21 +6,25 @@ base class PlatformCompanionAd { /// Constructs a [PlatformCompanionAd]. PlatformCompanionAd({ - required this.apiFramework, + required this.width, required this.height, + required this.apiFramework, required this.resourceValue, - required this.width, }); - /// The API needed to execute this ad, or null if unavailable. - final String? apiFramework; + /// The width of the companion in pixels. + /// + /// `null` if unavailable. + final int? width; /// The height of the companion in pixels. + /// + /// `null` if unavailable. final int? height; + /// The API needed to execute this ad, or null if unavailable. + final String? apiFramework; + /// The URL for the static resource of this companion. final String? resourceValue; - - /// The width of the companion in pixels. - final int? width; } diff --git a/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart b/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart index cfdf6ab0bfc..334e1ba5076 100644 --- a/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart +++ b/packages/interactive_media_ads/lib/src/platform_interface/platform_universal_ad_id.dart @@ -5,15 +5,15 @@ /// Simple data object containing universal ad ID information. base class PlatformUniversalAdId { /// Constructs a [PlatformUniversalAdId]. - PlatformUniversalAdId({required this.adIDValue, required this.adIDRegistry}); + PlatformUniversalAdId({required this.adIdValue, required this.adIdRegistry}); /// The universal ad ID value. /// /// This will be null if it isn’t defined by the ad. - final String? adIDValue; + final String? adIdValue; /// The universal ad ID registry with which the value is registered. /// /// This will be null if it isn’t defined by the ad. - final String? adIDRegistry; + final String? adIdRegistry; } diff --git a/packages/interactive_media_ads/test/android/ad_test.dart b/packages/interactive_media_ads/test/android/ad_test.dart index 835490a8144..0569044608f 100644 --- a/packages/interactive_media_ads/test/android/ad_test.dart +++ b/packages/interactive_media_ads/test/android/ad_test.dart @@ -50,8 +50,8 @@ void main() { AndroidAdsManagerDelegate( PlatformAdsManagerDelegateCreationParams( onAdEvent: expectAsync1((PlatformAdEvent event) { - expect(event.ad!.universalAdIds.single.adIDValue, isNull); - expect(event.ad!.universalAdIds.single.adIDRegistry, isNull); + expect(event.ad!.universalAdIds.single.adIdValue, isNull); + expect(event.ad!.universalAdIds.single.adIdRegistry, isNull); }), ), ), diff --git a/packages/interactive_media_ads/test/ios/ad_test.dart b/packages/interactive_media_ads/test/ios/ad_test.dart index 7531c16e331..1f949dfa860 100644 --- a/packages/interactive_media_ads/test/ios/ad_test.dart +++ b/packages/interactive_media_ads/test/ios/ad_test.dart @@ -42,8 +42,8 @@ void main() { final IOSAdsManagerDelegate adsManagerDelegate = IOSAdsManagerDelegate( IOSAdsManagerDelegateCreationParams( onAdEvent: expectAsync1((PlatformAdEvent event) { - expect(event.ad!.universalAdIds.single.adIDValue, isNull); - expect(event.ad!.universalAdIds.single.adIDRegistry, isNull); + expect(event.ad!.universalAdIds.single.adIdValue, isNull); + expect(event.ad!.universalAdIds.single.adIdRegistry, isNull); }), ), );