Skip to content

Commit 40ebcef

Browse files
huntiefacebook-github-bot
authored andcommitted
Use taskEndTime to report either InteractionEntry or INP metric events (#53296)
Summary: Pull Request resolved: #53296 Following D79894702, update `__chromium_devtools_metrics_reporter` to correctly differentiate `InteractionEntry` and `INP` metrics, based on synchronisation with start of paint. Changelog: [Internal] Reviewed By: vzaidman Differential Revision: D79898177 fbshipit-source-id: 92e805fc15b6c8bf3342f62914cca1b377b58397
1 parent 6caf2df commit 40ebcef

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

packages/react-native/ReactCommon/react/performance/cdpmetrics/CdpMetricsReporter.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,24 @@ void CdpMetricsReporter::onEventTimingEntry(
3535
auto inputDelay = entry.processingStart - entry.startTime;
3636
auto processingDuration = entry.processingEnd - entry.processingStart;
3737
auto nextPaintTime = entry.startTime + entry.duration;
38-
auto presentationDelay = nextPaintTime - entry.processingEnd;
38+
auto presentationDelay = nextPaintTime - entry.taskEndTime;
3939

4040
folly::dynamic jsonPayload = folly::dynamic::object;
41-
jsonPayload["name"] = "InteractionEntry";
42-
jsonPayload["duration"] =
43-
static_cast<int>(entry.duration.toDOMHighResTimeStamp());
41+
42+
if (presentationDelay.toNanoseconds() > 0) {
43+
jsonPayload["name"] = "INP";
44+
jsonPayload["value"] =
45+
static_cast<int>(entry.duration.toDOMHighResTimeStamp());
46+
} else {
47+
jsonPayload["name"] = "InteractionEntry";
48+
jsonPayload["duration"] =
49+
static_cast<int>(entry.duration.toDOMHighResTimeStamp());
50+
jsonPayload["nextPaintTime"] =
51+
static_cast<int>(nextPaintTime.toDOMHighResTimeStamp());
52+
jsonPayload["eventName"] = std::string(entry.name);
53+
jsonPayload["longAnimationFrameEntries"] = folly::dynamic::array();
54+
}
55+
4456
jsonPayload["phases"] = folly::dynamic::object(
4557
"inputDelay", static_cast<int>(inputDelay.toDOMHighResTimeStamp()))(
4658
"processingDuration",
@@ -49,12 +61,8 @@ void CdpMetricsReporter::onEventTimingEntry(
4961
static_cast<int>(presentationDelay.toDOMHighResTimeStamp()));
5062
jsonPayload["startTime"] =
5163
static_cast<int>(entry.startTime.toDOMHighResTimeStamp());
52-
jsonPayload["nextPaintTime"] =
53-
static_cast<int>(nextPaintTime.toDOMHighResTimeStamp());
5464
jsonPayload["interactionType"] =
5565
std::string(getInteractionTypeForEvent(entry.name));
56-
jsonPayload["eventName"] = std::string(entry.name);
57-
jsonPayload["longAnimationFrameEntries"] = folly::dynamic::array();
5866

5967
auto jsonString = folly::toJson(jsonPayload);
6068
auto jsiString = jsi::String::createFromUtf8(runtime, jsonString);

0 commit comments

Comments
 (0)