diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JReadableMapBuffer.cpp b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JReadableMapBuffer.cpp new file mode 100644 index 00000000000000..dd5d24cfef9de8 --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JReadableMapBuffer.cpp @@ -0,0 +1,43 @@ +/* + * 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 "JReadableMapBuffer.h" + +namespace facebook { +namespace react { + +void JReadableMapBuffer::registerNatives() { + registerHybrid({ + makeNativeMethod( + "importByteBuffer", JReadableMapBuffer::importByteBuffer), + }); +} + +jni::local_ref JReadableMapBuffer::importByteBuffer() { + // TODO T83483191: Reevaluate what's the best approach here (allocateDirect vs + // DirectByteBuffer). + return jni::JByteBuffer::wrapBytes( + serializedData_.data(), serializedData_.size()); +} + +std::vector JReadableMapBuffer::data() const { + return serializedData_; +} + +jni::local_ref +JReadableMapBuffer::createWithContents(MapBuffer &&map) { + return newObjectCxxArgs(std::move(map)); +} + +JReadableMapBuffer::JReadableMapBuffer(MapBuffer &&map) + : serializedData_(std::move(map.bytes_)) { + react_native_assert( + (serializedData_.size() != 0) && "Error no content in map"); +} + +} // namespace react +} // namespace facebook diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.h b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JReadableMapBuffer.h similarity index 79% rename from ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.h rename to ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JReadableMapBuffer.h index 7d81cc265fe329..4aae5f03e8f1a3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.h +++ b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JReadableMapBuffer.h @@ -16,17 +16,17 @@ namespace facebook { namespace react { -class ReadableMapBuffer : public jni::HybridClass { +class JReadableMapBuffer : public jni::HybridClass { public: static auto constexpr kJavaDescriptor = "Lcom/facebook/react/common/mapbuffer/ReadableMapBuffer;"; static void registerNatives(); - static jni::local_ref createWithContents( + static jni::local_ref createWithContents( MapBuffer &&map); - explicit ReadableMapBuffer(MapBuffer &&map); + explicit JReadableMapBuffer(MapBuffer &&map); jni::local_ref importByteBuffer(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JWritableMapBuffer.cpp b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JWritableMapBuffer.cpp index 3ce30f15f40bbc..46ed21cd3ad849 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JWritableMapBuffer.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JWritableMapBuffer.cpp @@ -33,7 +33,7 @@ MapBuffer JWritableMapBuffer::getMapBuffer() { static const auto integerClass = jni::JInteger::javaClassStatic(); static const auto doubleClass = jni::JDouble::javaClassStatic(); static const auto stringClass = jni::JString::javaClassStatic(); - static const auto readableMapClass = ReadableMapBuffer::javaClassStatic(); + static const auto readableMapClass = JReadableMapBuffer::javaClassStatic(); static const auto writableMapClass = JWritableMapBuffer::javaClassStatic(); if (value->isInstanceOf(booleanClass)) { @@ -50,7 +50,7 @@ MapBuffer JWritableMapBuffer::getMapBuffer() { builder.putString(key, element->toStdString()); } else if (value->isInstanceOf(readableMapClass)) { auto element = - jni::static_ref_cast(value); + jni::static_ref_cast(value); builder.putMapBuffer(key, MapBuffer(element->cthis()->data())); } else if (value->isInstanceOf(writableMapClass)) { auto element = diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JWritableMapBuffer.h b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JWritableMapBuffer.h index 23aeae26a419b6..e076b28385bf0d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JWritableMapBuffer.h +++ b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/JWritableMapBuffer.h @@ -8,7 +8,7 @@ #pragma once #include -#include +#include namespace facebook::react { diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/OnLoad.cpp b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/OnLoad.cpp index 2eae838c186ae8..d6c51636c23f01 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/OnLoad.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/OnLoad.cpp @@ -7,10 +7,10 @@ #include +#include "JReadableMapBuffer.h" #include "JWritableMapBuffer.h" -#include "ReadableMapBuffer.h" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { return facebook::jni::initialize( - vm, [] { facebook::react::ReadableMapBuffer::registerNatives(); }); + vm, [] { facebook::react::JReadableMapBuffer::registerNatives(); }); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.cpp b/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.cpp deleted file mode 100644 index 92523c5d5e08bc..00000000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/common/mapbuffer/jni/react/common/mapbuffer/ReadableMapBuffer.cpp +++ /dev/null @@ -1,52 +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 "ReadableMapBuffer.h" - -namespace facebook { -namespace react { - -void ReadableMapBuffer::registerNatives() { - registerHybrid({ - makeNativeMethod("importByteBuffer", ReadableMapBuffer::importByteBuffer), - }); -} - -jni::local_ref ReadableMapBuffer::importByteBuffer() { - // TODO T83483191: Reevaluate what's the best approach here (allocateDirect vs - // DirectByteBuffer). - // - // On this method we should: - // - Review deallocation of serializedData (we are probably leaking - // _serializedData now). - // - Consider using allocate() or allocateDirect() methods from java instead - // of newDirectByteBuffer (to simplify de/allocation) : - // https://www.internalfb.com/intern/diffusion/FBS/browsefile/master/fbandroid/libraries/fbjni/cxx/fbjni/ByteBuffer.cpp - // - Add flags to describe if the data was already 'imported' - // - Long-term: Consider creating a big ByteBuffer that can be re-used to - // transfer data of multitple Maps - return jni::JByteBuffer::wrapBytes( - serializedData_.data(), serializedData_.size()); -} - -std::vector ReadableMapBuffer::data() const { - return serializedData_; -} - -jni::local_ref -ReadableMapBuffer::createWithContents(MapBuffer &&map) { - return newObjectCxxArgs(std::move(map)); -} - -ReadableMapBuffer::ReadableMapBuffer(MapBuffer &&map) - : serializedData_(std::move(map.bytes_)) { - react_native_assert( - (serializedData_.size() != 0) && "Error no content in map"); -} - -} // namespace react -} // namespace facebook diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/FabricMountingManager.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/FabricMountingManager.cpp index 7f67fe23c67071..3374fe0db0a874 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/FabricMountingManager.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/FabricMountingManager.cpp @@ -255,7 +255,7 @@ local_ref FabricMountingManager::getProps( ? static_cast(*oldShadowView.props) : ViewProps{}; auto newProps = static_cast(*newShadowView.props); - return ReadableMapBuffer::createWithContents( + return JReadableMapBuffer::createWithContents( viewPropsDiff(oldProps, newProps)); } else { return ReadableNativeMap::newObjectCxxArgs(newShadowView.props->rawProps); diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.cpp index d3f27b2099df9f..c336df5d9aa686 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.cpp @@ -32,12 +32,12 @@ StateWrapperImpl::getStateDataImpl() { return readableNativeMap; } -jni::local_ref +jni::local_ref StateWrapperImpl::getStateMapBufferDataImpl() { MapBuffer map = state_->getMapBuffer(); - auto ReadableMapBuffer = - ReadableMapBuffer::createWithContents(std::move(map)); - return ReadableMapBuffer; + auto readableMapBuffer = + JReadableMapBuffer::createWithContents(std::move(map)); + return readableMapBuffer; } void StateWrapperImpl::updateStateImpl(NativeMap *map) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.h b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.h index aa897e29ed557c..637efd7a83b4a9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.h +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/StateWrapperImpl.h @@ -8,7 +8,7 @@ #pragma once #include -#include +#include #include #include @@ -26,7 +26,7 @@ class StateWrapperImpl : public jni::HybridClass { static void registerNatives(); - jni::local_ref getStateMapBufferDataImpl(); + jni::local_ref getStateMapBufferDataImpl(); jni::local_ref getStateDataImpl(); void updateStateImpl(NativeMap *map); diff --git a/ReactCommon/react/renderer/mapbuffer/MapBuffer.h b/ReactCommon/react/renderer/mapbuffer/MapBuffer.h index 070d551e47dd2f..dcfa25ec703a26 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +++ b/ReactCommon/react/renderer/mapbuffer/MapBuffer.h @@ -20,7 +20,7 @@ namespace facebook { namespace react { -class ReadableMapBuffer; +class JReadableMapBuffer; // clang-format off @@ -96,7 +96,7 @@ class MapBuffer { /** * Data types available for serialization in MapBuffer - * Keep in sync with `DataType` enum in `ReadableMapBuffer.java`, which + * Keep in sync with `DataType` enum in `JReadableMapBuffer.java`, which * expects the same values after reading them through JNI. */ enum DataType : uint16_t { @@ -144,7 +144,7 @@ class MapBuffer { int32_t getKeyBucket(MapBuffer::Key key) const; - friend ReadableMapBuffer; + friend JReadableMapBuffer; }; } // namespace react diff --git a/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp b/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp index 925ab9bc6f7e7b..c4c5bfce9b1e1d 100644 --- a/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +++ b/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp @@ -9,7 +9,7 @@ #include -#include +#include #include #include #include @@ -111,9 +111,9 @@ Size measureAndroidComponentMapBuffer( ->getMethod("measureMapBuffer"); auto localDataMap = - ReadableMapBuffer::createWithContents(std::move(localData)); - auto propsMap = ReadableMapBuffer::createWithContents(std::move(props)); + JReadableMapBuffer::createWithContents(std::move(localData)); + auto propsMap = JReadableMapBuffer::createWithContents(std::move(props)); auto size = yogaMeassureToSize(measure( fabricUIManager, @@ -287,15 +287,15 @@ LinesMeasurements TextLayoutManager::measureLinesMapBuffer( static auto measureLines = jni::findClassStatic("com/facebook/react/fabric/FabricUIManager") ->getMethod("measureLinesMapBuffer"); auto attributedStringMB = - ReadableMapBuffer::createWithContents(toMapBuffer(attributedString)); + JReadableMapBuffer::createWithContents(toMapBuffer(attributedString)); auto paragraphAttributesMB = - ReadableMapBuffer::createWithContents(toMapBuffer(paragraphAttributes)); + JReadableMapBuffer::createWithContents(toMapBuffer(paragraphAttributes)); auto array = measureLines( fabricUIManager,