react-native 0.84.0-nightly-20251202-b0e754bc7 → 0.84.0-nightly-20251204-5bb3a6d68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Libraries/Animated/animations/Animation.js +1 -2
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/React/Base/RCTVersion.m +1 -1
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +186 -194
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +1 -0
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +1 -7
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +1 -11
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +1 -12
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +1 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +0 -8
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +1 -15
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +1 -4
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +1 -0
- package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +11 -0
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/jsi/jsi/jsi.cpp +4 -0
- package/ReactCommon/jsi/jsi/jsi.h +66 -0
- package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +18 -0
- package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +13 -4
- package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +14 -1
- package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +24 -0
- package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +13 -1
- package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +1 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +1 -5
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +1 -6
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +87 -105
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +2 -4
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +1 -5
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +1 -10
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +1 -2
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +1 -6
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +1 -3
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +2 -6
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +130 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +5 -1
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +4 -0
- package/ReactCommon/react/renderer/animationbackend/AnimatedPropsSerializer.h +17 -0
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +6 -22
- package/ReactCommon/react/runtime/ReactInstance.cpp +1 -1
- package/package.json +10 -10
- package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +7 -6
- package/sdks/hermes-engine/version.properties +1 -1
- package/src/private/animated/createAnimatedPropsHook.js +1 -2
- package/src/private/featureflags/ReactNativeFeatureFlags.js +1 -6
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +1 -2
- /package/ReactCommon/jsi/jsi/{hermes.h → hermes-interfaces.h} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<66f2c701d95db2fbeefb2705ae326e08>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -57,12 +57,6 @@ class ReactNativeFeatureFlagsJavaProvider
|
|
|
57
57
|
return method(javaProvider_);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
bool cxxNativeAnimatedRemoveJsSync() override {
|
|
61
|
-
static const auto method =
|
|
62
|
-
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("cxxNativeAnimatedRemoveJsSync");
|
|
63
|
-
return method(javaProvider_);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
60
|
bool disableEarlyViewCommandExecution() override {
|
|
67
61
|
static const auto method =
|
|
68
62
|
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("disableEarlyViewCommandExecution");
|
|
@@ -598,11 +592,6 @@ bool JReactNativeFeatureFlagsCxxInterop::cxxNativeAnimatedEnabled(
|
|
|
598
592
|
return ReactNativeFeatureFlags::cxxNativeAnimatedEnabled();
|
|
599
593
|
}
|
|
600
594
|
|
|
601
|
-
bool JReactNativeFeatureFlagsCxxInterop::cxxNativeAnimatedRemoveJsSync(
|
|
602
|
-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
603
|
-
return ReactNativeFeatureFlags::cxxNativeAnimatedRemoveJsSync();
|
|
604
|
-
}
|
|
605
|
-
|
|
606
595
|
bool JReactNativeFeatureFlagsCxxInterop::disableEarlyViewCommandExecution(
|
|
607
596
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
|
608
597
|
return ReactNativeFeatureFlags::disableEarlyViewCommandExecution();
|
|
@@ -1073,9 +1062,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
|
|
1073
1062
|
makeNativeMethod(
|
|
1074
1063
|
"cxxNativeAnimatedEnabled",
|
|
1075
1064
|
JReactNativeFeatureFlagsCxxInterop::cxxNativeAnimatedEnabled),
|
|
1076
|
-
makeNativeMethod(
|
|
1077
|
-
"cxxNativeAnimatedRemoveJsSync",
|
|
1078
|
-
JReactNativeFeatureFlagsCxxInterop::cxxNativeAnimatedRemoveJsSync),
|
|
1079
1065
|
makeNativeMethod(
|
|
1080
1066
|
"disableEarlyViewCommandExecution",
|
|
1081
1067
|
JReactNativeFeatureFlagsCxxInterop::disableEarlyViewCommandExecution),
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<f14600a85cec20388ba1a5bc63010a68>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -39,9 +39,6 @@ class JReactNativeFeatureFlagsCxxInterop
|
|
|
39
39
|
static bool cxxNativeAnimatedEnabled(
|
|
40
40
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
41
41
|
|
|
42
|
-
static bool cxxNativeAnimatedRemoveJsSync(
|
|
43
|
-
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
44
|
-
|
|
45
42
|
static bool disableEarlyViewCommandExecution(
|
|
46
43
|
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
|
47
44
|
|
|
@@ -300,6 +300,7 @@ void JReactHostInspectorTarget::recordFrameTimings(
|
|
|
300
300
|
frameTimingSequence->getBeginDrawingTimestamp(),
|
|
301
301
|
frameTimingSequence->getCommitTimestamp(),
|
|
302
302
|
frameTimingSequence->getEndDrawingTimestamp(),
|
|
303
|
+
frameTimingSequence->getScreenshot(),
|
|
303
304
|
});
|
|
304
305
|
}
|
|
305
306
|
|
|
@@ -67,6 +67,17 @@ struct JFrameTimingSequence : public jni::JavaClass<JFrameTimingSequence> {
|
|
|
67
67
|
return HighResTimeStamp::fromChronoSteadyClockTimePoint(
|
|
68
68
|
std::chrono::steady_clock::time_point(std::chrono::nanoseconds(getFieldValue(field))));
|
|
69
69
|
}
|
|
70
|
+
|
|
71
|
+
std::optional<std::string> getScreenshot() const
|
|
72
|
+
{
|
|
73
|
+
auto field = javaClassStatic()->getField<jstring>("screenshot");
|
|
74
|
+
auto javaScreenshot = getFieldValue(field);
|
|
75
|
+
if (javaScreenshot) {
|
|
76
|
+
auto jstring = jni::static_ref_cast<jni::JString>(javaScreenshot);
|
|
77
|
+
return jstring->toStdString();
|
|
78
|
+
}
|
|
79
|
+
return std::nullopt;
|
|
80
|
+
}
|
|
70
81
|
};
|
|
71
82
|
|
|
72
83
|
struct JReactHostImpl : public jni::JavaClass<JReactHostImpl> {
|
|
@@ -22,7 +22,7 @@ constexpr struct {
|
|
|
22
22
|
int32_t Major = 0;
|
|
23
23
|
int32_t Minor = 84;
|
|
24
24
|
int32_t Patch = 0;
|
|
25
|
-
std::string_view Prerelease = "nightly-
|
|
25
|
+
std::string_view Prerelease = "nightly-20251204-5bb3a6d68";
|
|
26
26
|
} ReactNativeVersion;
|
|
27
27
|
|
|
28
28
|
} // namespace facebook::react
|
|
@@ -257,6 +257,72 @@ class JSI_EXPORT NativeState {
|
|
|
257
257
|
// the future. Until released, these features may be subject to change. After
|
|
258
258
|
// release, these features will be moved out of JSI_UNSTABLE and become frozen.
|
|
259
259
|
#ifdef JSI_UNSTABLE
|
|
260
|
+
/// Opaque class that is used to store serialized object from a runtime. The
|
|
261
|
+
/// lifetime of this object is orthogonal to the original runtime object, and
|
|
262
|
+
/// may outlive the original object.
|
|
263
|
+
class JSI_EXPORT Serialized {
|
|
264
|
+
public:
|
|
265
|
+
/// Uses \p secretAddr to validate if the Serialized data is supported. If so,
|
|
266
|
+
/// return the pointer to the underlying serialized data. Otherwise, return a
|
|
267
|
+
/// nullptr. This should be used by the runtime to deserialize the data.
|
|
268
|
+
virtual void* getPrivate(const void* secretAddr) = 0;
|
|
269
|
+
virtual ~Serialized();
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
/// Provides a set of APIs that allows copying objects between different
|
|
273
|
+
/// runtime instances. The runtimes instances must be of the same type. As an
|
|
274
|
+
/// example, a serialized object from Hermes runtime may only be deserialized by
|
|
275
|
+
/// another Hermes runtime.
|
|
276
|
+
class JSI_EXPORT ISerialization : public ICast {
|
|
277
|
+
public:
|
|
278
|
+
static constexpr jsi::UUID uuid{
|
|
279
|
+
0xd40fe0ec,
|
|
280
|
+
0xa47c,
|
|
281
|
+
0x42c9,
|
|
282
|
+
0x8c09,
|
|
283
|
+
0x661aeab832d8};
|
|
284
|
+
|
|
285
|
+
/// Serializes the given Value \p value using the structured clone algorithm.
|
|
286
|
+
/// It returns a shared pointer of an opaque Serialized object that can be
|
|
287
|
+
/// deserialized multiple times. The lifetime of the Serialized object is not
|
|
288
|
+
/// tied to the lifetime of the original object.
|
|
289
|
+
virtual std::shared_ptr<Serialized> serialize(Value& value) = 0;
|
|
290
|
+
|
|
291
|
+
/// Given a Serialized object provided by \p serialized, deserialize it using
|
|
292
|
+
/// the structured clone algorithm into a JS value in the current runtime.
|
|
293
|
+
/// Returns the deserialized JS value.
|
|
294
|
+
virtual Value deserialize(const std::shared_ptr<Serialized>& serialized) = 0;
|
|
295
|
+
|
|
296
|
+
/// Serializes the given jsi::Value \p value using the structured clone
|
|
297
|
+
/// algorithm. \p transferList must be a JS Array. Given the length property
|
|
298
|
+
/// of \p transferList, this API will transfer everything at index [0, length
|
|
299
|
+
/// - 1] to the serialized object. The transferred values will no longer be
|
|
300
|
+
/// usable in the original runtime. It returns a unique pointer of an opaque
|
|
301
|
+
/// Serialized object that can be deserialized once only by
|
|
302
|
+
/// deserializeWithTransfer. The lifetime of the Serialized object is not tied
|
|
303
|
+
/// to the lifetime of the original object.
|
|
304
|
+
virtual std::unique_ptr<Serialized> serializeWithTransfer(
|
|
305
|
+
Value& value,
|
|
306
|
+
const Array& transferList) = 0;
|
|
307
|
+
|
|
308
|
+
/// Using the structure clone algorithm, deserialize the object provided by \p
|
|
309
|
+
/// serialized into a JS value in the current runtime. \p serialized must be
|
|
310
|
+
/// created by serializeWithTransfer. If the current runtime does not support
|
|
311
|
+
/// the serialization scheme in \p serialized, then this method will throw and
|
|
312
|
+
/// \p serialized will remain unmodified. Otherwise, this will consume the
|
|
313
|
+
/// serialized data entirely and make the serialized objects in the current
|
|
314
|
+
/// runtime. Any transferred values in the serialized object will be owned by
|
|
315
|
+
/// the current runtime.
|
|
316
|
+
// This method returns an Array containing the deserialized values, where the
|
|
317
|
+
// first element is the value passed into serializeWithTransfer,
|
|
318
|
+
/// followed by all transferred values.
|
|
319
|
+
virtual Array deserializeWithTransfer(
|
|
320
|
+
std::unique_ptr<Serialized>& serialized) = 0;
|
|
321
|
+
|
|
322
|
+
protected:
|
|
323
|
+
~ISerialization() = default;
|
|
324
|
+
};
|
|
325
|
+
|
|
260
326
|
#endif // JSI_UNSTABLE
|
|
261
327
|
|
|
262
328
|
/// Represents a JS runtime. Movable, but not copyable. Note that
|
|
@@ -95,4 +95,22 @@ TEST_F(TracingTest, EmitsRecordedFrameTimingSequences) {
|
|
|
95
95
|
EXPECT_THAT(allTraceEvents, Contains(AtJsonPtr("/name", "DrawFrame")));
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
TEST_F(TracingTest, EmitsScreenshotEventWhenScreenshotValuePassed) {
|
|
99
|
+
InSequence s;
|
|
100
|
+
|
|
101
|
+
startTracing({tracing::Category::Screenshot});
|
|
102
|
+
auto now = HighResTimeStamp::now();
|
|
103
|
+
page_->recordFrameTimings(
|
|
104
|
+
tracing::FrameTimingSequence(
|
|
105
|
+
1, // id
|
|
106
|
+
11, // threadId
|
|
107
|
+
now,
|
|
108
|
+
now + HighResDuration::fromNanoseconds(10),
|
|
109
|
+
now + HighResDuration::fromNanoseconds(50),
|
|
110
|
+
"base64EncodedScreenshotData"));
|
|
111
|
+
|
|
112
|
+
auto allTraceEvents = endTracingAndCollectEvents();
|
|
113
|
+
EXPECT_THAT(allTraceEvents, Contains(AtJsonPtr("/name", "Screenshot")));
|
|
114
|
+
}
|
|
115
|
+
|
|
98
116
|
} // namespace facebook::react::jsinspector_modern
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
|
|
14
14
|
namespace facebook::react::jsinspector_modern::tracing {
|
|
15
15
|
|
|
16
|
+
using FrameSequenceId = uint64_t;
|
|
17
|
+
|
|
16
18
|
/**
|
|
17
19
|
* A struct representing a sequence of frame timings that happened on the Host side.
|
|
18
20
|
*/
|
|
@@ -20,23 +22,25 @@ struct FrameTimingSequence {
|
|
|
20
22
|
FrameTimingSequence() = delete;
|
|
21
23
|
|
|
22
24
|
FrameTimingSequence(
|
|
23
|
-
|
|
25
|
+
FrameSequenceId id,
|
|
24
26
|
ThreadId threadId,
|
|
25
27
|
HighResTimeStamp beginDrawingTimestamp,
|
|
26
28
|
HighResTimeStamp commitTimestamp,
|
|
27
|
-
HighResTimeStamp endDrawingTimestamp
|
|
29
|
+
HighResTimeStamp endDrawingTimestamp,
|
|
30
|
+
std::optional<std::string> screenshot = std::nullopt)
|
|
28
31
|
: id(id),
|
|
29
32
|
threadId(threadId),
|
|
30
33
|
beginDrawingTimestamp(beginDrawingTimestamp),
|
|
31
34
|
commitTimestamp(commitTimestamp),
|
|
32
|
-
endDrawingTimestamp(endDrawingTimestamp)
|
|
35
|
+
endDrawingTimestamp(endDrawingTimestamp),
|
|
36
|
+
screenshot(std::move(screenshot))
|
|
33
37
|
{
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
/**
|
|
37
41
|
* Unique ID of the sequence, used by Chrome DevTools Frontend to identify the events that form one sequence.
|
|
38
42
|
*/
|
|
39
|
-
|
|
43
|
+
FrameSequenceId id;
|
|
40
44
|
|
|
41
45
|
/**
|
|
42
46
|
* The ID of the native thread that is associated with the frame.
|
|
@@ -46,6 +50,11 @@ struct FrameTimingSequence {
|
|
|
46
50
|
HighResTimeStamp beginDrawingTimestamp;
|
|
47
51
|
HighResTimeStamp commitTimestamp;
|
|
48
52
|
HighResTimeStamp endDrawingTimestamp;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Optional screenshot data (base64 encoded) captured during the frame.
|
|
56
|
+
*/
|
|
57
|
+
std::optional<std::string> screenshot;
|
|
49
58
|
};
|
|
50
59
|
|
|
51
60
|
} // namespace facebook::react::jsinspector_modern::tracing
|
|
@@ -100,7 +100,7 @@ constexpr int FALLBACK_LAYER_TREE_ID = 1;
|
|
|
100
100
|
chunk.push_back(
|
|
101
101
|
TraceEventSerializer::serialize(std::move(setLayerTreeIdEvent)));
|
|
102
102
|
|
|
103
|
-
for (
|
|
103
|
+
for (auto&& frameTimingSequence : frameTimings) {
|
|
104
104
|
if (chunk.size() >= chunkSize) {
|
|
105
105
|
chunkCallback(std::move(chunk));
|
|
106
106
|
chunk = generateNewChunk(chunkSize);
|
|
@@ -121,6 +121,19 @@ constexpr int FALLBACK_LAYER_TREE_ID = 1;
|
|
|
121
121
|
chunk.push_back(TraceEventSerializer::serialize(std::move(commitEvent)));
|
|
122
122
|
chunk.push_back(
|
|
123
123
|
TraceEventSerializer::serialize(std::move(endDrawingEvent)));
|
|
124
|
+
|
|
125
|
+
if (frameTimingSequence.screenshot.has_value()) {
|
|
126
|
+
auto screenshotEvent = TraceEventGenerator::createScreenshotEvent(
|
|
127
|
+
frameTimingSequence.id,
|
|
128
|
+
FALLBACK_LAYER_TREE_ID,
|
|
129
|
+
std::move(frameTimingSequence.screenshot.value()),
|
|
130
|
+
frameTimingSequence.endDrawingTimestamp,
|
|
131
|
+
processId,
|
|
132
|
+
frameTimingSequence.threadId);
|
|
133
|
+
|
|
134
|
+
chunk.push_back(
|
|
135
|
+
TraceEventSerializer::serialize(std::move(screenshotEvent)));
|
|
136
|
+
}
|
|
124
137
|
}
|
|
125
138
|
|
|
126
139
|
if (!chunk.empty()) {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
#include "TraceEventGenerator.h"
|
|
9
|
+
#include "Timing.h"
|
|
9
10
|
#include "TracingCategory.h"
|
|
10
11
|
|
|
11
12
|
namespace facebook::react::jsinspector_modern::tracing {
|
|
@@ -77,4 +78,27 @@ TraceEventGenerator::createFrameTimingsEvents(
|
|
|
77
78
|
return {std::move(beginEvent), std::move(commitEvent), std::move(drawEvent)};
|
|
78
79
|
}
|
|
79
80
|
|
|
81
|
+
/* static */ TraceEvent TraceEventGenerator::createScreenshotEvent(
|
|
82
|
+
FrameSequenceId frameSequenceId,
|
|
83
|
+
int sourceId,
|
|
84
|
+
std::string&& snapshot,
|
|
85
|
+
HighResTimeStamp expectedDisplayTime,
|
|
86
|
+
ProcessId processId,
|
|
87
|
+
ThreadId threadId) {
|
|
88
|
+
folly::dynamic args = folly::dynamic::object("snapshot", std::move(snapshot))(
|
|
89
|
+
"source_id", sourceId)("frame_sequence", frameSequenceId)(
|
|
90
|
+
"expected_display_time",
|
|
91
|
+
highResTimeStampToTracingClockTimeStamp(expectedDisplayTime));
|
|
92
|
+
|
|
93
|
+
return TraceEvent{
|
|
94
|
+
.name = "Screenshot",
|
|
95
|
+
.cat = {Category::Screenshot},
|
|
96
|
+
.ph = 'O',
|
|
97
|
+
.ts = expectedDisplayTime,
|
|
98
|
+
.pid = processId,
|
|
99
|
+
.tid = threadId,
|
|
100
|
+
.args = std::move(args),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
80
104
|
}; // namespace facebook::react::jsinspector_modern::tracing
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#include "TraceEvent.h"
|
|
11
11
|
|
|
12
|
+
#include <jsinspector-modern/tracing/FrameTimingSequence.h>
|
|
12
13
|
#include <react/timing/primitives.h>
|
|
13
14
|
|
|
14
15
|
#include <tuple>
|
|
@@ -35,13 +36,24 @@ class TraceEventGenerator {
|
|
|
35
36
|
* Creates canonical "BeginFrame", "Commit", "DrawFrame" trace events.
|
|
36
37
|
*/
|
|
37
38
|
static std::tuple<TraceEvent, TraceEvent, TraceEvent> createFrameTimingsEvents(
|
|
38
|
-
|
|
39
|
+
FrameSequenceId sequenceId,
|
|
39
40
|
int layerTreeId,
|
|
40
41
|
HighResTimeStamp beginDrawingTimestamp,
|
|
41
42
|
HighResTimeStamp commitTimestamp,
|
|
42
43
|
HighResTimeStamp endDrawingTimestamp,
|
|
43
44
|
ProcessId processId,
|
|
44
45
|
ThreadId threadId);
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Creates canonical "Screenshot" trace event.
|
|
49
|
+
*/
|
|
50
|
+
static TraceEvent createScreenshotEvent(
|
|
51
|
+
FrameSequenceId frameSequenceId,
|
|
52
|
+
int sourceId,
|
|
53
|
+
std::string &&snapshot,
|
|
54
|
+
HighResTimeStamp expectedDisplayTime,
|
|
55
|
+
ProcessId processId,
|
|
56
|
+
ThreadId threadId);
|
|
45
57
|
};
|
|
46
58
|
|
|
47
59
|
}; // namespace facebook::react::jsinspector_modern::tracing
|
|
@@ -58,7 +58,7 @@ inline std::optional<Category> getTracingCategoryFromString(const std::string &s
|
|
|
58
58
|
} else if (str == "v8.execute") {
|
|
59
59
|
return Category::RuntimeExecution;
|
|
60
60
|
} else if (str == "disabled-by-default-devtools.screenshot") {
|
|
61
|
-
return Category::
|
|
61
|
+
return Category::Screenshot;
|
|
62
62
|
} else {
|
|
63
63
|
return std::nullopt;
|
|
64
64
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<34d260e51b2f70825c4867c98bbcf3de>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -38,10 +38,6 @@ bool ReactNativeFeatureFlags::cxxNativeAnimatedEnabled() {
|
|
|
38
38
|
return getAccessor().cxxNativeAnimatedEnabled();
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
bool ReactNativeFeatureFlags::cxxNativeAnimatedRemoveJsSync() {
|
|
42
|
-
return getAccessor().cxxNativeAnimatedRemoveJsSync();
|
|
43
|
-
}
|
|
44
|
-
|
|
45
41
|
bool ReactNativeFeatureFlags::disableEarlyViewCommandExecution() {
|
|
46
42
|
return getAccessor().disableEarlyViewCommandExecution();
|
|
47
43
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
|
-
* @generated SignedSource<<
|
|
7
|
+
* @generated SignedSource<<502fa8935abd547231be7980d768b817>>
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -54,11 +54,6 @@ class ReactNativeFeatureFlags {
|
|
|
54
54
|
*/
|
|
55
55
|
RN_EXPORT static bool cxxNativeAnimatedEnabled();
|
|
56
56
|
|
|
57
|
-
/**
|
|
58
|
-
* Removes JS sync at end of native animation
|
|
59
|
-
*/
|
|
60
|
-
RN_EXPORT static bool cxxNativeAnimatedRemoveJsSync();
|
|
61
|
-
|
|
62
57
|
/**
|
|
63
58
|
* Dispatch view commands in mount item order.
|
|
64
59
|
*/
|