Skip to content

Commit 1656ad3

Browse files
Merge pull request #708 from DataDog/marcosaia/issue-707/fix-choreographer-compat
[FIX #707] Replace ChoreographerCompat with Choreographer
2 parents 5630e33 + b8ed00d commit 1656ad3

File tree

2 files changed

+16
-28
lines changed

2 files changed

+16
-28
lines changed

packages/core/android/src/main/kotlin/com/datadog/reactnative/FrameRateProvider.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
package com.datadog.reactnative
88

9-
import com.facebook.react.modules.core.ChoreographerCompat
9+
import android.view.Choreographer
1010

1111
internal class FrameRateProvider(
1212
reactFrameRateCallback: ((Double) -> Unit),
@@ -30,9 +30,9 @@ internal class FrameRateProvider(
3030
internal class FpsFrameCallback(
3131
private val reactFrameRateCallback: ((Double) -> Unit),
3232
private val uiThreadExecutor: UiThreadExecutor
33-
) : ChoreographerCompat.FrameCallback() {
33+
) : Choreographer.FrameCallback {
3434

35-
private var choreographer: ChoreographerCompat? = null
35+
private var choreographer: Choreographer? = null
3636
private var lastFrameTime = -1L
3737

3838
override fun doFrame(time: Long) {
@@ -45,14 +45,14 @@ internal class FpsFrameCallback(
4545

4646
fun start() {
4747
uiThreadExecutor.runOnUiThread {
48-
choreographer = ChoreographerCompat.getInstance()
48+
choreographer = Choreographer.getInstance()
4949
choreographer?.postFrameCallback(this@FpsFrameCallback)
5050
}
5151
}
5252

5353
fun stop() {
5454
uiThreadExecutor.runOnUiThread {
55-
choreographer = ChoreographerCompat.getInstance()
55+
choreographer = Choreographer.getInstance()
5656
choreographer?.removeFrameCallback(this@FpsFrameCallback)
5757
}
5858
}

packages/core/android/src/test/kotlin/com/datadog/reactnative/DdSdkTest.kt

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import com.datadog.tools.unit.toReadableMap
3838
import com.facebook.react.bridge.Promise
3939
import com.facebook.react.bridge.ReactApplicationContext
4040
import com.facebook.react.bridge.ReadableMap
41-
import com.facebook.react.modules.core.ChoreographerCompat
4241
import fr.xgouchet.elmyr.Forge
4342
import fr.xgouchet.elmyr.annotation.AdvancedForgery
4443
import fr.xgouchet.elmyr.annotation.BoolForgery
@@ -81,13 +80,6 @@ import org.mockito.kotlin.verifyNoInteractions
8180
import org.mockito.kotlin.whenever
8281
import org.mockito.quality.Strictness
8382

84-
fun mockChoreographerCompatInstance(mock: ChoreographerCompat = mock()) {
85-
ChoreographerCompat::class.java.setStaticValue(
86-
"sInstance",
87-
mock
88-
)
89-
}
90-
9183
fun mockChoreographerInstance(mock: Choreographer = mock()) {
9284
Choreographer::class.java.setStaticValue(
9385
"sThreadInstance",
@@ -135,9 +127,6 @@ internal class DdSdkTest {
135127
@Mock
136128
lateinit var mockChoreographer: Choreographer
137129

138-
@Mock
139-
lateinit var mockChoreographerCompat: ChoreographerCompat
140-
141130
@BeforeEach
142131
fun `set up`() {
143132
val mockLooper = mock<Looper>()
@@ -148,10 +137,8 @@ internal class DdSdkTest {
148137
whenever(mockRumMonitor._getInternal()) doReturn mockRumInternalProxy
149138

150139
doNothing().whenever(mockChoreographer).postFrameCallback(any())
151-
doNothing().whenever(mockChoreographerCompat).postFrameCallback(any())
152140

153141
mockChoreographerInstance(mockChoreographer)
154-
mockChoreographerCompatInstance(mockChoreographerCompat)
155142

156143
whenever(mockReactContext.applicationContext) doReturn mockContext
157144
whenever(mockContext.packageName) doReturn "packageName"
@@ -1581,8 +1568,9 @@ internal class DdSdkTest {
15811568
.hasField("featureConfiguration") {
15821569
it.hasFieldEqualTo("vitalsMonitorUpdateFrequency", VitalsUpdateFrequency.RARE)
15831570
}
1584-
argumentCaptor<ChoreographerCompat.FrameCallback> {
1585-
verify(mockChoreographerCompat).postFrameCallback(capture())
1571+
1572+
argumentCaptor<Choreographer.FrameCallback> {
1573+
verify(mockChoreographer).postFrameCallback(capture())
15861574
assertThat(firstValue).isInstanceOf(FpsFrameCallback::class.java)
15871575
}
15881576
}
@@ -1592,7 +1580,7 @@ internal class DdSdkTest {
15921580
@Forgery configuration: DdSdkConfiguration
15931581
) {
15941582
// Given
1595-
doThrow(IllegalStateException()).whenever(mockChoreographerCompat).postFrameCallback(any())
1583+
doThrow(IllegalStateException()).whenever(mockChoreographer).postFrameCallback(any())
15961584
val bridgeConfiguration = configuration.copy(
15971585
vitalsUpdateFrequency = "NEVER",
15981586
longTaskThresholdMs = 0.0
@@ -1620,7 +1608,7 @@ internal class DdSdkTest {
16201608
.hasField("featureConfiguration") {
16211609
it.hasFieldEqualTo("vitalsMonitorUpdateFrequency", VitalsUpdateFrequency.NEVER)
16221610
}
1623-
verifyNoInteractions(mockChoreographerCompat)
1611+
verifyNoInteractions(mockChoreographer)
16241612
}
16251613

16261614
@Test
@@ -1660,8 +1648,8 @@ internal class DdSdkTest {
16601648
.hasField("featureConfiguration") {
16611649
it.hasFieldEqualTo("vitalsMonitorUpdateFrequency", VitalsUpdateFrequency.AVERAGE)
16621650
}
1663-
argumentCaptor<ChoreographerCompat.FrameCallback> {
1664-
verify(mockChoreographerCompat).postFrameCallback(capture())
1651+
argumentCaptor<Choreographer.FrameCallback> {
1652+
verify(mockChoreographer).postFrameCallback(capture())
16651653
assertThat(firstValue).isInstanceOf(FpsFrameCallback::class.java)
16661654

16671655
// When
@@ -1698,8 +1686,8 @@ internal class DdSdkTest {
16981686
testedBridgeSdk.initialize(bridgeConfiguration.toReadableJavaOnlyMap(), mockPromise)
16991687

17001688
// Then
1701-
argumentCaptor<ChoreographerCompat.FrameCallback> {
1702-
verify(mockChoreographerCompat).postFrameCallback(capture())
1689+
argumentCaptor<Choreographer.FrameCallback> {
1690+
verify(mockChoreographer).postFrameCallback(capture())
17031691

17041692
// When
17051693
firstValue.doFrame(timestampNs)
@@ -1735,8 +1723,8 @@ internal class DdSdkTest {
17351723
testedBridgeSdk.initialize(bridgeConfiguration.toReadableJavaOnlyMap(), mockPromise)
17361724

17371725
// Then
1738-
argumentCaptor<ChoreographerCompat.FrameCallback> {
1739-
verify(mockChoreographerCompat).postFrameCallback(capture())
1726+
argumentCaptor<Choreographer.FrameCallback> {
1727+
verify(mockChoreographer).postFrameCallback(capture())
17401728

17411729
// When
17421730
firstValue.doFrame(timestampNs)

0 commit comments

Comments
 (0)