Skip to content

Commit f9c2589

Browse files
committed
Add Jetpack Compose specific log in gesture listener if target not found
1 parent 9515e48 commit f9c2589

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/rum/internal/instrumentation/gestures/GesturesListener.kt

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,12 @@ internal class GesturesListener(
137137
val queue = LinkedList<View>()
138138
queue.addFirst(decorView)
139139
var target: ViewTarget? = null
140-
140+
var composeViewDetected = false
141141
while (queue.isNotEmpty()) {
142142
// removeFirst can't fail because we checked isNotEmpty
143143
@Suppress("UnsafeThirdPartyFunctionCall")
144144
val view = queue.removeFirst()
145+
composeViewDetected = composeViewDetected || isJetpackComposeView(view)
145146
val newTarget = if (isScroll) {
146147
findTargetForScroll(view, x, y)
147148
} else {
@@ -159,10 +160,15 @@ internal class GesturesListener(
159160
}
160161

161162
if (target == null) {
163+
val msg = if (composeViewDetected) {
164+
MSG_NO_COMPOSE_TARGET
165+
} else {
166+
MSG_NO_TARGET_ACTION
167+
}
162168
internalLogger.log(
163169
InternalLogger.Level.INFO,
164170
InternalLogger.Target.USER,
165-
{ MSG_NO_TARGET_TAP }
171+
{ msg }
166172
)
167173
}
168174
return target
@@ -311,6 +317,13 @@ internal class GesturesListener(
311317
}
312318
}
313319

320+
private fun isJetpackComposeView(view: View): Boolean {
321+
// startsWith here is to make testing easier: mocks don't have name exactly
322+
// like this, and writing manual stub is not possible, because some necessary
323+
// methods are final.
324+
return view::class.java.name.startsWith("androidx.compose.ui.platform.ComposeView")
325+
}
326+
314327
// endregion
315328

316329
companion object {
@@ -320,12 +333,11 @@ internal class GesturesListener(
320333
internal const val SCROLL_DIRECTION_UP = "up"
321334
internal const val SCROLL_DIRECTION_DOWN = "down"
322335

323-
internal val MSG_NO_TARGET_TAP = "We could not find a valid target for " +
324-
"the ${RumActionType.TAP.name} event. " +
325-
"The DecorView was empty and either transparent " +
326-
"or not clickable for this Activity."
327-
internal val MSG_NO_TARGET_SCROLL_SWIPE = "We could not find a valid target for " +
328-
"the ${RumActionType.SCROLL.name} or ${RumActionType.SWIPE.name} event. " +
336+
internal const val MSG_NO_COMPOSE_TARGET =
337+
"We could not find a valid target for the gesture " +
338+
"event. Compose actions tracking not enabled, or the compose view is not tagged."
339+
internal const val MSG_NO_TARGET_ACTION = "We could not find a valid target for " +
340+
"the gesture event. " +
329341
"The DecorView was empty and either transparent " +
330342
"or not clickable for this Activity."
331343
}

features/dd-sdk-android-rum/src/test/kotlin/com/datadog/android/rum/internal/instrumentation/gestures/GesturesListenerScrollSwipeTest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,8 +466,7 @@ internal class GesturesListenerScrollSwipeTest : AbstractGesturesListenerTest()
466466
InternalLogger.Level.INFO,
467467
InternalLogger.Target.USER,
468468
{
469-
it == GesturesListener.MSG_NO_TARGET_SCROLL_SWIPE ||
470-
it == GesturesListener.MSG_NO_TARGET_TAP
469+
it == GesturesListener.MSG_NO_TARGET_ACTION
471470
},
472471
mode = times(intermediaryEvents.size + 2)
473472
)

features/dd-sdk-android-rum/src/test/kotlin/com/datadog/android/rum/internal/instrumentation/gestures/GesturesListenerTapTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ internal class GesturesListenerTapTest : AbstractGesturesListenerTest() {
333333
mockInternalLogger.verifyLog(
334334
InternalLogger.Level.INFO,
335335
InternalLogger.Target.USER,
336-
GesturesListener.MSG_NO_TARGET_TAP
336+
GesturesListener.MSG_NO_TARGET_ACTION
337337
)
338338
verifyNoInteractions(rumMonitor.mockInstance)
339339
}

0 commit comments

Comments
 (0)