Skip to content

Commit cc442eb

Browse files
zeyapfacebook-github-bot
authored andcommitted
Add Fantom.getFabricUpdateProps (#52108)
Summary: Pull Request resolved: #52108 ## Changelog: [General] [Added] - Add Fantom.getFabricUpdateProps For reading fabric update props scheduled via `UIManager::updateShadowTree` Reviewed By: rshest Differential Revision: D76857429 fbshipit-source-id: d19312d0b1c6460258a7949054e66313f05afdbf
1 parent aaad7e0 commit cc442eb

File tree

13 files changed

+57
-0
lines changed

13 files changed

+57
-0
lines changed

packages/react-native/React/Fabric/RCTScheduler.mm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ void schedulerShouldSynchronouslyUpdateViewOnUIThread(facebook::react::Tag tag,
7272
[scheduler.delegate schedulerDidSynchronouslyUpdateViewOnUIThread:tag props:props];
7373
}
7474

75+
void schedulerDidUpdateShadowTree(const std::unordered_map<Tag, folly::dynamic> &tagToProps) override
76+
{
77+
// Does nothing.
78+
// This delegate method is not currently used on iOS.
79+
}
80+
7581
private:
7682
void *scheduler_;
7783
};

packages/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,11 @@ void FabricUIManagerBinding::schedulerShouldSynchronouslyUpdateViewOnUIThread(
722722
}
723723
}
724724

725+
void FabricUIManagerBinding::schedulerDidUpdateShadowTree(
726+
const std::unordered_map<Tag, folly::dynamic>& /*tagToProps*/) {
727+
// no-op
728+
}
729+
725730
void FabricUIManagerBinding::onAnimationStarted() {
726731
auto mountingManager = getMountingManager("onAnimationStarted");
727732
if (!mountingManager) {

packages/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@ class FabricUIManagerBinding : public jni::HybridClass<FabricUIManagerBinding>,
126126
Tag tag,
127127
const folly::dynamic& props) override;
128128

129+
void schedulerDidUpdateShadowTree(
130+
const std::unordered_map<Tag, folly::dynamic>& tagToProps) override;
131+
129132
void setPixelDensity(float pointScaleFactor);
130133

131134
void driveCxxAnimations();

packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,13 @@ void Scheduler::uiManagerShouldSynchronouslyUpdateViewOnUIThread(
320320
}
321321
}
322322

323+
void Scheduler::uiManagerDidUpdateShadowTree(
324+
const std::unordered_map<Tag, folly::dynamic>& tagToProps) {
325+
if (delegate_ != nullptr) {
326+
delegate_->schedulerDidUpdateShadowTree(tagToProps);
327+
}
328+
}
329+
323330
void Scheduler::uiManagerShouldAddEventListener(
324331
std::shared_ptr<const EventListener> listener) {
325332
addEventListener(listener);

packages/react-native/ReactCommon/react/renderer/scheduler/Scheduler.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ class Scheduler final : public UIManagerDelegate {
9797
void uiManagerShouldSynchronouslyUpdateViewOnUIThread(
9898
Tag tag,
9999
const folly::dynamic& props) override;
100+
void uiManagerDidUpdateShadowTree(
101+
const std::unordered_map<Tag, folly::dynamic>& tagToProps) override;
100102
void uiManagerShouldAddEventListener(
101103
std::shared_ptr<const EventListener> listener) final;
102104
void uiManagerShouldRemoveEventListener(

packages/react-native/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ class SchedulerDelegate {
6868
Tag tag,
6969
const folly::dynamic& props) = 0;
7070

71+
virtual void schedulerDidUpdateShadowTree(
72+
const std::unordered_map<Tag, folly::dynamic>& tagToProps) = 0;
73+
7174
virtual ~SchedulerDelegate() noexcept = default;
7275
};
7376

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ class UIManagerDelegate {
6666
Tag tag,
6767
const folly::dynamic& props) = 0;
6868

69+
/*
70+
* Called after updateShadowTree is invoked.
71+
*/
72+
virtual void uiManagerDidUpdateShadowTree(
73+
const std::unordered_map<Tag, folly::dynamic>& tagToProps) = 0;
74+
6975
/*
7076
* Add event listener.
7177
*/

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ void UIManager::updateShadowTree(
218218
LOG(ERROR) << "Root ShadowNode has not been cloned";
219219
}
220220
});
221+
222+
if (delegate_ != nullptr) {
223+
delegate_->uiManagerDidUpdateShadowTree(tagToProps);
224+
}
221225
}
222226

223227
} // namespace facebook::react

packages/react-native/ReactCxxPlatform/react/renderer/scheduler/SchedulerDelegateImpl.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,9 @@ void SchedulerDelegateImpl::schedulerShouldSynchronouslyUpdateViewOnUIThread(
5858
mountingManager_->synchronouslyUpdateViewOnUIThread(tag, props);
5959
}
6060

61+
void SchedulerDelegateImpl::schedulerDidUpdateShadowTree(
62+
const std::unordered_map<Tag, folly::dynamic>& tagToProps) {
63+
mountingManager_->onUpdateShadowTree(tagToProps);
64+
}
65+
6166
} // namespace facebook::react

packages/react-native/ReactCxxPlatform/react/renderer/scheduler/SchedulerDelegateImpl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ class SchedulerDelegateImpl : public SchedulerDelegate {
5656
Tag tag,
5757
const folly::dynamic& props) override;
5858

59+
void schedulerDidUpdateShadowTree(
60+
const std::unordered_map<Tag, folly::dynamic>& tagToProps) override;
61+
5962
std::shared_ptr<IMountingManager> mountingManager_;
6063
};
6164

0 commit comments

Comments
 (0)