Ship and delete mapBufferSerialization for Text measurement

Summary:
In this diff I'm shipping and deleting mapBufferSerialization for Text measurement

changelog: [internal] internal

Reviewed By: NickGerleman

Differential Revision: D40348982

fbshipit-source-id: 7336cbe055a55d7d8d4f0a723049842bae1defb5
This commit is contained in:
David Vacca 2022-10-18 13:32:03 -07:00 коммит произвёл Facebook GitHub Bot
Родитель e87cdc7fd4
Коммит 22b6e1c8ec
5 изменённых файлов: 8 добавлений и 79 удалений

Просмотреть файл

@ -17,7 +17,6 @@ import com.facebook.react.bridge.ReadableNativeMap;
import com.facebook.react.common.MapBuilder; import com.facebook.react.common.MapBuilder;
import com.facebook.react.common.annotations.VisibleForTesting; import com.facebook.react.common.annotations.VisibleForTesting;
import com.facebook.react.common.mapbuffer.MapBuffer; import com.facebook.react.common.mapbuffer.MapBuffer;
import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.uimanager.IViewManagerWithChildren; import com.facebook.react.uimanager.IViewManagerWithChildren;
import com.facebook.react.uimanager.ReactAccessibilityDelegate; import com.facebook.react.uimanager.ReactAccessibilityDelegate;
@ -132,13 +131,10 @@ public class ReactTextViewManager
@Override @Override
public Object updateState( public Object updateState(
ReactTextView view, ReactStylesDiffMap props, StateWrapper stateWrapper) { ReactTextView view, ReactStylesDiffMap props, StateWrapper stateWrapper) {
if (ReactFeatureFlags.mapBufferSerializationEnabled) {
MapBuffer stateMapBuffer = stateWrapper.getStateDataMapBuffer(); MapBuffer stateMapBuffer = stateWrapper.getStateDataMapBuffer();
if (stateMapBuffer != null) { if (stateMapBuffer != null) {
return getReactTextUpdate(view, props, stateMapBuffer); return getReactTextUpdate(view, props, stateMapBuffer);
} }
}
ReadableNativeMap state = stateWrapper.getStateData(); ReadableNativeMap state = stateWrapper.getStateData();
if (state == null) { if (state == null) {
return null; return null;

Просмотреть файл

@ -45,7 +45,6 @@ import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeMap; import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.common.MapBuilder; import com.facebook.react.common.MapBuilder;
import com.facebook.react.common.mapbuffer.MapBuffer; import com.facebook.react.common.mapbuffer.MapBuffer;
import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.uimanager.BaseViewManager; import com.facebook.react.uimanager.BaseViewManager;
import com.facebook.react.uimanager.FabricViewStateManager; import com.facebook.react.uimanager.FabricViewStateManager;
@ -1295,12 +1294,10 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
stateManager.setStateWrapper(stateWrapper); stateManager.setStateWrapper(stateWrapper);
if (ReactFeatureFlags.mapBufferSerializationEnabled) {
MapBuffer stateMapBuffer = stateWrapper.getStateDataMapBuffer(); MapBuffer stateMapBuffer = stateWrapper.getStateDataMapBuffer();
if (stateMapBuffer != null) { if (stateMapBuffer != null) {
return getReactTextUpdate(view, props, stateMapBuffer); return getReactTextUpdate(view, props, stateMapBuffer);
} }
}
ReadableNativeMap state = stateWrapper.getStateData(); ReadableNativeMap state = stateWrapper.getStateData();
if (state == null) { if (state == null) {

Просмотреть файл

@ -433,10 +433,6 @@ void Binding::installFabricUIManager(
// Keep reference to config object and cache some feature flags here // Keep reference to config object and cache some feature flags here
reactNativeConfig_ = config; reactNativeConfig_ = config;
contextContainer->insert(
"MapBufferSerializationEnabled",
getFeatureFlagValue("mapBufferSerializationEnabled"));
contextContainer->insert( contextContainer->insert(
"CalculateTransformedFramesEnabled", "CalculateTransformedFramesEnabled",
getFeatureFlagValue("calculateTransformedFramesEnabled")); getFeatureFlagValue("calculateTransformedFramesEnabled"));

Просмотреть файл

@ -146,8 +146,6 @@ Size measureAndroidComponentMapBuffer(
TextLayoutManager::TextLayoutManager( TextLayoutManager::TextLayoutManager(
const ContextContainer::Shared &contextContainer) const ContextContainer::Shared &contextContainer)
: contextContainer_(contextContainer), : contextContainer_(contextContainer),
mapBufferSerializationEnabled_(
contextContainer->at<bool>("MapBufferSerializationEnabled")),
measureCache_( measureCache_(
contextContainer->at<bool>("EnableLargeTextMeasureCache") contextContainer->at<bool>("EnableLargeTextMeasureCache")
? 1024 ? 1024
@ -171,10 +169,7 @@ TextMeasurement TextLayoutManager::measure(
telemetry->willMeasureText(); telemetry->willMeasureText();
} }
auto measurement = mapBufferSerializationEnabled_ auto measurement = doMeasureMapBuffer(
? doMeasureMapBuffer(
attributedString, paragraphAttributes, layoutConstraints)
: doMeasure(
attributedString, paragraphAttributes, layoutConstraints); attributedString, paragraphAttributes, layoutConstraints);
if (telemetry != nullptr) { if (telemetry != nullptr) {
@ -227,60 +222,6 @@ LinesMeasurements TextLayoutManager::measureLines(
AttributedString const &attributedString, AttributedString const &attributedString,
ParagraphAttributes const &paragraphAttributes, ParagraphAttributes const &paragraphAttributes,
Size size) const { Size size) const {
if (mapBufferSerializationEnabled_) {
return measureLinesMapBuffer(attributedString, paragraphAttributes, size);
}
const jni::global_ref<jobject> &fabricUIManager =
contextContainer_->at<jni::global_ref<jobject>>("FabricUIManager");
static auto measureLines =
jni::findClassStatic("com/facebook/react/fabric/FabricUIManager")
->getMethod<NativeArray::javaobject(
ReadableMap::javaobject,
ReadableMap::javaobject,
jfloat,
jfloat)>("measureLines");
auto serializedAttributedString = toDynamic(attributedString);
local_ref<ReadableNativeMap::javaobject> attributedStringRNM =
ReadableNativeMap::newObjectCxxArgs(serializedAttributedString);
local_ref<ReadableNativeMap::javaobject> paragraphAttributesRNM =
ReadableNativeMap::newObjectCxxArgs(toDynamic(paragraphAttributes));
local_ref<ReadableMap::javaobject> attributedStringRM = make_local(
reinterpret_cast<ReadableMap::javaobject>(attributedStringRNM.get()));
local_ref<ReadableMap::javaobject> paragraphAttributesRM = make_local(
reinterpret_cast<ReadableMap::javaobject>(paragraphAttributesRNM.get()));
auto array = measureLines(
fabricUIManager,
attributedStringRM.get(),
paragraphAttributesRM.get(),
size.width,
size.height);
auto dynamicArray = cthis(array)->consume();
LinesMeasurements lineMeasurements;
lineMeasurements.reserve(dynamicArray.size());
for (auto const &data : dynamicArray) {
lineMeasurements.push_back(LineMeasurement(data));
}
// Explicitly release smart pointers to free up space faster in JNI tables
attributedStringRM.reset();
attributedStringRNM.reset();
paragraphAttributesRM.reset();
paragraphAttributesRNM.reset();
return lineMeasurements;
}
LinesMeasurements TextLayoutManager::measureLinesMapBuffer(
AttributedString const &attributedString,
ParagraphAttributes const &paragraphAttributes,
Size size) const {
const jni::global_ref<jobject> &fabricUIManager = const jni::global_ref<jobject> &fabricUIManager =
contextContainer_->at<jni::global_ref<jobject>>("FabricUIManager"); contextContainer_->at<jni::global_ref<jobject>>("FabricUIManager");
static auto measureLines = static auto measureLines =

Просмотреть файл

@ -90,7 +90,6 @@ class TextLayoutManager {
void *self_{}; void *self_{};
ContextContainer::Shared contextContainer_; ContextContainer::Shared contextContainer_;
bool mapBufferSerializationEnabled_;
TextMeasureCache measureCache_; TextMeasureCache measureCache_;
}; };