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
This commit is contained in:
Samuel Susla
2021-12-22 04:20:42 -08:00
committed by Facebook GitHub Bot
parent 3e8934b49b
commit bcc4ab35da
9 changed files with 46 additions and 16 deletions
@@ -41,7 +41,7 @@ class ParagraphComponentDescriptor final
}
private:
SharedTextLayoutManager textLayoutManager_;
std::shared_ptr<TextLayoutManager const> textLayoutManager_;
};
} // namespace react
@@ -93,9 +93,9 @@ Content ParagraphShadowNode::getContentWithMeasuredAttachments(
}
void ParagraphShadowNode::setTextLayoutManager(
SharedTextLayoutManager textLayoutManager) {
std::shared_ptr<TextLayoutManager const> textLayoutManager) {
ensureUnsealed();
textLayoutManager_ = textLayoutManager;
textLayoutManager_ = std::move(textLayoutManager);
}
void ParagraphShadowNode::updateStateIfNeeded(Content const &content) {
@@ -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 const> textLayoutManager);
#pragma mark - LayoutableShadowNode
@@ -96,7 +97,7 @@ class ParagraphShadowNode final : public ConcreteViewShadowNode<
*/
void updateStateIfNeeded(Content const &content);
SharedTextLayoutManager textLayoutManager_;
std::shared_ptr<TextLayoutManager const> textLayoutManager_;
/*
* Cached content of the subtree started from the node.
@@ -36,7 +36,7 @@ class TextInputComponentDescriptor final
}
private:
TextLayoutManager::Shared textLayoutManager_;
std::shared_ptr<TextLayoutManager const> textLayoutManager_;
};
} // namespace react
@@ -71,9 +71,9 @@ AttributedString TextInputShadowNode::getAttributedString(
}
void TextInputShadowNode::setTextLayoutManager(
TextLayoutManager::Shared const &textLayoutManager) {
std::shared_ptr<TextLayoutManager const> textLayoutManager) {
ensureUnsealed();
textLayoutManager_ = textLayoutManager;
textLayoutManager_ = std::move(textLayoutManager);
}
void TextInputShadowNode::updateStateIfNeeded(
@@ -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 const> 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 const> textLayoutManager_;
};
} // namespace react
@@ -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
@@ -25,6 +25,8 @@ namespace react {
*/
class TextInputState final {
public:
TextInputState() = default;
/*
* All content of <TextInput> component.
*/
@@ -50,9 +52,17 @@ class TextInputState final {
* text rendering infrastructure which is capable to render the
* `AttributedString`.
*/
SharedTextLayoutManager layoutManager;
std::shared_ptr<TextLayoutManager const> layoutManager;
size_t mostRecentEventCount{0};
#ifdef ANDROID
TextInputState(TextInputState const &previousState, folly::dynamic data);
folly::dynamic getDynamic() const;
MapBuffer getMapBuffer() const;
#endif
};
} // namespace react
@@ -20,15 +20,11 @@ namespace react {
class TextLayoutManager;
using SharedTextLayoutManager = std::shared_ptr<const TextLayoutManager>;
/*
* Cross platform facade for iOS-specific RCTTTextLayoutManager.
*/
class TextLayoutManager {
public:
using Shared = std::shared_ptr<TextLayoutManager const>;
TextLayoutManager(ContextContainer::Shared const &contextContainer);
/*