Initialise Flipper on module initialisation

Summary:
^

This diff brings most things together and can be considered the test platform for RNW.

With this, Flipper client gets initialised and started.

This means the application connects and is ready for debugging.

Reviewed By: antonk52

Differential Revision: D39054912

fbshipit-source-id: 94397f6a72b1e9d9c0f2f3efaf9967be525076cd
This commit is contained in:
Lorenzo Blasa
2022-09-04 12:19:26 -07:00
committed by Facebook GitHub Bot
parent 69df1ee362
commit 322a1ba6b1
6 changed files with 64 additions and 7 deletions

View File

@@ -7,22 +7,53 @@
#pragma once #pragma once
#include <folly/dynamic.h>
#include <folly/json.h>
#include "JSValue.h" #include "JSValue.h"
#include "NativeModules.h" #include "NativeModules.h"
#include <FlipperReactDeviceInfo.h>
#include <FlipperReactScheduler.h>
#include <FlipperReactSocket.h>
#include "../../../../xplat/Flipper/FlipperClient.h"
#include "../../../../xplat/Flipper/FlipperInitConfig.h"
#include "../../../../xplat/Flipper/FlipperScheduler.h"
#include "../../../../xplat/Flipper/FlipperSocketProvider.h"
using namespace winrt::Microsoft::ReactNative; using namespace winrt::Microsoft::ReactNative;
namespace winrt::ReactNativeFlipper { namespace winrt::ReactNativeFlipper {
REACT_MODULE(FlipperModule, L"Flipper") REACT_MODULE(FlipperModule, L"Flipper")
struct FlipperModule { struct FlipperModule {
std::unique_ptr<facebook::flipper::Scheduler> sonarScheduler;
std::unique_ptr<facebook::flipper::Scheduler> connectionScheduler;
REACT_INIT(Initialize) REACT_INIT(Initialize)
void Initialize(ReactContext const& reactContext) noexcept { void Initialize(ReactContext const& reactContext) noexcept {
m_reactContext = reactContext; m_reactContext = reactContext;
// Initialise flipper, etc. sonarScheduler =
std::make_unique<facebook::flipper::FlipperReactScheduler>();
connectionScheduler =
std::make_unique<facebook::flipper::FlipperReactScheduler>();
facebook::flipper::FlipperReactDeviceInfo deviceInfo;
facebook::flipper::FlipperInitConfig config;
config.deviceData.host = deviceInfo.getHost();
config.deviceData.os = deviceInfo.getOS();
config.deviceData.device = deviceInfo.getDevice();
config.deviceData.deviceId = deviceInfo.getDeviceId();
config.deviceData.app = deviceInfo.getAppName();
config.deviceData.appId = deviceInfo.getAppId();
config.deviceData.privateAppDirectory = deviceInfo.getAppStorageDirectory();
config.callbackWorker = sonarScheduler.get();
config.connectionWorker = connectionScheduler.get();
facebook::flipper::FlipperClient::init(config);
facebook::flipper::FlipperSocketProvider::setDefaultProvider(
std::make_unique<facebook::flipper::FlipperWebSocketProvider>());
facebook::flipper::FlipperClient::instance()->start();
} }
REACT_METHOD(registerPlugin) REACT_METHOD(registerPlugin)

View File

@@ -9,12 +9,15 @@
#include <winrt/Windows.ApplicationModel.h> #include <winrt/Windows.ApplicationModel.h>
#include <winrt/Windows.Security.ExchangeActiveSyncProvisioning.h> #include <winrt/Windows.Security.ExchangeActiveSyncProvisioning.h>
#include <winrt/Windows.Storage.h>
using namespace winrt::Windows::Foundation; using namespace winrt::Windows::Foundation;
namespace facebook { namespace facebook {
namespace flipper { namespace flipper {
std::string FlipperReactDeviceInfo::getOS() {
return "Windows";
}
std::string FlipperReactDeviceInfo::getDevice() { std::string FlipperReactDeviceInfo::getDevice() {
try { try {
return winrt::to_string( return winrt::to_string(
@@ -46,6 +49,11 @@ std::string FlipperReactDeviceInfo::getAppId() {
return winrt::to_string( return winrt::to_string(
winrt::Windows::ApplicationModel::Package::Current().Id().Name()); winrt::Windows::ApplicationModel::Package::Current().Id().Name());
} }
std::string FlipperReactDeviceInfo::getAppStorageDirectory() {
winrt::Windows::Storage::StorageFolder storageFolder{
winrt::Windows::Storage::ApplicationData::Current().LocalFolder()};
return winrt::to_string(storageFolder.Path());
}
} // namespace flipper } // namespace flipper
} // namespace facebook } // namespace facebook

View File

@@ -14,11 +14,13 @@ namespace flipper {
class FlipperReactDeviceInfo { class FlipperReactDeviceInfo {
public: public:
std::string getOS();
std::string getDevice(); std::string getDevice();
std::string getDeviceId(); std::string getDeviceId();
std::string getHost(); std::string getHost();
std::string getAppName(); std::string getAppName();
std::string getAppId(); std::string getAppId();
std::string getAppStorageDirectory();
}; };
} // namespace flipper } // namespace flipper

View File

@@ -17,7 +17,7 @@ using namespace winrt::Microsoft::ReactNative;
namespace facebook { namespace facebook {
namespace flipper { namespace flipper {
class FlipperReactScheduler : public Scheduler { struct FlipperReactScheduler : public Scheduler {
FlipperReactScheduler() FlipperReactScheduler()
: dispatcher_(ReactDispatcher::CreateSerialDispatcher()) {} : dispatcher_(ReactDispatcher::CreateSerialDispatcher()) {}
virtual ~FlipperReactScheduler() {} virtual ~FlipperReactScheduler() {}

View File

@@ -109,7 +109,7 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'"> <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>_WIN32;_CRT_SECURE_NO_WARNINGS;FOLLY_NO_CONFIG;NOMINMAX;RN_EXPORT=;JSI_EXPORT=;WIN32;_WINDLL;_HAS_AUTO_PTR_ETC;__unused=[[maybe_unused]];FOLLY_MOBILE=1;_USE_MATH_DEFINES;_UNICODE;UNICODE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;BOOST_ALL_NO_LIB=1;BOOST_ERROR_CODE_HEADER_ONLY;BOOST_NO_RTTI;BOOST_NO_TYPEID;BOOST_SYSTEM_SOURCE;USE_EDGEMODE_JSRT;WIN32_LEAN_AND_MEAN;_DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>FB_SONARKIT_ENABLED;_WIN32;_CRT_SECURE_NO_WARNINGS;FOLLY_NO_CONFIG;NOMINMAX;RN_EXPORT=;JSI_EXPORT=;WIN32;_WINDLL;_HAS_AUTO_PTR_ETC;__unused=[[maybe_unused]];FOLLY_MOBILE=1;_USE_MATH_DEFINES;_UNICODE;UNICODE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;BOOST_ALL_NO_LIB=1;BOOST_ERROR_CODE_HEADER_ONLY;BOOST_NO_RTTI;BOOST_NO_TYPEID;BOOST_SYSTEM_SOURCE;USE_EDGEMODE_JSRT;WIN32_LEAN_AND_MEAN;_DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ProjectDir)..\..\node_modules\.fmt\fmt-7.1.3\include;$(ProjectDir)..\..\node_modules\.folly\folly-2021.06.28.00\;$(ProjectDir)..\..\node_modules\react-native-windows\stubs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ProjectDir)..\..\node_modules\.fmt\fmt-7.1.3\include;$(ProjectDir)..\..\node_modules\.folly\folly-2021.06.28.00\;$(ProjectDir)..\..\node_modules\react-native-windows\stubs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)..\..\node_modules\.fmt\fmt-7.1.3\include;$(ProjectDir)..\..\node_modules\react-native-windows\stubs;$(ProjectDir)..\..\node_modules\.folly\folly-2021.06.28.00;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)..\..\node_modules\.fmt\fmt-7.1.3\include;$(ProjectDir)..\..\node_modules\react-native-windows\stubs;$(ProjectDir)..\..\node_modules\.folly\folly-2021.06.28.00;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
@@ -119,7 +119,7 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'"> <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>_WIN32;_CRT_SECURE_NO_WARNINGS;FOLLY_NO_CONFIG;NOMINMAX;RN_EXPORT=;JSI_EXPORT=;WIN32;_WINDLL;_HAS_AUTO_PTR_ETC;__unused=[[maybe_unused]];FOLLY_MOBILE=1;_USE_MATH_DEFINES;_UNICODE;UNICODE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;BOOST_ALL_NO_LIB=1;BOOST_ERROR_CODE_HEADER_ONLY;BOOST_NO_RTTI;BOOST_NO_TYPEID;BOOST_SYSTEM_SOURCE;USE_EDGEMODE_JSRT;WIN32_LEAN_AND_MEAN;_DEBUG;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>FB_SONARKIT_ENABLED;_WIN32;_CRT_SECURE_NO_WARNINGS;FOLLY_NO_CONFIG;NOMINMAX;RN_EXPORT=;JSI_EXPORT=;WIN32;_WINDLL;_HAS_AUTO_PTR_ETC;__unused=[[maybe_unused]];FOLLY_MOBILE=1;_USE_MATH_DEFINES;_UNICODE;UNICODE;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;BOOST_ALL_NO_LIB=1;BOOST_ERROR_CODE_HEADER_ONLY;BOOST_NO_RTTI;BOOST_NO_TYPEID;BOOST_SYSTEM_SOURCE;USE_EDGEMODE_JSRT;WIN32_LEAN_AND_MEAN;_DEBUG;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ProjectDir)..\..\node_modules\.fmt\fmt-7.1.3\include;$(ProjectDir)..\..\node_modules\.folly\folly-2021.06.28.00\;$(ProjectDir)..\..\node_modules\react-native-windows\stubs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ProjectDir)..\..\node_modules\.fmt\fmt-7.1.3\include;$(ProjectDir)..\..\node_modules\.folly\folly-2021.06.28.00\;$(ProjectDir)..\..\node_modules\react-native-windows\stubs;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)..\..\node_modules\.fmt\fmt-7.1.3\include;$(ProjectDir)..\..\node_modules\react-native-windows\stubs;$(ProjectDir)..\..\node_modules\.folly\folly-2021.06.28.00;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)..\..\node_modules\.fmt\fmt-7.1.3\include;$(ProjectDir)..\..\node_modules\react-native-windows\stubs;$(ProjectDir)..\..\node_modules\.folly\folly-2021.06.28.00;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
@@ -152,6 +152,11 @@
<ClInclude Include="..\..\..\..\xplat\Flipper\FlipperTransportTypes.h" /> <ClInclude Include="..\..\..\..\xplat\Flipper\FlipperTransportTypes.h" />
<ClInclude Include="..\..\..\..\xplat\Flipper\FlipperURLSerializer.h" /> <ClInclude Include="..\..\..\..\xplat\Flipper\FlipperURLSerializer.h" />
<ClInclude Include="..\..\..\..\xplat\Flipper\Log.h" /> <ClInclude Include="..\..\..\..\xplat\Flipper\Log.h" />
<ClInclude Include="FlipperReactBaseSocket.h" />
<ClInclude Include="FlipperReactDeviceInfo.h" />
<ClInclude Include="FlipperReactScheduler.h" />
<ClInclude Include="FlipperReactSocket.h" />
<ClInclude Include="FlipperReactSocketClient.h" />
<ClInclude Include="ReactPackageProvider.h"> <ClInclude Include="ReactPackageProvider.h">
<DependentUpon>ReactPackageProvider.idl</DependentUpon> <DependentUpon>ReactPackageProvider.idl</DependentUpon>
</ClInclude> </ClInclude>
@@ -169,6 +174,9 @@
<ClCompile Include="..\..\..\..\xplat\Flipper\FlipperStep.cpp" /> <ClCompile Include="..\..\..\..\xplat\Flipper\FlipperStep.cpp" />
<ClCompile Include="..\..\..\..\xplat\Flipper\FlipperURLSerializer.cpp" /> <ClCompile Include="..\..\..\..\xplat\Flipper\FlipperURLSerializer.cpp" />
<ClCompile Include="..\..\..\..\xplat\Flipper\Log.cpp" /> <ClCompile Include="..\..\..\..\xplat\Flipper\Log.cpp" />
<ClCompile Include="FlipperReactDeviceInfo.cpp" />
<ClCompile Include="FlipperReactSocket.cpp" />
<ClCompile Include="FlipperReactSocketClient.cpp" />
<ClCompile Include="pch.cpp"> <ClCompile Include="pch.cpp">
<PrecompiledHeader>Create</PrecompiledHeader> <PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile> </ClCompile>

View File

@@ -17,6 +17,9 @@
<ClCompile Include="..\..\..\..\xplat\Flipper\FlipperStep.cpp" /> <ClCompile Include="..\..\..\..\xplat\Flipper\FlipperStep.cpp" />
<ClCompile Include="..\..\..\..\xplat\Flipper\FlipperURLSerializer.cpp" /> <ClCompile Include="..\..\..\..\xplat\Flipper\FlipperURLSerializer.cpp" />
<ClCompile Include="..\..\..\..\xplat\Flipper\Log.cpp" /> <ClCompile Include="..\..\..\..\xplat\Flipper\Log.cpp" />
<ClCompile Include="FlipperReactSocket.cpp" />
<ClCompile Include="FlipperReactSocketClient.cpp" />
<ClCompile Include="FlipperReactDeviceInfo.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="pch.h" /> <ClInclude Include="pch.h" />
@@ -46,6 +49,11 @@
<ClInclude Include="..\..\..\..\xplat\Flipper\FlipperTransportTypes.h" /> <ClInclude Include="..\..\..\..\xplat\Flipper\FlipperTransportTypes.h" />
<ClInclude Include="..\..\..\..\xplat\Flipper\FlipperURLSerializer.h" /> <ClInclude Include="..\..\..\..\xplat\Flipper\FlipperURLSerializer.h" />
<ClInclude Include="..\..\..\..\xplat\Flipper\Log.h" /> <ClInclude Include="..\..\..\..\xplat\Flipper\Log.h" />
<ClInclude Include="FlipperReactScheduler.h" />
<ClInclude Include="FlipperReactBaseSocket.h" />
<ClInclude Include="FlipperReactSocket.h" />
<ClInclude Include="FlipperReactSocketClient.h" />
<ClInclude Include="FlipperReactDeviceInfo.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="PropertySheet.props" /> <None Include="PropertySheet.props" />