Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Use TurboModules for networking in MSRN",
"packageName": "react-native-windows",
"email": "julio.rocha@microsoft.com",
"dependentChangeType": "patch"
}
44 changes: 0 additions & 44 deletions vnext/Microsoft.ReactNative/Base/CoreNativeModules.cpp

This file was deleted.

30 changes: 0 additions & 30 deletions vnext/Microsoft.ReactNative/Base/CoreNativeModules.h

This file was deleted.

4 changes: 1 addition & 3 deletions vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,6 @@
<ItemGroup>
<ClInclude Include="ABICxxModule.h" />
<ClInclude Include="ABIViewManager.h" />
<ClInclude Include="Base\CoreNativeModules.h" />
<ClInclude Include="Base\CxxReactIncludes.h" />
<ClInclude Include="Base\FollyIncludes.h" />
<ClInclude Include="CoreAppPage.h">
Expand Down Expand Up @@ -421,7 +420,6 @@
<ItemGroup>
<ClCompile Include="ABICxxModule.cpp" />
<ClCompile Include="ABIViewManager.cpp" />
<ClCompile Include="Base\CoreNativeModules.cpp" />
<ClCompile Include="Base\CoreUIManagers.cpp" />
<ClCompile Include="CoreAppPage.cpp">
<DependentUpon>CoreAppPage.xaml</DependentUpon>
Expand Down Expand Up @@ -679,4 +677,4 @@
</ClCompile>
</ItemGroup>
</Target>
</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@
<ClCompile Include="ReactSupport.cpp" />
<ClCompile Include="TestHook.cpp" />
<ClCompile Include="ViewManagersProvider.cpp" />
<ClCompile Include="Base\CoreNativeModules.cpp">
<Filter>Base</Filter>
</ClCompile>
<ClCompile Include="Base\CoreUIManagers.cpp">
<Filter>Base</Filter>
</ClCompile>
Expand Down Expand Up @@ -357,9 +354,6 @@
<ClInclude Include="RedBox.h" />
<ClInclude Include="TestHook.h" />
<ClInclude Include="ViewManagersProvider.h" />
<ClInclude Include="Base\CoreNativeModules.h">
<Filter>Base</Filter>
</ClInclude>
<ClInclude Include="Modules\AccessibilityInfoModule.h">
<Filter>Modules</Filter>
</ClInclude>
Expand Down Expand Up @@ -632,7 +626,6 @@
<ClInclude Include="Views\IXamlRootView.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="JsiApi.h" />
<ClInclude Include="RedBoxErrorInfo.h" />
<ClInclude Include="RedBoxErrorFrameInfo.h" />
<ClInclude Include="Views\Image\Effects.h">
Expand Down
21 changes: 11 additions & 10 deletions vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#include "MsoUtils.h"

#include <AppModelHelpers.h>
#include <Base/CoreNativeModules.h>
#include <Threading/MessageDispatchQueue.h>
#include <Threading/MessageQueueThreadFactory.h>
#include <appModel.h>
Expand All @@ -30,7 +29,6 @@
#include <QuirkSettings.h>
#include <Shared/DevServerHelper.h>
#include <Views/ViewManager.h>
#include <base/CoreNativeModules.h>
#include <dispatchQueue/dispatchQueue.h>
#include "DynamicWriter.h"
#ifndef CORE_ABI
Expand Down Expand Up @@ -86,6 +84,7 @@
#include <tuple>
#include "ChakraRuntimeHolder.h"

#include <CreateModules.h>
#include <Utils/Helpers.h>
#include "CrashManager.h"
#include "JsiApi.h"
Expand Down Expand Up @@ -392,6 +391,16 @@ void ReactInstanceWin::LoadModules(
registerTurboModule(
L"Timing", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::Timing>());
#endif

registerTurboModule(::Microsoft::React::GetBlobTurboModuleName(), ::Microsoft::React::GetBlobModuleProvider());

registerTurboModule(::Microsoft::React::GetHttpTurboModuleName(), ::Microsoft::React::GetHttpModuleProvider());

registerTurboModule(
::Microsoft::React::GetFileReaderTurboModuleName(), ::Microsoft::React::GetFileReaderModuleProvider());

registerTurboModule(
::Microsoft::React::GetWebSocketTurboModuleName(), ::Microsoft::React::GetWebSocketModuleProvider());
}

//! Initialize() is called from the native queue.
Expand Down Expand Up @@ -459,15 +468,7 @@ void ReactInstanceWin::Initialize() noexcept {
}
};

#ifdef CORE_ABI
std::vector<facebook::react::NativeModuleDescription> cxxModules;
#else
// Acquire default modules and then populate with custom modules.
// Note that some of these have custom thread affinity.
std::vector<facebook::react::NativeModuleDescription> cxxModules =
Microsoft::ReactNative::GetCoreModules(m_batchingUIThread, m_jsMessageThread.Load(), m_reactContext);
#endif

auto nmp = std::make_shared<winrt::Microsoft::ReactNative::NativeModulesProvider>();

LoadModules(nmp, m_options.TurboModuleProvider);
Expand Down
32 changes: 27 additions & 5 deletions vnext/Shared/CreateModules.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

// React Native
#include <cxxreact/CxxModule.h>
#include <smartPtr/cntPtr.h>

// Windows API
#include <winrt/Windows.Foundation.h>
Expand All @@ -14,12 +13,16 @@
#include <memory>

// Forward declarations. Desktop projects can not access <React.h>
namespace winrt::Microsoft::ReactNative {
struct ReactContext;
struct ReactModuleProvider;
} // namespace winrt::Microsoft::ReactNative

namespace Mso::React {
struct IReactContext;
}

namespace facebook {
namespace react {
namespace facebook::react {

class MessageQueueThread;

Expand All @@ -29,11 +32,12 @@ class MessageQueueThread;
extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateTimingModule(
const std::shared_ptr<facebook::react::MessageQueueThread> &nativeThread) noexcept;

} // namespace react
} // namespace facebook
} // namespace facebook::react

namespace Microsoft::React {

#pragma region CxxModules

extern const char *GetHttpModuleName() noexcept;
extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateHttpModule(
winrt::Windows::Foundation::IInspectable const &inspectableProperties) noexcept;
Expand All @@ -50,4 +54,22 @@ extern const char *GetFileReaderModuleName() noexcept;
extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateFileReaderModule(
winrt::Windows::Foundation::IInspectable const &inspectableProperties) noexcept;

#pragma endregion CxxModules

#pragma region TurboModules

extern const wchar_t *GetBlobTurboModuleName() noexcept;
extern const winrt::Microsoft::ReactNative::ReactModuleProvider &GetBlobModuleProvider() noexcept;

extern const wchar_t *GetHttpTurboModuleName() noexcept;
extern const winrt::Microsoft::ReactNative::ReactModuleProvider &GetHttpModuleProvider() noexcept;

extern const wchar_t *GetFileReaderTurboModuleName() noexcept;
extern const winrt::Microsoft::ReactNative::ReactModuleProvider &GetFileReaderModuleProvider() noexcept;

extern const wchar_t *GetWebSocketTurboModuleName() noexcept;
extern const winrt::Microsoft::ReactNative::ReactModuleProvider &GetWebSocketModuleProvider() noexcept;

#pragma endregion TurboModules

} // namespace Microsoft::React
13 changes: 13 additions & 0 deletions vnext/Shared/Modules/BlobModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "BlobModule.h"

#include <CreateModules.h>
#include <Modules/CxxModuleUtilities.h>

// React Native
Expand All @@ -20,8 +21,12 @@ namespace msrn = winrt::Microsoft::ReactNative;

namespace {
constexpr char s_moduleName[] = "BlobModule";
constexpr wchar_t s_moduleNameW[] = L"BlobModule";

const auto &blobKeys = IBlobResource::FieldNames();

msrn::ReactModuleProvider s_moduleProvider = msrn::MakeTurboModuleProvider<Microsoft::React::BlobTurboModule>();

} // namespace

namespace Microsoft::React {
Expand Down Expand Up @@ -156,4 +161,12 @@ vector<module::CxxModule::Method> BlobModule::getMethods() {
return nullptr;
}

/*extern*/ const wchar_t *GetBlobTurboModuleName() noexcept {
return s_moduleNameW;
}

/*extern*/ const msrn::ReactModuleProvider &GetBlobModuleProvider() noexcept {
return s_moduleProvider;
}

} // namespace Microsoft::React
12 changes: 12 additions & 0 deletions vnext/Shared/Modules/FileReaderModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "FileReaderModule.h"

#include <CreateModules.h>
#include <ReactPropertyBag.h>
#include <sstream>

Expand All @@ -28,6 +29,9 @@ using winrt::Windows::Foundation::IInspectable;

namespace {
constexpr char s_moduleName[] = "FileReaderModule";
constexpr wchar_t s_moduleNameW[] = L"FileReaderModule";

msrn::ReactModuleProvider s_moduleProvider = msrn::MakeTurboModuleProvider<Microsoft::React::FileReaderTurboModule>();
} // namespace

namespace Microsoft::React {
Expand Down Expand Up @@ -198,4 +202,12 @@ void FileReaderTurboModule::ReadAsText(
return nullptr;
}

/*extern*/ const wchar_t *GetFileReaderTurboModuleName() noexcept {
return s_moduleNameW;
}

/*extern*/ const msrn::ReactModuleProvider &GetFileReaderModuleProvider() noexcept {
return s_moduleProvider;
}

} // namespace Microsoft::React
12 changes: 12 additions & 0 deletions vnext/Shared/Modules/HttpModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

#include "HttpModule.h"

#include <CreateModules.h>
#include <Modules/CxxModuleUtilities.h>
#include <ReactPropertyBag.h>

Expand Down Expand Up @@ -32,6 +33,7 @@ using Microsoft::React::Modules::SendEvent;
using Microsoft::React::Networking::IHttpResource;

constexpr char s_moduleName[] = "Networking";
constexpr wchar_t s_moduleNameW[] = L"Networking";

// React event names
constexpr char completedResponse[] = "didCompleteNetworkResponse";
Expand All @@ -48,6 +50,8 @@ constexpr wchar_t receivedIncrementalDataW[] = L"didReceiveNetworkIncrementalDat
constexpr wchar_t receivedDataProgressW[] = L"didReceiveNetworkDataProgress";
constexpr wchar_t receivedDataW[] = L"didReceiveNetworkData";

msrn::ReactModuleProvider s_moduleProvider = msrn::MakeTurboModuleProvider<Microsoft::React::HttpTurboModule>();

static void SetUpHttpResource(
shared_ptr<IHttpResource> resource,
weak_ptr<Instance> weakReactInstance,
Expand Down Expand Up @@ -327,4 +331,12 @@ std::vector<facebook::xplat::module::CxxModule::Method> HttpModule::getMethods()
return s_moduleName;
}

/*extern*/ const wchar_t *GetHttpTurboModuleName() noexcept {
return s_moduleNameW;
}

/*extern*/ const msrn::ReactModuleProvider &GetHttpModuleProvider() noexcept {
return s_moduleProvider;
}

} // namespace Microsoft::React
12 changes: 12 additions & 0 deletions vnext/Shared/Modules/WebSocketModule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <Modules/WebSocketModule.h>
#include <Modules/WebSocketTurboModule.h>

#include <CreateModules.h>
#include <Modules/CxxModuleUtilities.h>
#include <Modules/IWebSocketModuleContentHandler.h>
#include <ReactPropertyBag.h>
Expand Down Expand Up @@ -50,6 +51,9 @@ using Microsoft::React::Modules::SendEvent;
using Microsoft::React::Networking::IWebSocketResource;

constexpr char s_moduleName[] = "WebSocketModule";
constexpr wchar_t s_moduleNameW[] = L"WebSocketModule";

msrn::ReactModuleProvider s_moduleProvider = msrn::MakeTurboModuleProvider<Microsoft::React::WebSocketTurboModule>();

static shared_ptr<IWebSocketResource>
GetOrCreateWebSocket(int64_t id, string &&url, weak_ptr<WebSocketModule::SharedState> weakState) {
Expand Down Expand Up @@ -495,4 +499,12 @@ void WebSocketTurboModule::RemoveListeners(double /*count*/) noexcept {}
return nullptr;
}

/*extern*/ const wchar_t *GetWebSocketTurboModuleName() noexcept {
return s_moduleNameW;
}

/*extern*/ const msrn::ReactModuleProvider &GetWebSocketModuleProvider() noexcept {
return s_moduleProvider;
}

} // namespace Microsoft::React