diff --git a/change/@office-iss-react-native-win32-2019-12-16-14-17-19-add-tm.json b/change/@office-iss-react-native-win32-2019-12-16-14-17-19-add-tm.json new file mode 100644 index 00000000000..8cdb5f05a10 --- /dev/null +++ b/change/@office-iss-react-native-win32-2019-12-16-14-17-19-add-tm.json @@ -0,0 +1,8 @@ +{ + "type": "minor", + "comment": "Add GetFacebookReactInstance :: uwp::Instance -> react::Instance", + "packageName": "@office-iss/react-native-win32", + "email": "zihanc@microsoft.com", + "commit": "f35ed1c42cd2a1d9ed098082bf97babe3bc9c8e6", + "date": "2019-12-16T22:16:35.515Z" +} \ No newline at end of file diff --git a/change/react-native-windows-2019-12-16-14-17-19-add-tm.json b/change/react-native-windows-2019-12-16-14-17-19-add-tm.json new file mode 100644 index 00000000000..d1e650fd768 --- /dev/null +++ b/change/react-native-windows-2019-12-16-14-17-19-add-tm.json @@ -0,0 +1,8 @@ +{ + "type": "prerelease", + "comment": "Add GetFacebookReactInstance :: uwpInstance -> react::Instance", + "packageName": "react-native-windows", + "email": "zihanc@microsoft.com", + "commit": "f35ed1c42cd2a1d9ed098082bf97babe3bc9c8e6", + "date": "2019-12-16T22:17:19.866Z" +} \ No newline at end of file diff --git a/change/react-native-windows-extended-2019-12-16-14-17-19-add-tm.json b/change/react-native-windows-extended-2019-12-16-14-17-19-add-tm.json new file mode 100644 index 00000000000..aeb878f5555 --- /dev/null +++ b/change/react-native-windows-extended-2019-12-16-14-17-19-add-tm.json @@ -0,0 +1,8 @@ +{ + "type": "none", + "comment": "Add GetFacebookReactInstance :: uwpInstance -> react::Instance", + "packageName": "react-native-windows-extended", + "email": "zihanc@microsoft.com", + "commit": "f35ed1c42cd2a1d9ed098082bf97babe3bc9c8e6", + "date": "2019-12-16T22:17:02.605Z" +} \ No newline at end of file diff --git a/vnext/ReactUWP/EndPoints/dll/react-native-uwp.arm.def b/vnext/ReactUWP/EndPoints/dll/react-native-uwp.arm.def index 4b945fd6e90..99a009884b3 100644 --- a/vnext/ReactUWP/EndPoints/dll/react-native-uwp.arm.def +++ b/vnext/ReactUWP/EndPoints/dll/react-native-uwp.arm.def @@ -55,3 +55,5 @@ xallocxWeak ??0TurboModule@react@facebook@@QAA@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$shared_ptr@VJSCallInvoker@react@facebook@@@4@@Z ??1TurboModule@react@facebook@@UAA@XZ ?get@TurboModule@react@facebook@@UAA?AVValue@jsi@3@AAVRuntime@53@ABVPropNameID@53@@Z +?GetReactInstanceFromUwpInstance@uwp@react@@YA?AV?$shared_ptr@VInstance@react@facebook@@@std@@ABUInstance@12winrt@@@Z +??0BridgeJSCallInvoker@react@facebook@@QAA@V?$weak_ptr@VInstance@react@facebook@@@std@@@Z diff --git a/vnext/ReactUWP/EndPoints/dll/react-native-uwp.x64.def b/vnext/ReactUWP/EndPoints/dll/react-native-uwp.x64.def index 31fc48763f6..9bbcd6b7f04 100644 --- a/vnext/ReactUWP/EndPoints/dll/react-native-uwp.x64.def +++ b/vnext/ReactUWP/EndPoints/dll/react-native-uwp.x64.def @@ -83,3 +83,5 @@ xallocxWeak ??0TurboModule@react@facebook@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$shared_ptr@VJSCallInvoker@react@facebook@@@4@@Z ??1TurboModule@react@facebook@@UEAA@XZ ?get@TurboModule@react@facebook@@UEAA?AVValue@jsi@3@AEAVRuntime@53@AEBVPropNameID@53@@Z +?GetReactInstanceFromUwpInstance@uwp@react@@YA?AV?$shared_ptr@VInstance@react@facebook@@@std@@AEBUInstance@12winrt@@@Z +??0BridgeJSCallInvoker@react@facebook@@QEAA@V?$weak_ptr@VInstance@react@facebook@@@std@@@Z diff --git a/vnext/ReactUWP/EndPoints/dll/react-native-uwp.x86.def b/vnext/ReactUWP/EndPoints/dll/react-native-uwp.x86.def index 249b4506b71..9ade8d4aa1f 100644 --- a/vnext/ReactUWP/EndPoints/dll/react-native-uwp.x86.def +++ b/vnext/ReactUWP/EndPoints/dll/react-native-uwp.x86.def @@ -83,3 +83,5 @@ xallocxWeak ??0TurboModule@react@facebook@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$shared_ptr@VJSCallInvoker@react@facebook@@@4@@Z ??1TurboModule@react@facebook@@UAE@XZ ?get@TurboModule@react@facebook@@UAE?AVValue@jsi@3@AAVRuntime@53@ABVPropNameID@53@@Z +?GetReactInstanceFromUwpInstance@uwp@react@@YA?AV?$shared_ptr@VInstance@react@facebook@@@std@@ABUInstance@12winrt@@@Z +??0BridgeJSCallInvoker@react@facebook@@QAE@V?$weak_ptr@VInstance@react@facebook@@@std@@@Z diff --git a/vnext/ReactUWP/ReactUWP.vcxproj b/vnext/ReactUWP/ReactUWP.vcxproj index 12344b39868..d3cf6421f6c 100644 --- a/vnext/ReactUWP/ReactUWP.vcxproj +++ b/vnext/ReactUWP/ReactUWP.vcxproj @@ -166,6 +166,7 @@ + @@ -267,6 +268,7 @@ + diff --git a/vnext/ReactUWP/ReactUWP.vcxproj.filters b/vnext/ReactUWP/ReactUWP.vcxproj.filters index 6c04e88d1b0..0d22c31026c 100644 --- a/vnext/ReactUWP/ReactUWP.vcxproj.filters +++ b/vnext/ReactUWP/ReactUWP.vcxproj.filters @@ -307,6 +307,9 @@ Utils + + TurboModule + Views @@ -627,6 +630,10 @@ Utils + + + TurboModule + Utils @@ -707,6 +714,9 @@ {6d877886-1c5c-45b8-8eae-2e1354cf673e} + + {174cd180-bab8-464e-9f7a-d2fac567f899} + diff --git a/vnext/ReactUWP/TurboModule/TurboModuleUtils.cpp b/vnext/ReactUWP/TurboModule/TurboModuleUtils.cpp new file mode 100644 index 00000000000..91d2963b824 --- /dev/null +++ b/vnext/ReactUWP/TurboModule/TurboModuleUtils.cpp @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#include "pch.h" +#include +#include +#include "../ABI/Instance_rt.h" + +namespace react::uwp { + +std::shared_ptr __cdecl GetReactInstanceFromUwpInstance( + const winrt::react::uwp::Instance &uwpInstance) { + auto abiInstance = reinterpret_cast(winrt::get_abi(uwpInstance)); + auto reactInstance = abiInstance->getInstance(); + assert(reactInstance); + auto fbInstance = reactInstance->GetInnerInstance(); + assert(fbInstance); + return fbInstance; +} + +} // namespace react::uwp diff --git a/vnext/include/ReactUWP/TurboModuleUtils.h b/vnext/include/ReactUWP/TurboModuleUtils.h new file mode 100644 index 00000000000..2c4b45e1d15 --- /dev/null +++ b/vnext/include/ReactUWP/TurboModuleUtils.h @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +#include + +namespace facebook::react { +class Instance; +} + +namespace react::uwp { +extern std::shared_ptr __cdecl GetReactInstanceFromUwpInstance( + const winrt::react::uwp::Instance &uwpInstance); +}