diff --git a/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm index 6cbe904eec9d2e..28c4bd227b7cc9 100644 --- a/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/Modal/RCTModalHostViewComponentView.mm @@ -192,7 +192,8 @@ - (void)ensurePresentedOnlyIfNeeded #pragma mark - RCTMountingTransactionObserving -- (void)mountingTransactionWillMountWithMetadata:(MountingTransactionMetadata const &)metadata +- (void)mountingTransactionWillMount:(MountingTransaction const &)transaction + withSurfaceTelemetry:(facebook::react::SurfaceTelemetry const &)surfaceTelemetry { _modalContentsSnapshot = [self.viewController.view snapshotViewAfterScreenUpdates:NO]; } diff --git a/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm index 7752626d2d8363..2d339aead9dc1a 100644 --- a/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm @@ -147,7 +147,8 @@ - (void)dealloc #pragma mark - RCTMountingTransactionObserving -- (void)mountingTransactionDidMountWithMetadata:(MountingTransactionMetadata const &)metadata +- (void)mountingTransactionDidMount:(MountingTransaction const &)transaction + withSurfaceTelemetry:(facebook::react::SurfaceTelemetry const &)surfaceTelemetry { [self _remountChildren]; } diff --git a/React/Fabric/Mounting/RCTComponentViewFactory.mm b/React/Fabric/Mounting/RCTComponentViewFactory.mm index cf5a9181243b78..1487beaa2a92ce 100644 --- a/React/Fabric/Mounting/RCTComponentViewFactory.mm +++ b/React/Fabric/Mounting/RCTComponentViewFactory.mm @@ -95,9 +95,9 @@ - (RCTComponentViewClassDescriptor)_componentViewClassDescriptorFromClass:(Class { .viewClass = viewClass, .observesMountingTransactionWillMount = - (bool)class_respondsToSelector(viewClass, @selector(mountingTransactionWillMountWithMetadata:)), + (bool)class_respondsToSelector(viewClass, @selector(mountingTransactionWillMount:withSurfaceTelemetry:)), .observesMountingTransactionDidMount = - (bool)class_respondsToSelector(viewClass, @selector(mountingTransactionDidMountWithMetadata:)), + (bool)class_respondsToSelector(viewClass, @selector(mountingTransactionDidMount:withSurfaceTelemetry:)), }; #pragma clang diagnostic pop } diff --git a/React/Fabric/Mounting/RCTMountingManager.mm b/React/Fabric/Mounting/RCTMountingManager.mm index fb18cf4e96d15b..23d57bc42fe364 100644 --- a/React/Fabric/Mounting/RCTMountingManager.mm +++ b/React/Fabric/Mounting/RCTMountingManager.mm @@ -266,15 +266,16 @@ - (void)performTransaction:(MountingCoordinator::Shared const &)mountingCoordina auto surfaceId = mountingCoordinator->getSurfaceId(); mountingCoordinator->getTelemetryController().pullTransaction( - [&](MountingTransactionMetadata metadata) { + [&](MountingTransaction const &transaction, SurfaceTelemetry const &surfaceTelemetry) { [self.delegate mountingManager:self willMountComponentsWithRootTag:surfaceId]; - _observerCoordinator.notifyObserversMountingTransactionWillMount(metadata); + _observerCoordinator.notifyObserversMountingTransactionWillMount(transaction, surfaceTelemetry); }, - [&](ShadowViewMutationList const &mutations) { - RCTPerformMountInstructions(mutations, _componentViewRegistry, _observerCoordinator, surfaceId); + [&](MountingTransaction const &transaction, SurfaceTelemetry const &surfaceTelemetry) { + RCTPerformMountInstructions( + transaction.getMutations(), _componentViewRegistry, _observerCoordinator, surfaceId); }, - [&](MountingTransactionMetadata metadata) { - _observerCoordinator.notifyObserversMountingTransactionDidMount(metadata); + [&](MountingTransaction const &transaction, SurfaceTelemetry const &surfaceTelemetry) { + _observerCoordinator.notifyObserversMountingTransactionDidMount(transaction, surfaceTelemetry); [self.delegate mountingManager:self didMountComponentsWithRootTag:surfaceId]; }); } diff --git a/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.h b/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.h index 8f0f57234e2db3..f8178140491aed 100644 --- a/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.h +++ b/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.h @@ -11,7 +11,7 @@ #import #import -#import +#include class RCTMountingTransactionObserverCoordinator final { public: @@ -31,9 +31,11 @@ class RCTMountingTransactionObserverCoordinator final { * To be called from `RCTMountingManager`. */ void notifyObserversMountingTransactionWillMount( - facebook::react::MountingTransactionMetadata const &metadata) const; + facebook::react::MountingTransaction const &transaction, + facebook::react::SurfaceTelemetry const &surfaceTelemetry) const; void notifyObserversMountingTransactionDidMount( - facebook::react::MountingTransactionMetadata const &metadata) const; + facebook::react::MountingTransaction const &transaction, + facebook::react::SurfaceTelemetry const &surfaceTelemetry) const; private: facebook::butter::map< diff --git a/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.mm b/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.mm index 959c14603733a9..52424ac048f6b1 100644 --- a/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.mm +++ b/React/Fabric/Mounting/RCTMountingTransactionObserverCoordinator.mm @@ -40,9 +40,10 @@ } void RCTMountingTransactionObserverCoordinator::notifyObserversMountingTransactionWillMount( - MountingTransactionMetadata const &metadata) const + MountingTransaction const &transaction, + SurfaceTelemetry const &surfaceTelemetry) const { - auto surfaceId = metadata.surfaceId; + auto surfaceId = transaction.getSurfaceId(); auto surfaceRegistryIterator = registry_.find(surfaceId); if (surfaceRegistryIterator == registry_.end()) { return; @@ -50,16 +51,17 @@ auto &surfaceRegistry = surfaceRegistryIterator->second; for (auto const &componentViewDescriptor : surfaceRegistry) { if (componentViewDescriptor.observesMountingTransactionWillMount) { - [(id)componentViewDescriptor.view - mountingTransactionWillMountWithMetadata:metadata]; + [(id)componentViewDescriptor.view mountingTransactionWillMount:transaction + withSurfaceTelemetry:surfaceTelemetry]; } } } void RCTMountingTransactionObserverCoordinator::notifyObserversMountingTransactionDidMount( - MountingTransactionMetadata const &metadata) const + MountingTransaction const &transaction, + SurfaceTelemetry const &surfaceTelemetry) const { - auto surfaceId = metadata.surfaceId; + auto surfaceId = transaction.getSurfaceId(); auto surfaceRegistryIterator = registry_.find(surfaceId); if (surfaceRegistryIterator == registry_.end()) { return; @@ -67,8 +69,8 @@ auto &surfaceRegistry = surfaceRegistryIterator->second; for (auto const &componentViewDescriptor : surfaceRegistry) { if (componentViewDescriptor.observesMountingTransactionDidMount) { - [(id)componentViewDescriptor.view - mountingTransactionDidMountWithMetadata:metadata]; + [(id)componentViewDescriptor.view mountingTransactionDidMount:transaction + withSurfaceTelemetry:surfaceTelemetry]; } } } diff --git a/React/Fabric/Mounting/RCTMountingTransactionObserving.h b/React/Fabric/Mounting/RCTMountingTransactionObserving.h index 35594d87ad61e7..c24029a2d81ab1 100644 --- a/React/Fabric/Mounting/RCTMountingTransactionObserving.h +++ b/React/Fabric/Mounting/RCTMountingTransactionObserving.h @@ -7,7 +7,7 @@ #import -#import +#include NS_ASSUME_NONNULL_BEGIN @@ -50,14 +50,16 @@ NS_ASSUME_NONNULL_BEGIN * Is not being called for a component view which is being mounted as part of the transaction (because the view is not * registered as an observer yet). */ -- (void)mountingTransactionWillMountWithMetadata:(facebook::react::MountingTransactionMetadata const &)metadata; +- (void)mountingTransactionWillMount:(facebook::react::MountingTransaction const &)transaction + withSurfaceTelemetry:(facebook::react::SurfaceTelemetry const &)surfaceTelemetry; /* * Called right after the last mutation instruction is executed. * Is not being called for a component view which was being unmounted as part of the transaction (because the view is * not registered as an observer already). */ -- (void)mountingTransactionDidMountWithMetadata:(facebook::react::MountingTransactionMetadata const &)metadata; +- (void)mountingTransactionDidMount:(facebook::react::MountingTransaction const &)transaction + withSurfaceTelemetry:(facebook::react::SurfaceTelemetry const &)surfaceTelemetry; @end diff --git a/ReactCommon/react/renderer/mounting/MountingTransactionMetadata.cpp b/ReactCommon/react/renderer/mounting/MountingTransactionMetadata.cpp deleted file mode 100644 index e6106cda4f0447..00000000000000 --- a/ReactCommon/react/renderer/mounting/MountingTransactionMetadata.cpp +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#include "MountingTransactionMetadata.h" - -namespace facebook { -namespace react {} // namespace react -} // namespace facebook diff --git a/ReactCommon/react/renderer/mounting/MountingTransactionMetadata.h b/ReactCommon/react/renderer/mounting/MountingTransactionMetadata.h deleted file mode 100644 index d0eda81002cf7e..00000000000000 --- a/ReactCommon/react/renderer/mounting/MountingTransactionMetadata.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#pragma once - -#include -#include - -namespace facebook { -namespace react { - -/* - * Contains all (meta)information related to a MountingTransaction except a list - * of mutation instructions. - * The class is meant to be used when a consumer should not have access to all - * information about the transaction (incapsulation) but still needs to observe - * it to produce some side-effects. - */ -class MountingTransactionMetadata final { - public: - SurfaceId surfaceId; - MountingTransaction::Number number; - TransactionTelemetry telemetry; - SurfaceTelemetry surfaceTelemetry; -}; - -} // namespace react -} // namespace facebook diff --git a/ReactCommon/react/renderer/mounting/TelemetryController.cpp b/ReactCommon/react/renderer/mounting/TelemetryController.cpp index f660768a5cd7b2..98d4eecba9cbb1 100644 --- a/ReactCommon/react/renderer/mounting/TelemetryController.cpp +++ b/ReactCommon/react/renderer/mounting/TelemetryController.cpp @@ -17,10 +17,9 @@ TelemetryController::TelemetryController( : mountingCoordinator_(mountingCoordinator) {} bool TelemetryController::pullTransaction( - std::function const &willMount, - std::function const &doMount, - std::function const &didMount) - const { + MountingTransactionCallback const &willMount, + MountingTransactionCallback const &doMount, + MountingTransactionCallback const &didMount) const { auto optional = mountingCoordinator_.pullTransaction(); if (!optional.has_value()) { return false; @@ -28,8 +27,6 @@ bool TelemetryController::pullTransaction( auto transaction = std::move(*optional); - auto surfaceId = transaction.getSurfaceId(); - auto number = transaction.getNumber(); auto telemetry = transaction.getTelemetry(); auto numberOfMutations = static_cast(transaction.getMutations().size()); @@ -37,15 +34,15 @@ bool TelemetryController::pullTransaction( auto compoundTelemetry = compoundTelemetry_; mutex_.unlock(); - willMount({surfaceId, number, telemetry, compoundTelemetry}); + willMount(transaction, compoundTelemetry); telemetry.willMount(); - doMount(transaction.getMutations()); + doMount(transaction, compoundTelemetry); telemetry.didMount(); compoundTelemetry.incorporate(telemetry, numberOfMutations); - didMount({surfaceId, number, telemetry, compoundTelemetry}); + didMount(transaction, compoundTelemetry); mutex_.lock(); compoundTelemetry_ = compoundTelemetry; diff --git a/ReactCommon/react/renderer/mounting/TelemetryController.h b/ReactCommon/react/renderer/mounting/TelemetryController.h index 8ea445e8f0a32d..23ecd25c806a54 100644 --- a/ReactCommon/react/renderer/mounting/TelemetryController.h +++ b/ReactCommon/react/renderer/mounting/TelemetryController.h @@ -11,7 +11,6 @@ #include #include -#include #include namespace facebook { @@ -19,6 +18,10 @@ namespace react { class MountingCoordinator; +using MountingTransactionCallback = std::function; + /* * Provides convenient tools for aggregating and accessing telemetry data * associated with running Surface. @@ -43,12 +46,9 @@ class TelemetryController final { * Calls `MountingCoordinator::pullTransaction()` and aggregates telemetry. */ bool pullTransaction( - std::function const - &willMount, - std::function const - &doMount, - std::function const &didMount) - const; + MountingTransactionCallback const &willMount, + MountingTransactionCallback const &doMount, + MountingTransactionCallback const &didMount) const; private: MountingCoordinator const &mountingCoordinator_;