From bcc4ab35da9bcd2ee9aa2be86d602a03dc3b475b Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Wed, 22 Dec 2021 04:19:39 -0800 Subject: [PATCH] Remove use of TextLayoutManager::Shared and SharedTextLayoutManager Summary: changelog: [internal] For some reason, using `TextLayoutManager::Shared` in `TextInputShadowNode` trips up clang tidy linter. We have a plan to move away from `*::Shared` anyway, so let's remove it from `TextInputShadowNode` now. Why do we want to move away from `*::Shared`? Using `TextLayoutManager::Shared` is confusing for people unfamiliar with Fabric's codebase. It expresses a concept of immutability but uses term `shared`. Term shared is already used in C++ `std::shared_ptr`. Reviewed By: fkgozali Differential Revision: D33186422 fbshipit-source-id: 10ee588735997f5fedc372a1d1e3d9cd9684178a --- .../text/ParagraphComponentDescriptor.h | 2 +- .../components/text/ParagraphShadowNode.cpp | 4 ++-- .../components/text/ParagraphShadowNode.h | 5 ++-- .../TextInputComponentDescriptor.h | 2 +- .../iostextinput/TextInputShadowNode.cpp | 4 ++-- .../iostextinput/TextInputShadowNode.h | 5 ++-- .../textinput/iostextinput/TextInputState.cpp | 24 ++++++++++++++++++- .../textinput/iostextinput/TextInputState.h | 12 +++++++++- .../platform/ios/TextLayoutManager.h | 4 ---- 9 files changed, 46 insertions(+), 16 deletions(-) diff --git a/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h b/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h index 0801a07b8d1..b75c97789be 100644 --- a/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h +++ b/ReactCommon/react/renderer/components/text/ParagraphComponentDescriptor.h @@ -41,7 +41,7 @@ class ParagraphComponentDescriptor final } private: - SharedTextLayoutManager textLayoutManager_; + std::shared_ptr textLayoutManager_; }; } // namespace react diff --git a/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp b/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp index 46f40987841..26e127ee200 100644 --- a/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp +++ b/ReactCommon/react/renderer/components/text/ParagraphShadowNode.cpp @@ -93,9 +93,9 @@ Content ParagraphShadowNode::getContentWithMeasuredAttachments( } void ParagraphShadowNode::setTextLayoutManager( - SharedTextLayoutManager textLayoutManager) { + std::shared_ptr textLayoutManager) { ensureUnsealed(); - textLayoutManager_ = textLayoutManager; + textLayoutManager_ = std::move(textLayoutManager); } void ParagraphShadowNode::updateStateIfNeeded(Content const &content) { diff --git a/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h b/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h index f79d2788027..6948bc472a1 100644 --- a/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h +++ b/ReactCommon/react/renderer/components/text/ParagraphShadowNode.h @@ -57,7 +57,8 @@ class ParagraphShadowNode final : public ConcreteViewShadowNode< * `ParagraphShadowNode` uses the manager to measure text content * and construct `ParagraphState` objects. */ - void setTextLayoutManager(SharedTextLayoutManager textLayoutManager); + void setTextLayoutManager( + std::shared_ptr textLayoutManager); #pragma mark - LayoutableShadowNode @@ -96,7 +97,7 @@ class ParagraphShadowNode final : public ConcreteViewShadowNode< */ void updateStateIfNeeded(Content const &content); - SharedTextLayoutManager textLayoutManager_; + std::shared_ptr textLayoutManager_; /* * Cached content of the subtree started from the node. diff --git a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h index a23ad76a7b3..0f2a1e56429 100644 --- a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h +++ b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputComponentDescriptor.h @@ -36,7 +36,7 @@ class TextInputComponentDescriptor final } private: - TextLayoutManager::Shared textLayoutManager_; + std::shared_ptr textLayoutManager_; }; } // namespace react diff --git a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.cpp b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.cpp index fb5c0ff7f33..3e37ad49614 100644 --- a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.cpp +++ b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.cpp @@ -71,9 +71,9 @@ AttributedString TextInputShadowNode::getAttributedString( } void TextInputShadowNode::setTextLayoutManager( - TextLayoutManager::Shared const &textLayoutManager) { + std::shared_ptr textLayoutManager) { ensureUnsealed(); - textLayoutManager_ = textLayoutManager; + textLayoutManager_ = std::move(textLayoutManager); } void TextInputShadowNode::updateStateIfNeeded( diff --git a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.h b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.h index ffb370aab03..422f181654e 100644 --- a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.h +++ b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputShadowNode.h @@ -46,7 +46,8 @@ class TextInputShadowNode final : public ConcreteViewShadowNode< * `TextInputShadowNode` uses the manager to measure text content * and construct `TextInputState` objects. */ - void setTextLayoutManager(TextLayoutManager::Shared const &textLayoutManager); + void setTextLayoutManager( + std::shared_ptr textLayoutManager); #pragma mark - LayoutableShadowNode @@ -75,7 +76,7 @@ class TextInputShadowNode final : public ConcreteViewShadowNode< AttributedStringBox attributedStringBoxToMeasure( LayoutContext const &layoutContext) const; - TextLayoutManager::Shared textLayoutManager_; + std::shared_ptr textLayoutManager_; }; } // namespace react diff --git a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.cpp b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.cpp index c22ba8bd11d..85fd0b33901 100644 --- a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.cpp +++ b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.cpp @@ -8,5 +8,27 @@ #include "TextInputState.h" namespace facebook { -namespace react {} // namespace react +namespace react { + +#ifdef ANDROID +TextInputState::TextInputState( + TextInputState const &previousState, + folly::dynamic data){}; + +/* + * Empty implementation for Android because it doesn't use this class. + */ +folly::dynamic TextInputState::getDynamic() const { + return {}; +}; + +/* + * Empty implementation for Android because it doesn't use this class. + */ +MapBuffer TextInputState::getMapBuffer() const { + return MapBufferBuilder::EMPTY(); +}; +#endif + +} // namespace react } // namespace facebook diff --git a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.h b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.h index fb249f4a840..0d377ed8e67 100644 --- a/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.h +++ b/ReactCommon/react/renderer/components/textinput/iostextinput/TextInputState.h @@ -25,6 +25,8 @@ namespace react { */ class TextInputState final { public: + TextInputState() = default; + /* * All content of component. */ @@ -50,9 +52,17 @@ class TextInputState final { * text rendering infrastructure which is capable to render the * `AttributedString`. */ - SharedTextLayoutManager layoutManager; + std::shared_ptr layoutManager; size_t mostRecentEventCount{0}; + +#ifdef ANDROID + TextInputState(TextInputState const &previousState, folly::dynamic data); + + folly::dynamic getDynamic() const; + + MapBuffer getMapBuffer() const; +#endif }; } // namespace react diff --git a/ReactCommon/react/renderer/textlayoutmanager/platform/ios/TextLayoutManager.h b/ReactCommon/react/renderer/textlayoutmanager/platform/ios/TextLayoutManager.h index d23a8f9545a..716340de0d8 100644 --- a/ReactCommon/react/renderer/textlayoutmanager/platform/ios/TextLayoutManager.h +++ b/ReactCommon/react/renderer/textlayoutmanager/platform/ios/TextLayoutManager.h @@ -20,15 +20,11 @@ namespace react { class TextLayoutManager; -using SharedTextLayoutManager = std::shared_ptr; - /* * Cross platform facade for iOS-specific RCTTTextLayoutManager. */ class TextLayoutManager { public: - using Shared = std::shared_ptr; - TextLayoutManager(ContextContainer::Shared const &contextContainer); /*