Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/interactive_media_ads/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.2.3+12

* Fixes appending request agent to ad tags that contain a query.

## 0.2.3+11

* Updates pigeon generated code to fix `ImplicitSamInstance` and `SyntheticAccessor` Kotlin lint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,16 @@ class AdsRequestProxyApi(override val pigeonRegistrar: ProxyApiRegistrar) :
*
* This must match the version in pubspec.yaml.
*/
const val pluginVersion = "0.2.3+11"
const val pluginVersion = "0.2.3+12"
}

override fun setAdTagUrl(pigeon_instance: AdsRequest, adTagUrl: String) {
// Ensure adTag can append a custom parameter.
require(adTagUrl.contains("?"))
require(!adTagUrl.contains("#"))

pigeon_instance.adTagUrl = "$adTagUrl&request_agent=Flutter-IMA-$pluginVersion"
// Add a request agent only if the adTagUrl can append a custom parameter.
if (!adTagUrl.contains("#") && adTagUrl.contains("?")) {
pigeon_instance.adTagUrl = "$adTagUrl&request_agent=Flutter-IMA-$pluginVersion"
} else {
pigeon_instance.adTagUrl = adTagUrl
}
}

override fun setContentProgressProvider(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,19 @@ class AdsRequestProxyApiTest {
"adTag?&request_agent=Flutter-IMA-${AdsRequestProxyApi.pluginVersion}"
}

@Test
fun setAdTagUrlDoesNotAddRequestAgentToIncompatibleUrls() {
val api = TestProxyApiRegistrar().getPigeonApiAdsRequest()

val instance = mock<AdsRequest>()

api.setAdTagUrl(instance, "adTag#")
verify(instance).adTagUrl = "adTag#"

api.setAdTagUrl(instance, "adTag?#")
verify(instance).adTagUrl = "adTag?#"
}

@Test
fun setContentProgressProvider() {
val api = TestProxyApiRegistrar().getPigeonApiAdsRequest()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,28 @@ final class AdsRequestTests: XCTestCase {
"adTag?&request_agent=Flutter-IMA-\(AdsRequestProxyAPIDelegate.pluginVersion)")
XCTAssertIdentical(instance?.adDisplayContainer, container)
}

func testPigeonDefaultConstructorDoesNotAddRequestAgentToIncompatibleURLs() {
let registrar = TestProxyApiRegistrar()
let api = registrar.apiDelegate.pigeonApiIMAAdsRequest(registrar)

let container = IMAAdDisplayContainer(adContainer: UIView(), viewController: nil)
let contentPlayhead = ContentPlayheadImpl()

var instance = try? api.pigeonDelegate.pigeonDefaultConstructor(
pigeonApi: api, adTagUrl: "adTag#", adDisplayContainer: container,
contentPlayhead: contentPlayhead)
XCTAssertNotNil(instance)
XCTAssertEqual(
instance?.adTagUrl,
"adTag#")

instance = try? api.pigeonDelegate.pigeonDefaultConstructor(
pigeonApi: api, adTagUrl: "adTag#?", adDisplayContainer: container,
contentPlayhead: contentPlayhead)
XCTAssertNotNil(instance)
XCTAssertEqual(
instance?.adTagUrl,
"adTag#?")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,20 @@ class AdsRequestProxyAPIDelegate: PigeonApiDelegateIMAAdsRequest {
/// The current version of the `interactive_media_ads` plugin.
///
/// This must match the version in pubspec.yaml.
static let pluginVersion = "0.2.3+11"
static let pluginVersion = "0.2.3+12"

func pigeonDefaultConstructor(
pigeonApi: PigeonApiIMAAdsRequest, adTagUrl: String, adDisplayContainer: IMAAdDisplayContainer,
contentPlayhead: IMAContentPlayhead?
) throws -> IMAAdsRequest {
// Ensure adTag can append a custom parameter.
assert(adTagUrl.contains("?"))
assert(!adTagUrl.contains("#"))
// Add a request agent only if the adTagUrl can append a custom parameter.
let modifiedURL =
!adTagUrl.contains("#") && adTagUrl.contains("?")
? "\(adTagUrl)&request_agent=Flutter-IMA-\(AdsRequestProxyAPIDelegate.pluginVersion)"
: adTagUrl

let adTagWithRequestAgent =
"\(adTagUrl)&request_agent=Flutter-IMA-\(AdsRequestProxyAPIDelegate.pluginVersion)"
return IMAAdsRequest(
adTagUrl: adTagWithRequestAgent, adDisplayContainer: adDisplayContainer,
adTagUrl: modifiedURL, adDisplayContainer: adDisplayContainer,
contentPlayhead: contentPlayhead as? ContentPlayheadImpl, userContext: nil)
}
}
2 changes: 1 addition & 1 deletion packages/interactive_media_ads/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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.3+11 # This must match the version in
version: 0.2.3+12 # 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`

Expand Down