Skip to content

Commit

Permalink
[0.66] Migrate NodeApiJsiRuntime from V8-JSI (#8663)
Browse files Browse the repository at this point in the history
* Migrate NapiJsiRuntime from V8-JSI (#8617)

* Add NapiJsiRuntime source and headers

* Implement up to NapiJsiRuntime::JsiHostFunctionCallback

* Change files

* Finished Shared NAPI wrappers

* Implemented miscellaneous utility methods

* Move macros into CPP

* yarn format

* Add TODO to rename MakeNapiJsiRuntime2

* Fix typo

* Consume MakeNapiJsiRuntime2

* Conditionally build NapiJsiRuntime.cpp

* Migrate test

* Move declarations into NapiJsiRuntime.cpp

* Delete NapiJsiRuntime_detail.h

* Re-enable NAPI_EXPERIMENTAL

* Added :NapiPointerValue definitions

* Use explicit captures

* Add export symbol for x86

* Ensure CreateExternalObject deletes scalars and arrays properly

* Use constants for RefHolder names

* Only run test if USE_V8 is defined

* Rename NapiTests to JsiTests

* Conditionally include Jsi Tests

* Rename MakeNapiJsiRuntime2 to MakeNodeApiJsiRuntime

Co-authored-by: dannyvv <dannyvv@microsoft.com>

* Move Shared\NapiJsiRuntime.* to MSRN.Cxx\NodeApiJsiRuntime.*

* Move JsiTest into MSRN.Cxx.UnitTests

* clang format

* Revert ABITests.vcxproj to main

* Default Cxx.UnitTests to NOT use V8

* Compile JsiTest only when using V8

Co-authored-by: dannyvv <dannyvv@microsoft.com>

* Remove backported change file

* Change files

Co-authored-by: dannyvv <dannyvv@microsoft.com>
  • Loading branch information
JunielKatarn and dannyvv committed Sep 23, 2021
1 parent 0314c1b commit b4d6793
Show file tree
Hide file tree
Showing 12 changed files with 2,084 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Migrate NapiJsiRuntime from V8-JSI (#8617)",
"packageName": "react-native-windows",
"email": "julio.rocha@microsoft.com",
"dependentChangeType": "patch"
}
32 changes: 32 additions & 0 deletions vnext/Microsoft.ReactNative.Cxx.UnitTests/JsiTest.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

#include "pch.h"

#include <gtest/gtest.h>

// JSI
#include <jsi/test/testlib.h>

// NAPI
#include <JSI/NodeApiJsiRuntime.h>

using facebook::jsi::Runtime;
using facebook::jsi::RuntimeFactory;

namespace Microsoft::Test {

std::vector<RuntimeFactory> runtimeGenerators() {
return {[]() -> std::unique_ptr<Runtime> {
napi_ext_env_settings settings{};

settings.this_size = sizeof(settings);
settings.flags.enable_gc_api = true;
napi_env env{};
napi_ext_create_env(&settings, &env);

return Microsoft::JSI::MakeNodeApiJsiRuntime(env);
}};
}

} // namespace Microsoft::Test
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
<WindowsTargetPlatformVersion Condition=" '$(WindowsTargetPlatformVersion)' == '' ">10.0.19041.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.16299.0</WindowsTargetPlatformMinVersion>
<CppWinRTNamespaceMergeDepth>2</CppWinRTNamespaceMergeDepth>
<UseV8 Condition="'$(UseV8)' == ''">false</UseV8>
<V8AppPlatform>uwp</V8AppPlatform>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(SolutionDir)packages\Microsoft.Windows.CppWinRT.2.0.210312.4\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('$(SolutionDir)packages\Microsoft.Windows.CppWinRT.2.0.210312.4\build\native\Microsoft.Windows.CppWinRT.props')" />
Expand Down Expand Up @@ -72,6 +74,10 @@
<CallingConvention>Cdecl</CallingConvention>
</ClCompile>
<Link>
<AdditionalDependencies>
delayimp.lib;
%(AdditionalDependencies)
</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
</Link>
Expand Down Expand Up @@ -114,6 +120,9 @@
<ClInclude Include="ReactModuleBuilderMock.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="JsiTest.cpp">
<ExcludedFromBuild Condition="'$(UseV8)' != 'true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="JsonJSValueReader.cpp" />
<ClCompile Include="JsonReader.cpp" />
<ClCompile Include="JSValueReaderTest.cpp" />
Expand Down Expand Up @@ -157,6 +166,7 @@
<ImportGroup Label="ExtensionTargets">
<Import Project="$(SolutionDir)packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.4\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets" Condition="Exists('$(SolutionDir)packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.4\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets')" />
<Import Project="$(SolutionDir)packages\Microsoft.Windows.CppWinRT.2.0.210312.4\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('$(SolutionDir)packages\Microsoft.Windows.CppWinRT.2.0.210312.4\build\native\Microsoft.Windows.CppWinRT.targets')" />
<Import Project="$(V8Package)\build\native\$(V8PackageName).targets" Condition="Exists('$(V8Package)\build\native\$(V8PackageName).targets') AND '$(UseV8)' == 'true'" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
Expand All @@ -165,5 +175,6 @@
<Error Condition="!Exists('$(SolutionDir)packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.4\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.4\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets'))" />
<Error Condition="!Exists('$(SolutionDir)packages\Microsoft.Windows.CppWinRT.2.0.210312.4\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)packages\Microsoft.Windows.CppWinRT.2.0.210312.4\build\native\Microsoft.Windows.CppWinRT.props'))" />
<Error Condition="!Exists('$(SolutionDir)packages\Microsoft.Windows.CppWinRT.2.0.210312.4\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)packages\Microsoft.Windows.CppWinRT.2.0.210312.4\build\native\Microsoft.Windows.CppWinRT.targets'))" />
<Error Condition="!Exists('$(V8Package)\build\native\$(V8PackageName).targets') AND '$(UseV8)' == 'true'" Text="$([System.String]::Format('$(ErrorText)', '$(V8Package)\build\native\$(V8PackageName).targets'))" />
</Target>
</Project>
1 change: 1 addition & 0 deletions vnext/Microsoft.ReactNative.Cxx.UnitTests/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
<packages>
<package id="Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn" version="1.8.1.4" targetFramework="native" />
<package id="Microsoft.Windows.CppWinRT" version="2.0.210312.4" targetFramework="native" />
<package id="ReactNative.V8Jsi.Windows.UWP" version="0.65.2" targetFramework="native" />
</packages>

0 comments on commit b4d6793

Please sign in to comment.