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:
Родитель
e87cdc7fd4
Коммит
22b6e1c8ec
|
@ -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,11 +1294,9 @@ 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();
|
||||||
|
|
|
@ -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,11 +169,8 @@ TextMeasurement TextLayoutManager::measure(
|
||||||
telemetry->willMeasureText();
|
telemetry->willMeasureText();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto measurement = mapBufferSerializationEnabled_
|
auto measurement = doMeasureMapBuffer(
|
||||||
? doMeasureMapBuffer(
|
attributedString, paragraphAttributes, layoutConstraints);
|
||||||
attributedString, paragraphAttributes, layoutConstraints)
|
|
||||||
: doMeasure(
|
|
||||||
attributedString, paragraphAttributes, layoutConstraints);
|
|
||||||
|
|
||||||
if (telemetry != nullptr) {
|
if (telemetry != nullptr) {
|
||||||
telemetry->didMeasureText();
|
telemetry->didMeasureText();
|
||||||
|
@ -227,60 +222,6 @@ LinesMeasurements TextLayoutManager::measureLines(
|
||||||
AttributedString const &attributedString,
|
AttributedString const &attributedString,
|
||||||
ParagraphAttributes const ¶graphAttributes,
|
ParagraphAttributes const ¶graphAttributes,
|
||||||
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 ¶graphAttributes,
|
|
||||||
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_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче