Skip to content

Commit dcee4b9

Browse files
huntiemeta-codesync[bot]
authored andcommitted
Update Perf Issue count to match bg tracing window (facebook#54387)
Summary: Pull Request resolved: facebook#54387 Changelog: [Internal] Reviewed By: sbuggay Differential Revision: D86107869 fbshipit-source-id: dfaf224557158616918a5c89080e7c8802ec1d35
1 parent 95216bc commit dcee4b9

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

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

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
package com.facebook.react.devsupport.perfmonitor
99

10+
import android.os.Handler
11+
import android.os.Looper
1012
import com.facebook.react.bridge.UiThreadUtil
1113
import com.facebook.react.devsupport.interfaces.TracingState
1214

@@ -23,6 +25,7 @@ internal class PerfMonitorOverlayManager(
2325
private var view: PerfMonitorOverlayView? = null
2426
private var tracingState: TracingState = TracingState.ENABLEDINCDPMODE
2527
private var perfIssueCount: Int = 0
28+
private val handler = Handler(Looper.getMainLooper())
2629

2730
/** Enable the Perf Monitor overlay. */
2831
fun enable() {
@@ -75,6 +78,7 @@ internal class PerfMonitorOverlayManager(
7578
tracingState = state
7679
if (state != TracingState.DISABLED) {
7780
perfIssueCount = 0
81+
handler.removeCallbacksAndMessages(null)
7882
}
7983
UiThreadUtil.runOnUiThread {
8084
view?.updateRecordingState(state)
@@ -84,10 +88,23 @@ internal class PerfMonitorOverlayManager(
8488
}
8589

8690
override fun onPerfIssueAdded(name: String) {
91+
perfIssueCount++
92+
8793
UiThreadUtil.runOnUiThread {
88-
view?.updatePerfIssueCount(++perfIssueCount)
94+
view?.updatePerfIssueCount(perfIssueCount)
8995
view?.show()
9096
}
97+
98+
handler.postDelayed(
99+
{
100+
perfIssueCount--
101+
UiThreadUtil.runOnUiThread {
102+
view?.updatePerfIssueCount(perfIssueCount)
103+
view?.show()
104+
}
105+
},
106+
PERF_ISSUE_EXPIRY_MS,
107+
)
91108
}
92109

93110
private fun handleRecordingButtonPress() {
@@ -105,4 +122,8 @@ internal class PerfMonitorOverlayManager(
105122
TracingState.ENABLEDINCDPMODE -> Unit
106123
}
107124
}
125+
126+
companion object {
127+
private const val PERF_ISSUE_EXPIRY_MS = 20_000L
128+
}
108129
}

packages/react-native/ReactCommon/jsinspector-modern/PerfMonitorV2.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,15 @@ void PerfMonitorUpdateHandler::handlePerfIssueAdded(
2121
delegate_.unstable_onPerfIssueAdded(
2222
PerfIssuePayload{
2323
.name = payload["name"].asString(),
24-
.severity = payload["severity"].asString(),
24+
.severity = payload["severity"].isNull()
25+
? std::nullopt
26+
: std::make_optional(payload["severity"].asString()),
27+
.description = payload["description"].isNull()
28+
? std::nullopt
29+
: std::make_optional(payload["description"].asString()),
30+
.learnMoreUrl = payload["learnMoreUrl"].isNull()
31+
? std::nullopt
32+
: std::make_optional(payload["learnMoreUrl"].asString()),
2533
});
2634
}
2735
}

packages/react-native/ReactCommon/jsinspector-modern/PerfMonitorV2.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#pragma once
99

10+
#include <optional>
1011
#include <string>
1112

1213
namespace facebook::react::jsinspector_modern {
@@ -15,7 +16,9 @@ class HostTargetDelegate;
1516

1617
struct PerfIssuePayload {
1718
std::string name;
18-
std::string severity;
19+
std::optional<std::string> severity;
20+
std::optional<std::string> description;
21+
std::optional<std::string> learnMoreUrl;
1922
};
2023

2124
/**

0 commit comments

Comments
 (0)