Skip to content

Commit 4078e7f

Browse files
j-piaseckifacebook-github-bot
authored andcommitted
Cover react/renderer/consistency:consistency with Stable API guards
Summary: Classifies `react/renderer/consistency:consistency` as a private target under the C++ stable API three-tier visibility model. Adds `#include <react/cxxstableapi/PrivateGuard.h>` to both headers in the module and declares the guard dependency in BUCK, CMake and the podspec. The private headers were reachable from higher tiers: `ShadowTreeRevisionConsistencyManager.h` was included by the for-frameworks `RuntimeScheduler.h` (and its two forks) and by the public `UIManager.h`, which would make the guard a hard error for consumers under `RN_STRICT_API`. Every use is a pointer, so those headers now forward declare the type and the include moves to `UIManager.cpp`. `UIManager.h` also drops `LazyShadowTreeRevisionConsistencyManager.h`, which re-exposed the same header through inheritance. Changelog: [Internal] Differential Revision: D116601683
1 parent 26f7074 commit 4078e7f

9 files changed

Lines changed: 18 additions & 5 deletions

File tree

packages/react-native/ReactCommon/react/renderer/consistency/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,7 @@ file(GLOB react_renderer_consistency_SRC CONFIGURE_DEPENDS *.cpp)
1212
add_library(react_renderer_consistency OBJECT ${react_renderer_consistency_SRC})
1313

1414
target_include_directories(react_renderer_consistency PUBLIC ${REACT_COMMON_DIR})
15+
16+
target_link_libraries(react_renderer_consistency react_cxxstableapi)
1517
target_compile_reactnative_options(react_renderer_consistency PRIVATE)
1618
target_compile_options(react_renderer_consistency PRIVATE -Wpedantic)

packages/react-native/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,7 @@ Pod::Spec.new do |s|
4040

4141
resolve_use_frameworks(s, header_mappings_dir: "../../..", module_name: "React_rendererconsistency")
4242

43+
s.dependency "React-cxxstableapi"
44+
4345
mark_as_react_native_build(s)
4446
end

packages/react-native/ReactCommon/react/renderer/consistency/ScopedShadowTreeRevisionLock.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#pragma once
99

10+
#include <react/cxxstableapi/PrivateGuard.h>
11+
1012
#include <react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h>
1113

1214
namespace facebook::react {

packages/react-native/ReactCommon/react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#pragma once
99

10+
#include <react/cxxstableapi/PrivateGuard.h>
11+
1012
namespace facebook::react {
1113

1214
/**

packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
#include <ReactCommon/RuntimeExecutor.h>
1111
#include <jsi/hermes-interfaces.h>
1212
#include <react/performance/timeline/PerformanceEntryReporter.h>
13-
#include <react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h>
1413
#include <react/renderer/runtimescheduler/SchedulerPriorityUtils.h>
1514
#include <react/renderer/runtimescheduler/Task.h>
1615
#include <react/timing/primitives.h>
@@ -20,6 +19,8 @@
2019

2120
namespace facebook::react {
2221

22+
class ShadowTreeRevisionConsistencyManager;
23+
2324
using RuntimeSchedulerRenderingUpdate = std::function<void()>;
2425
using SurfaceId = int32_t;
2526

packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
#ifndef RCT_REMOVE_LEGACY_ARCH
1111

1212
#include <ReactCommon/RuntimeExecutor.h>
13-
#include <react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h>
1413
#include <react/renderer/runtimescheduler/RuntimeScheduler.h>
1514
#include <react/renderer/runtimescheduler/Task.h>
1615
#include <atomic>
@@ -19,6 +18,8 @@
1918

2019
namespace facebook::react {
2120

21+
class ShadowTreeRevisionConsistencyManager;
22+
2223
class RuntimeScheduler_Legacy final : public RuntimeSchedulerBase {
2324
public:
2425
explicit RuntimeScheduler_Legacy(

packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#pragma once
99

1010
#include <ReactCommon/RuntimeExecutor.h>
11-
#include <react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h>
1211
#include <react/renderer/runtimescheduler/RuntimeScheduler.h>
1312
#include <react/renderer/runtimescheduler/Task.h>
1413
#include <atomic>
@@ -18,6 +17,8 @@
1817

1918
namespace facebook::react {
2019

20+
class ShadowTreeRevisionConsistencyManager;
21+
2122
class RuntimeScheduler_Modern final : public RuntimeSchedulerBase {
2223
public:
2324
explicit RuntimeScheduler_Modern(

packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
#include <cxxreact/TraceSection.h>
1212
#include <react/debug/react_native_assert.h>
1313
#include <react/featureflags/ReactNativeFeatureFlags.h>
14+
#include <react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h>
1415
#include <react/renderer/core/DynamicPropsUtilities.h>
1516
#include <react/renderer/core/PropsParserContext.h>
1617
#include <react/renderer/core/ShadowNodeFragment.h>
1718
#include <react/renderer/uimanager/AppRegistryBinding.h>
1819
#include <react/renderer/uimanager/UIManagerBinding.h>
1920
#include <react/renderer/uimanager/UIManagerCommitHook.h>
2021
#include <react/renderer/uimanager/UIManagerMountHook.h>
22+
#include <react/renderer/uimanager/consistency/LazyShadowTreeRevisionConsistencyManager.h>
2123

2224
#include <glog/logging.h>
2325

packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <shared_mutex>
1515

1616
#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
17-
#include <react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h>
1817
#include <react/renderer/core/InstanceHandle.h>
1918
#include <react/renderer/core/RawValue.h>
2019
#include <react/renderer/core/ShadowNode.h>
@@ -28,13 +27,14 @@
2827
#include <react/renderer/uimanager/UIManagerDelegate.h>
2928
#include <react/renderer/uimanager/UIManagerNativeAnimatedDelegate.h>
3029
#include <react/renderer/uimanager/UIManagerViewTransitionDelegate.h>
31-
#include <react/renderer/uimanager/consistency/LazyShadowTreeRevisionConsistencyManager.h>
3230
#include <react/renderer/uimanager/consistency/ShadowTreeRevisionProvider.h>
3331
#include <react/renderer/uimanager/primitives.h>
3432
#include <react/utils/ContextContainer.h>
3533

3634
namespace facebook::react {
3735

36+
class LazyShadowTreeRevisionConsistencyManager;
37+
class ShadowTreeRevisionConsistencyManager;
3838
class UIManagerBinding;
3939
class UIManagerCommitHook;
4040
class UIManagerMountHook;

0 commit comments

Comments
 (0)