Skip to content

Commit d28ee16

Browse files
huntiefacebook-github-bot
authored andcommitted
Restore background tracing touch target (#53753)
Summary: Pull Request resolved: #53753 Changelog: [Internal] Reviewed By: rubennorte Differential Revision: D82302063 fbshipit-source-id: 25c99c2449fd72b81ce3ac25473c41304993cbc1
1 parent 136d795 commit d28ee16

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ public abstract class DevSupportManagerBase(
229229
}
230230
context
231231
},
232+
{ openDebugger(DebuggerFrontendPanelName.PERFORMANCE.toString()) },
232233
)
233234
}
234235
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ import javax.inject.Provider
1515
internal class PerfMonitorOverlayManager(
1616
private val devHelper: PerfMonitorDevHelper,
1717
private val contextProvider: Provider<Context?>,
18+
private val onRequestOpenDevTools: () -> Unit,
1819
) : PerfMonitorUpdateListener {
1920
private var enabled: Boolean = false
2021
private var initialized: Boolean = false
2122
private var view: PerfMonitorOverlayView? = null
23+
private var tracingState: TracingState = TracingState.ENABLEDINCDPMODE
2224

2325
private fun init() {
2426
if (initialized || !enabled) {
@@ -27,7 +29,7 @@ internal class PerfMonitorOverlayManager(
2729

2830
UiThreadUtil.runOnUiThread {
2931
val context = contextProvider.get() ?: return@runOnUiThread
30-
view = PerfMonitorOverlayView(context)
32+
view = PerfMonitorOverlayView(context, ::handleRecordingButtonPress)
3133

3234
// Start background tracing
3335
devHelper.inspectorTarget?.resumeBackgroundTrace()
@@ -59,6 +61,20 @@ internal class PerfMonitorOverlayManager(
5961
}
6062

6163
override fun onRecordingStateChanged(state: TracingState) {
64+
tracingState = state
6265
view?.updateRecordingState(state)
6366
}
67+
68+
private fun handleRecordingButtonPress() {
69+
when (tracingState) {
70+
TracingState.ENABLEDINBACKGROUNDMODE -> {
71+
devHelper.inspectorTarget?.pauseAndAnalyzeBackgroundTrace()
72+
onRequestOpenDevTools()
73+
}
74+
TracingState.DISABLED -> {
75+
devHelper.inspectorTarget?.resumeBackgroundTrace()
76+
}
77+
TracingState.ENABLEDINCDPMODE -> Unit
78+
}
79+
}
6480
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.facebook.react.uimanager.PixelUtil
2727

2828
internal class PerfMonitorOverlayView(
2929
private val context: Context,
30+
private val onButtonPress: () -> Unit,
3031
) {
3132
private val dialog: Dialog
3233
private lateinit var statusLabel: TextView
@@ -101,22 +102,11 @@ internal class PerfMonitorOverlayView(
101102
textContainer.addView(tooltipLabel)
102103

103104
val containerLayout = createInnerLayout()
105+
containerLayout.setOnClickListener { onButtonPress() }
104106
containerLayout.addView(statusIndicator)
105107
containerLayout.addView(textContainer)
106108

107-
val dialog =
108-
createAnchoredDialog(dpToPx(12f), dpToPx(12f)).apply { setContentView(containerLayout) }
109-
dialog.window?.apply {
110-
attributes =
111-
attributes?.apply {
112-
flags =
113-
flags or
114-
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or
115-
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
116-
}
117-
}
118-
119-
return dialog
109+
return createAnchoredDialog(dpToPx(12f), dpToPx(12f)).apply { setContentView(containerLayout) }
120110
}
121111

122112
private fun createAnchoredDialog(offsetX: Float, offsetY: Float): Dialog {

0 commit comments

Comments
 (0)