Skip to content

Commit 228a831

Browse files
fix: handle ad_break_id key in the ad Summary event (#71)
1 parent dad43eb commit 228a831

File tree

4 files changed

+75
-1
lines changed

4 files changed

+75
-1
lines changed

media/src/main/java/com/mparticle/media/MediaSession.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class MediaSession protected constructor(builder: Builder) {
7878

7979
private var adContent: MediaAd? = null
8080
private var segment: MediaSegment? = null
81+
private var mediaAdBreak: MediaAdBreak? = null
8182

8283
var mediaSessionStartTimestamp: Long //Timestamp created on logMediaSessionStart event
8384
private set
@@ -283,6 +284,7 @@ class MediaSession protected constructor(builder: Builder) {
283284
val adBreakEvent = MediaEvent(this, MediaEventName.AD_BREAK_START, options = options).apply {
284285
this.adBreak = adBreak
285286
}
287+
mediaAdBreak = adBreak
286288
logEvent(adBreakEvent)
287289
}
288290

@@ -337,6 +339,9 @@ class MediaSession protected constructor(builder: Builder) {
337339
mediaTotalAdTimeSpent += ((endTime - startTime) / 1000)
338340
}
339341
val adEndEvent = MediaEvent(this, MediaEventName.AD_END, options = options)
342+
mediaAdBreak?.let {
343+
adContent?.adBreakId = it.id
344+
}
340345
logEvent(adEndEvent)
341346

342347
logAdSummary(adContent)
@@ -590,6 +595,9 @@ class MediaSession protected constructor(builder: Builder) {
590595
ad.title?.let {
591596
customAttributes[adContentTitleKey] = it
592597
}
598+
ad.adBreakId?.let {
599+
customAttributes[adBreakIdKey] = it
600+
}
593601
customAttributes[adContentSkippedKey] = ad.adSkipped.toString()
594602
customAttributes[adContentCompletedKey] = ad.adCompleted.toString()
595603

media/src/main/java/com/mparticle/media/events/MediaAd.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@ class MediaAd(
1919
internal var adStartTimestamp: Long? = null,
2020
internal var adEndTimestamp: Long? = null,
2121
internal var adSkipped: Boolean = false,
22-
internal var adCompleted: Boolean = false
22+
internal var adCompleted: Boolean = false,
23+
internal var adBreakId: String? = null
2324
)

media/src/main/java/com/mparticle/media/events/MediaEvent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ open class MediaEvent(
176176
adBreak?.apply {
177177
json.put(
178178
"adBreak", JSONObject()
179+
.put("id",id)
179180
.put("title", title)
180181
.put("duration", duration)
181182
)

media/src/test/java/com/mparticle/MediaSessionTest.kt

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,70 @@ class MediaSessionTest {
592592
assertEquals(testContentTimeSpent, 1.0)
593593
assertEquals(testTimeSpent, 2.0)
594594
}
595+
596+
@Test
597+
fun testLogAdSummary() {
598+
val mparticle = MockMParticle()
599+
val mediaSession = MediaSession.builder(mparticle) {
600+
title = "hello"
601+
mediaContentId ="123"
602+
duration =1000
603+
}
604+
605+
val events = mutableListOf<MediaEvent>()
606+
mediaSession.mediaEventListener = { event ->
607+
events.add(event)
608+
}
609+
mediaSession.logAdStart { }
610+
mediaSession.logAdBreakStart {
611+
id = "123456"
612+
title = "TestADBREAk"
613+
}
614+
mediaSession.logAdEnd()
615+
mediaSession.logAdBreakEnd()
616+
assertEquals(4, events.size)
617+
events.forEach {
618+
it.mediaContent.apply {
619+
assertEquals("hello", name)
620+
assertEquals("123", contentId)
621+
assertEquals(1000L, duration)
622+
}
623+
}
624+
assertNotNull(mparticle.loggedEvents[3].customAttributes)
625+
assertNotNull(mparticle.loggedEvents[3].customAttributes?.get("ad_break_id"))
626+
assertEquals("123456",mparticle.loggedEvents[3].customAttributes?.get("ad_break_id"))
627+
}
628+
629+
@Test
630+
fun testLogAdSummary_When_Break_ID_IS_NULL() {
631+
val mparticle = MockMParticle()
632+
val mediaSession = MediaSession.builder(mparticle) {
633+
title = "hello"
634+
mediaContentId ="123"
635+
duration =1000
636+
}
637+
638+
val events = mutableListOf<MediaEvent>()
639+
mediaSession.mediaEventListener = { event ->
640+
events.add(event)
641+
}
642+
mediaSession.logAdStart { }
643+
mediaSession.logAdBreakStart {
644+
title = "TestADBREAk"
645+
}
646+
mediaSession.logAdEnd()
647+
mediaSession.logAdBreakEnd()
648+
assertEquals(4, events.size)
649+
events.forEach {
650+
it.mediaContent.apply {
651+
assertEquals("hello", name)
652+
assertEquals("123", contentId)
653+
assertEquals(1000L, duration)
654+
}
655+
}
656+
assertNotNull(mparticle.loggedEvents[3].customAttributes)
657+
assertNull(mparticle.loggedEvents[3].customAttributes?.get("ad_break_id"))
658+
}
595659
}
596660

597661
fun <T: Any> T.assertTrue(assertion: (T) -> Boolean) {

0 commit comments

Comments
 (0)