react-native-windows 0.66.16 → 0.66.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.json +58 -1
  2. package/CHANGELOG.md +30 -4
  3. package/Chakra/ChakraHelpers.cpp +0 -1
  4. package/Libraries/Network/RCTNetworkingWinShared.js +7 -0
  5. package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +2 -3
  6. package/Microsoft.ReactNative/Modules/CreateModules.cpp +3 -3
  7. package/Microsoft.ReactNative/packages.config +1 -1
  8. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +9 -13
  9. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +4 -0
  10. package/Microsoft.ReactNative.Cxx/NativeModules.h +2 -2
  11. package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +96 -4
  12. package/PropertySheets/JSEngine.props +1 -1
  13. package/Scripts/OfficeReact.Win32.nuspec +1 -1
  14. package/Shared/BaseScriptStoreImpl.cpp +1 -1
  15. package/Shared/CppRuntimeOptions.h +50 -0
  16. package/Shared/CreateModules.h +20 -1
  17. package/Shared/InspectorPackagerConnection.cpp +7 -5
  18. package/Shared/InspectorPackagerConnection.h +2 -2
  19. package/Shared/JSI/ChakraApi.cpp +0 -1
  20. package/Shared/JSI/ChakraRuntime.cpp +0 -1
  21. package/Shared/JSI/NapiJsiV8RuntimeHolder.h +1 -1
  22. package/Shared/Modules/BlobModule.cpp +376 -0
  23. package/Shared/Modules/BlobModule.h +153 -0
  24. package/Shared/Modules/CxxModuleUtilities.cpp +19 -0
  25. package/Shared/Modules/CxxModuleUtilities.h +23 -0
  26. package/Shared/Modules/FileReaderModule.cpp +156 -0
  27. package/Shared/Modules/FileReaderModule.h +54 -0
  28. package/Shared/Modules/HttpModule.cpp +201 -0
  29. package/Shared/Modules/HttpModule.h +60 -0
  30. package/Shared/Modules/IBlobPersistor.h +30 -0
  31. package/Shared/Modules/IHttpModuleProxy.h +30 -0
  32. package/Shared/Modules/IRequestBodyHandler.h +52 -0
  33. package/Shared/Modules/IResponseHandler.h +27 -0
  34. package/Shared/Modules/IUriHandler.h +37 -0
  35. package/Shared/Modules/IWebSocketModuleContentHandler.h +26 -0
  36. package/Shared/Modules/IWebSocketModuleProxy.h +22 -0
  37. package/Shared/Modules/NetworkingModule.cpp +1 -1
  38. package/Shared/Modules/WebSocketModule.cpp +97 -23
  39. package/Shared/Modules/WebSocketModule.h +35 -6
  40. package/Shared/Networking/IHttpResource.h +101 -0
  41. package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +3 -3
  42. package/Shared/Networking/OriginPolicy.h +15 -0
  43. package/Shared/Networking/OriginPolicyHttpFilter.cpp +747 -0
  44. package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
  45. package/Shared/Networking/WinRTHttpResource.cpp +465 -0
  46. package/Shared/Networking/WinRTHttpResource.h +86 -0
  47. package/Shared/Networking/WinRTTypes.h +33 -0
  48. package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +31 -22
  49. package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
  50. package/Shared/OInstance.cpp +44 -4
  51. package/Shared/OInstance.h +8 -4
  52. package/Shared/RuntimeOptions.cpp +93 -15
  53. package/Shared/RuntimeOptions.h +22 -9
  54. package/Shared/Shared.vcxitems +28 -4
  55. package/Shared/Shared.vcxitems.filters +93 -12
  56. package/Shared/Utils/WinRTConversions.cpp +22 -0
  57. package/Shared/Utils/WinRTConversions.h +15 -0
  58. package/package.json +1 -1
  59. package/Shared/IHttpResource.h +0 -34
@@ -5,6 +5,10 @@
5
5
 
6
6
  #include <Utilities.h>
7
7
  #include <Utils/CppWinrtLessExceptions.h>
8
+ #include <Utils/WinRTConversions.h>
9
+
10
+ // MSO
11
+ #include <dispatchQueue/dispatchQueue.h>
8
12
 
9
13
  // Windows API
10
14
  #include <winrt/Windows.Foundation.Collections.h>
@@ -44,6 +48,7 @@ using winrt::Windows::Storage::Streams::IDataWriter;
44
48
  using winrt::Windows::Storage::Streams::UnicodeEncoding;
45
49
 
46
50
  namespace {
51
+
47
52
  ///
48
53
  /// Implements an awaiter for Mso::DispatchQueue
49
54
  ///
@@ -72,20 +77,9 @@ auto resume_in_queue(const Mso::DispatchQueue &queue) noexcept {
72
77
  return awaitable{queue};
73
78
  } // resume_in_queue
74
79
 
75
- string HResultToString(hresult_error const &e) {
76
- std::stringstream stream;
77
- stream << "[0x" << std::hex << e.code() << "] " << winrt::to_string(e.message());
78
-
79
- return stream.str();
80
- }
81
-
82
- string HResultToString(hresult &&result) {
83
- return HResultToString(hresult_error(std::move(result), hresult_error::from_abi));
84
- }
85
-
86
80
  } // namespace
87
81
 
88
- namespace Microsoft::React {
82
+ namespace Microsoft::React::Networking {
89
83
 
90
84
  // private
91
85
  WinRTWebSocketResource::WinRTWebSocketResource(
@@ -134,12 +128,12 @@ IAsyncAction WinRTWebSocketResource::PerformConnect(Uri &&uri) noexcept {
134
128
  }
135
129
  } else {
136
130
  if (self->m_errorHandler) {
137
- self->m_errorHandler({HResultToString(std::move(result)), ErrorType::Connection});
131
+ self->m_errorHandler({Utilities::HResultToString(std::move(result)), ErrorType::Connection});
138
132
  }
139
133
  }
140
134
  } catch (hresult_error const &e) {
141
135
  if (self->m_errorHandler) {
142
- self->m_errorHandler({HResultToString(e), ErrorType::Connection});
136
+ self->m_errorHandler({Utilities::HResultToString(e), ErrorType::Connection});
143
137
  }
144
138
  }
145
139
 
@@ -180,12 +174,12 @@ fire_and_forget WinRTWebSocketResource::PerformPing() noexcept {
180
174
  }
181
175
  } else {
182
176
  if (self->m_errorHandler) {
183
- self->m_errorHandler({HResultToString(std::move(result)), ErrorType::Ping});
177
+ self->m_errorHandler({Utilities::HResultToString(std::move(result)), ErrorType::Ping});
184
178
  }
185
179
  }
186
180
  } catch (hresult_error const &e) {
187
181
  if (self->m_errorHandler) {
188
- self->m_errorHandler({HResultToString(e), ErrorType::Ping});
182
+ self->m_errorHandler({Utilities::HResultToString(e), ErrorType::Ping});
189
183
  }
190
184
  }
191
185
  }
@@ -246,7 +240,7 @@ fire_and_forget WinRTWebSocketResource::PerformWrite(string &&message, bool isBi
246
240
  }
247
241
  } else {
248
242
  if (self->m_errorHandler) {
249
- self->m_errorHandler({HResultToString(std::move(result)), ErrorType::Send});
243
+ self->m_errorHandler({Utilities::HResultToString(std::move(result)), ErrorType::Send});
250
244
  }
251
245
  }
252
246
  } catch (std::exception const &e) {
@@ -256,7 +250,7 @@ fire_and_forget WinRTWebSocketResource::PerformWrite(string &&message, bool isBi
256
250
  } catch (hresult_error const &e) {
257
251
  // TODO: Remove after fixing unit tests exceptions.
258
252
  if (self->m_errorHandler) {
259
- self->m_errorHandler({HResultToString(e), ErrorType::Ping});
253
+ self->m_errorHandler({Utilities::HResultToString(e), ErrorType::Ping});
260
254
  }
261
255
  }
262
256
  }
@@ -278,7 +272,7 @@ fire_and_forget WinRTWebSocketResource::PerformClose() noexcept {
278
272
  }
279
273
  } catch (hresult_error const &e) {
280
274
  if (m_errorHandler) {
281
- m_errorHandler({HResultToString(e), ErrorType::Close});
275
+ m_errorHandler({Utilities::HResultToString(e), ErrorType::Close});
282
276
  }
283
277
  }
284
278
 
@@ -322,7 +316,22 @@ void WinRTWebSocketResource::Connect(string &&url, const Protocols &protocols, c
322
316
  }
323
317
  } catch (hresult_error const &e) {
324
318
  if (self->m_errorHandler) {
325
- self->m_errorHandler({HResultToString(e), ErrorType::Receive});
319
+ string errorMessage;
320
+ ErrorType errorType;
321
+ // See
322
+ // https://docs.microsoft.com/uwp/api/windows.networking.sockets.messagewebsocketmessagereceivedeventargs.getdatareader?view=winrt-19041#remarks
323
+ if (e.code() == WININET_E_CONNECTION_ABORTED) {
324
+ errorMessage = "[0x80072EFE] Underlying TCP connection suddenly terminated";
325
+ errorType = ErrorType::Connection;
326
+ self->m_errorHandler({errorMessage, errorType});
327
+
328
+ // Note: We are not clear whether all read-related errors should close the socket.
329
+ self->Close(CloseCode::BadPayload, std::move(errorMessage));
330
+ } else {
331
+ errorMessage = Utilities::HResultToString(e);
332
+ errorType = ErrorType::Receive;
333
+ self->m_errorHandler({errorMessage, errorType});
334
+ }
326
335
  }
327
336
  }
328
337
  });
@@ -346,7 +355,7 @@ void WinRTWebSocketResource::Connect(string &&url, const Protocols &protocols, c
346
355
  uri = Uri{winrt::to_hstring(url)};
347
356
  } catch (hresult_error const &e) {
348
357
  if (m_errorHandler) {
349
- m_errorHandler({HResultToString(e), ErrorType::Connection});
358
+ m_errorHandler({Utilities::HResultToString(e), ErrorType::Connection});
350
359
  }
351
360
 
352
361
  // Abort - Mark connection as concluded.
@@ -414,4 +423,4 @@ void WinRTWebSocketResource::SetOnError(function<void(Error &&)> &&handler) noex
414
423
 
415
424
  #pragma endregion IWebSocketResource
416
425
 
417
- } // namespace Microsoft::React
426
+ } // namespace Microsoft::React::Networking
@@ -3,18 +3,18 @@
3
3
 
4
4
  #pragma once
5
5
 
6
- #include <IWebSocketResource.h>
7
6
  #include <dispatchQueue/dispatchQueue.h>
8
7
  #include <eventWaitHandle/eventWaitHandle.h>
9
8
  #include <winrt/Windows.Networking.Sockets.h>
10
9
  #include <winrt/Windows.Storage.Streams.h>
10
+ #include "IWebSocketResource.h"
11
11
 
12
12
  // Standard Library
13
13
  #include <future>
14
14
  #include <mutex>
15
15
  #include <queue>
16
16
 
17
- namespace Microsoft::React {
17
+ namespace Microsoft::React::Networking {
18
18
 
19
19
  class WinRTWebSocketResource : public IWebSocketResource, public std::enable_shared_from_this<WinRTWebSocketResource> {
20
20
  winrt::Windows::Networking::Sockets::IMessageWebSocket m_socket;
@@ -126,4 +126,4 @@ class WinRTWebSocketResource : public IWebSocketResource, public std::enable_sha
126
126
  #pragma endregion IWebSocketResource
127
127
  };
128
128
 
129
- } // namespace Microsoft::React
129
+ } // namespace Microsoft::React::Networking
@@ -26,6 +26,8 @@
26
26
  #include <cxxreact/ModuleRegistry.h>
27
27
 
28
28
  #include <Modules/ExceptionsManagerModule.h>
29
+ #include <Modules/HttpModule.h>
30
+ #include <Modules/NetworkingModule.h>
29
31
  #include <Modules/PlatformConstantsModule.h>
30
32
  #include <Modules/SourceCodeModule.h>
31
33
  #include <Modules/StatusBarManagerModule.h>
@@ -35,11 +37,11 @@
35
37
  #endif
36
38
 
37
39
  #include <BatchingMessageQueueThread.h>
40
+ #include <CppRuntimeOptions.h>
38
41
  #include <CreateModules.h>
39
42
  #include <DevSettings.h>
40
43
  #include <DevSupportManager.h>
41
44
  #include <IReactRootView.h>
42
- #include <RuntimeOptions.h>
43
45
  #include <Shlwapi.h>
44
46
  #include <WebSocketJSExecutorFactory.h>
45
47
  #include <safeint.h>
@@ -65,6 +67,20 @@ using namespace facebook;
65
67
  using namespace Microsoft::JSI;
66
68
 
67
69
  using std::make_shared;
70
+ using winrt::Microsoft::ReactNative::ReactPropertyBagHelper;
71
+
72
+ namespace Microsoft::React {
73
+
74
+ /*extern*/ std::unique_ptr<facebook::xplat::module::CxxModule> CreateHttpModule(
75
+ winrt::Windows::Foundation::IInspectable const &inspectableProperties) noexcept {
76
+ if (GetRuntimeOptionBool("Http.UseMonolithicModule")) {
77
+ return std::make_unique<NetworkingModule>();
78
+ } else {
79
+ return std::make_unique<HttpModule>(inspectableProperties);
80
+ }
81
+ }
82
+
83
+ } // namespace Microsoft::React
68
84
 
69
85
  namespace facebook {
70
86
  namespace react {
@@ -522,12 +538,21 @@ InstanceImpl::~InstanceImpl() {
522
538
  std::vector<std::unique_ptr<NativeModule>> InstanceImpl::GetDefaultNativeModules(
523
539
  std::shared_ptr<MessageQueueThread> nativeQueue) {
524
540
  std::vector<std::unique_ptr<NativeModule>> modules;
541
+ auto transitionalProps{ReactPropertyBagHelper::CreatePropertyBag()};
542
+
543
+ modules.push_back(std::make_unique<CxxNativeModule>(
544
+ m_innerInstance,
545
+ Microsoft::React::GetHttpModuleName(),
546
+ [nativeQueue, transitionalProps]() -> std::unique_ptr<xplat::module::CxxModule> {
547
+ return Microsoft::React::CreateHttpModule(transitionalProps);
548
+ },
549
+ nativeQueue));
525
550
 
526
551
  modules.push_back(std::make_unique<CxxNativeModule>(
527
552
  m_innerInstance,
528
- "WebSocketModule",
529
- [nativeQueue]() -> std::unique_ptr<xplat::module::CxxModule> {
530
- return Microsoft::React::CreateWebSocketModule();
553
+ Microsoft::React::GetWebSocketModuleName(),
554
+ [nativeQueue, transitionalProps]() -> std::unique_ptr<xplat::module::CxxModule> {
555
+ return Microsoft::React::CreateWebSocketModule(transitionalProps);
531
556
  },
532
557
  nativeQueue));
533
558
 
@@ -589,6 +614,21 @@ std::vector<std::unique_ptr<NativeModule>> InstanceImpl::GetDefaultNativeModules
589
614
  []() { return std::make_unique<StatusBarManagerModule>(); },
590
615
  nativeQueue));
591
616
 
617
+ // TODO: Follow up - Blob module not supported in UWP. Need to define property bag lifetime and onwership.
618
+ #if (defined(_MSC_VER) && !defined(WINRT))
619
+ modules.push_back(std::make_unique<CxxNativeModule>(
620
+ m_innerInstance,
621
+ Microsoft::React::GetBlobModuleName(),
622
+ [transitionalProps]() { return Microsoft::React::CreateBlobModule(transitionalProps); },
623
+ nativeQueue));
624
+
625
+ modules.push_back(std::make_unique<CxxNativeModule>(
626
+ m_innerInstance,
627
+ Microsoft::React::GetFileReaderModuleName(),
628
+ [transitionalProps]() { return Microsoft::React::CreateFileReaderModule(transitionalProps); },
629
+ nativeQueue));
630
+ #endif
631
+
592
632
  return modules;
593
633
  }
594
634
 
@@ -5,14 +5,18 @@
5
5
 
6
6
  #pragma once
7
7
 
8
+ #include <ReactPropertyBag.h>
9
+ #include <TurboModuleManager.h>
10
+ #include "InstanceManager.h"
11
+
12
+ // React Native
13
+ #include <cxxreact/Instance.h>
14
+
15
+ // Standard Libriary
8
16
  #include <memory>
9
17
  #include <string>
10
18
  #include <vector>
11
19
 
12
- #include <TurboModuleManager.h>
13
- #include <cxxreact/Instance.h>
14
- #include "InstanceManager.h"
15
-
16
20
  namespace facebook {
17
21
  namespace react {
18
22
 
@@ -1,45 +1,123 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ #include <CppRuntimeOptions.h>
1
5
  #include <RuntimeOptions.h>
2
6
 
7
+ // Standard Library
3
8
  #include <mutex>
4
9
  #include <unordered_map>
5
10
 
6
- using std::lock_guard;
7
11
  using std::mutex;
12
+ using std::scoped_lock;
8
13
  using std::string;
9
14
 
10
15
  namespace {
11
- std::unordered_map<string, int32_t> g_runtimeOptions;
16
+ std::unordered_map<string, int32_t> g_runtimeOptionInts;
17
+ std::unordered_map<string, string> g_runtimeOptionStrings;
12
18
  mutex g_runtimeOptionsMutex;
19
+
20
+ void __cdecl GetStringCallback(const char *buffer, size_t length, void *state) {
21
+ if (!buffer)
22
+ return;
23
+
24
+ *static_cast<char **>(state) = static_cast<char *>(malloc(length));
25
+ strncpy_s(*static_cast<char **>(state), length, buffer, length);
26
+ }
13
27
  } // namespace
14
28
 
15
29
  namespace Microsoft::React {
16
30
 
17
31
  void __cdecl SetRuntimeOptionBool(string &&name, bool value) noexcept {
18
- lock_guard<mutex> guard{g_runtimeOptionsMutex};
19
- g_runtimeOptions.insert_or_assign(std::move(name), value ? 1 : 0);
32
+ MicrosoftReactSetRuntimeOptionBool(name.c_str(), value);
20
33
  }
21
34
 
22
35
  void __cdecl SetRuntimeOptionInt(string &&name, int32_t value) noexcept {
23
- lock_guard<mutex> guard{g_runtimeOptionsMutex};
24
- g_runtimeOptions.insert_or_assign(std::move(name), value);
36
+ MicrosoftReactSetRuntimeOptionInt(name.c_str(), value);
37
+ }
38
+
39
+ void __cdecl SetRuntimeOptionString(string &&name, string &&value) noexcept {
40
+ if (!value.empty())
41
+ MicrosoftReactSetRuntimeOptionString(std::move(name).c_str(), std::move(value).c_str());
25
42
  }
26
43
 
27
44
  const bool __cdecl GetRuntimeOptionBool(const string &name) noexcept {
28
- lock_guard<mutex> guard{g_runtimeOptionsMutex};
29
- auto itr = g_runtimeOptions.find(name);
30
- if (itr != g_runtimeOptions.end())
31
- return itr->second == 1;
45
+ return MicrosoftReactGetRuntimeOptionBool(name.c_str());
46
+ }
47
+
48
+ const int32_t __cdecl GetRuntimeOptionInt(const string &name) noexcept {
49
+ return MicrosoftReactGetRuntimeOptionInt(name.c_str());
50
+ }
51
+
52
+ const string __cdecl GetRuntimeOptionString(const string &name) noexcept {
53
+ char *payload{nullptr};
54
+ MicrosoftReactGetRuntimeOptionString(name.c_str(), GetStringCallback, &payload);
55
+
56
+ if (!payload)
57
+ return string{};
58
+
59
+ return string{std::move(payload)};
60
+ }
61
+
62
+ } // namespace Microsoft::React
63
+
64
+ void __cdecl MicrosoftReactSetRuntimeOptionBool(const char *name, bool value) noexcept {
65
+ if (!name)
66
+ return;
67
+
68
+ scoped_lock lock{g_runtimeOptionsMutex};
69
+ if (value)
70
+ g_runtimeOptionInts.insert_or_assign(name, 1);
71
+ else
72
+ g_runtimeOptionInts.erase(name);
73
+ }
74
+
75
+ void __cdecl MicrosoftReactSetRuntimeOptionInt(const char *name, int32_t value) noexcept {
76
+ if (!name)
77
+ return;
78
+
79
+ scoped_lock lock{g_runtimeOptionsMutex};
80
+ if (value)
81
+ g_runtimeOptionInts.insert_or_assign(name, value);
82
+ else
83
+ g_runtimeOptionInts.erase(name);
84
+ }
85
+
86
+ void __cdecl MicrosoftReactSetRuntimeOptionString(const char *name, const char *value) noexcept {
87
+ if (!name)
88
+ return;
89
+
90
+ scoped_lock lock{g_runtimeOptionsMutex};
91
+ if (value)
92
+ g_runtimeOptionStrings.insert_or_assign(name, value);
93
+ else
94
+ g_runtimeOptionStrings.erase(name);
95
+ }
96
+
97
+ const bool __cdecl MicrosoftReactGetRuntimeOptionBool(const char *name) noexcept {
98
+ scoped_lock lock{g_runtimeOptionsMutex};
99
+ auto itr = g_runtimeOptionInts.find(name);
100
+ if (itr != g_runtimeOptionInts.end())
101
+ return itr->second != 0;
32
102
 
33
103
  return false;
34
104
  }
35
105
 
36
- const int32_t __cdecl GetRuntimeOptionInt(const string &name) noexcept {
37
- lock_guard<mutex> guard{g_runtimeOptionsMutex};
38
- auto itr = g_runtimeOptions.find(name);
39
- if (itr != g_runtimeOptions.end())
106
+ const int32_t __cdecl MicrosoftReactGetRuntimeOptionInt(const char *name) noexcept {
107
+ scoped_lock lock{g_runtimeOptionsMutex};
108
+ auto itr = g_runtimeOptionInts.find(name);
109
+ if (itr != g_runtimeOptionInts.end())
40
110
  return itr->second;
41
111
 
42
112
  return 0;
43
113
  }
44
114
 
45
- } // namespace Microsoft::React
115
+ void MicrosoftReactGetRuntimeOptionString(const char *name, MicrosoftReactGetStringCallback callBack, void *state) {
116
+ scoped_lock lock{g_runtimeOptionsMutex};
117
+ auto itr = g_runtimeOptionStrings.find(name);
118
+ if (itr != g_runtimeOptionStrings.cend()) {
119
+ callBack(itr->second.c_str(), itr->second.size() * sizeof(char) + 1 /*NULL termination*/, state);
120
+ } else {
121
+ callBack(nullptr, 0, state);
122
+ }
123
+ }
@@ -3,34 +3,47 @@
3
3
 
4
4
  #pragma once
5
5
 
6
- #include <string>
7
-
8
- namespace Microsoft::React {
9
-
10
6
  /// <summary>
11
7
  /// Sets a global boolean value identified by an arbitrary string.
12
8
  /// </summary>
13
9
  /// <param name="name">Global key</param>
14
- void __cdecl SetRuntimeOptionBool(std::string &&name, bool value) noexcept;
10
+ void __cdecl MicrosoftReactSetRuntimeOptionBool(const char *name, bool value) noexcept;
15
11
 
16
12
  /// <summary>
17
13
  /// Sets a global signed integer value identified by an arbitrary string.
18
14
  /// </summary>
19
15
  /// <param name="name">Global boolean key</param>
20
- void __cdecl SetRuntimeOptionInt(std::string &&name, std::int32_t value) noexcept;
16
+ void __cdecl MicrosoftReactSetRuntimeOptionInt(const char *name, int32_t value) noexcept;
17
+
18
+ /// <summary>
19
+ /// Sets a global signed integer value identified by an arbitrary string.
20
+ /// </summary>
21
+ /// <param name="name">Global string key</param>
22
+ void __cdecl MicrosoftReactSetRuntimeOptionString(const char *name, const char *value) noexcept;
21
23
 
22
24
  /// <summary>
23
25
  /// Retrieves a global boolean value for the given key.
24
26
  /// </summary>
25
27
  /// <param name="name">Global boolean key</param>
26
28
  /// <returns>Value stored for the given key, or false if the entry doesn't exist (default)</returns>
27
- const bool __cdecl GetRuntimeOptionBool(const std::string &name) noexcept;
29
+ const bool __cdecl MicrosoftReactGetRuntimeOptionBool(const char *name) noexcept;
28
30
 
29
31
  /// <summary>
30
32
  /// Retrieves a global boolean value for the given key.
31
33
  /// </summary>
32
34
  /// <param name="name">Global key</param>
33
35
  /// <returns>Value stored for the given key, or 0 if the entry doesn't exist (default)</returns>
34
- const std::int32_t __cdecl GetRuntimeOptionInt(const std::string &name) noexcept;
36
+ const int32_t __cdecl MicrosoftReactGetRuntimeOptionInt(const char *name) noexcept;
37
+
38
+ /// <param name="buffer">String contents. nullptr if none found</param>
39
+ /// <param name="length">String length. 0 if none found</param>
40
+ /// <param name="state">Pointer used to pass or retrieve arbitrary data</param>
41
+ typedef void(__cdecl *MicrosoftReactGetStringCallback)(const char *buffer, size_t length, void *state);
35
42
 
36
- } // namespace Microsoft::React
43
+ /// <summary>
44
+ /// Retrieves a global string value for the given key.
45
+ /// </summary>
46
+ /// <param name="name">Global key</param>
47
+ /// <param name="callBack">Handler used to access the obtained string</param>
48
+ /// <param name="state">Arbitrary data to pass on to or retrieve from callBack</param>
49
+ void MicrosoftReactGetRuntimeOptionString(const char *name, MicrosoftReactGetStringCallback callBack, void *state);
@@ -45,13 +45,20 @@
45
45
  <ClCompile Include="$(MSBuildThisFileDirectory)Modules\AsyncStorageModuleWin32.cpp">
46
46
  <ExcludedFromBuild Condition="'$(ApplicationType)' == ''">true</ExcludedFromBuild>
47
47
  </ClCompile>
48
+ <ClCompile Include="$(MSBuildThisFileDirectory)Modules\BlobModule.cpp" />
49
+ <ClCompile Include="$(MSBuildThisFileDirectory)Modules\CxxModuleUtilities.cpp" />
48
50
  <ClCompile Include="$(MSBuildThisFileDirectory)Modules\ExceptionsManagerModule.cpp" />
51
+ <ClCompile Include="$(MSBuildThisFileDirectory)Modules\FileReaderModule.cpp" />
52
+ <ClCompile Include="$(MSBuildThisFileDirectory)Modules\HttpModule.cpp" />
49
53
  <ClCompile Include="$(MSBuildThisFileDirectory)Modules\I18nModule.cpp" />
50
54
  <ClCompile Include="$(MSBuildThisFileDirectory)Modules\NetworkingModule.cpp" />
51
55
  <ClCompile Include="$(MSBuildThisFileDirectory)Modules\PlatformConstantsModule.cpp" />
52
56
  <ClCompile Include="$(MSBuildThisFileDirectory)Modules\SourceCodeModule.cpp" />
53
57
  <ClCompile Include="$(MSBuildThisFileDirectory)Modules\StatusBarManagerModule.cpp" />
54
58
  <ClCompile Include="$(MSBuildThisFileDirectory)Modules\WebSocketModule.cpp" />
59
+ <ClCompile Include="$(MSBuildThisFileDirectory)Networking\OriginPolicyHttpFilter.cpp" />
60
+ <ClCompile Include="$(MSBuildThisFileDirectory)Networking\WinRTHttpResource.cpp" />
61
+ <ClCompile Include="$(MSBuildThisFileDirectory)Networking\WinRTWebSocketResource.cpp" />
55
62
  <ClCompile Include="$(MSBuildThisFileDirectory)OInstance.cpp" />
56
63
  <ClCompile Include="$(MSBuildThisFileDirectory)PackagerConnection.cpp" />
57
64
  <ClCompile Include="$(MSBuildThisFileDirectory)RuntimeOptions.cpp" />
@@ -61,10 +68,10 @@
61
68
  <ClCompile Include="$(MSBuildThisFileDirectory)tracing\tracing.cpp" />
62
69
  <ClCompile Include="$(MSBuildThisFileDirectory)TurboModuleManager.cpp" />
63
70
  <ClCompile Include="$(MSBuildThisFileDirectory)Utils.cpp" />
71
+ <ClCompile Include="$(MSBuildThisFileDirectory)Utils\WinRTConversions.cpp" />
64
72
  <ClCompile Include="$(MSBuildThisFileDirectory)V8JSIRuntimeHolder.cpp">
65
73
  <ExcludedFromBuild Condition="'$(UseV8)' != 'true'">true</ExcludedFromBuild>
66
74
  </ClCompile>
67
- <ClCompile Include="$(MSBuildThisFileDirectory)WinRTWebSocketResource.cpp" />
68
75
  </ItemGroup>
69
76
  <ItemGroup>
70
77
  <ClInclude Include="$(MSBuildThisFileDirectory)..\include\Shared\cdebug.h" />
@@ -73,6 +80,7 @@
73
80
  <ClInclude Include="$(MSBuildThisFileDirectory)AsyncStorage\AsyncStorageManager.h" />
74
81
  <ClInclude Include="$(MSBuildThisFileDirectory)AsyncStorage\FollyDynamicConverter.h" />
75
82
  <ClInclude Include="$(MSBuildThisFileDirectory)AsyncStorage\KeyValueStorage.h" />
83
+ <ClInclude Include="$(MSBuildThisFileDirectory)CppRuntimeOptions.h" />
76
84
  <ClInclude Include="$(MSBuildThisFileDirectory)HermesSamplingProfiler.h" />
77
85
  <ClInclude Include="$(MSBuildThisFileDirectory)HermesShim.h" />
78
86
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\ByteArrayBuffer.h" />
@@ -83,7 +91,25 @@
83
91
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\NapiJsiV8RuntimeHolder.h" />
84
92
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\RuntimeHolder.h" />
85
93
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\ScriptStore.h" />
94
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\BlobModule.h" />
95
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\CxxModuleUtilities.h" />
96
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\FileReaderModule.h" />
97
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\IBlobPersistor.h" />
98
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\IHttpModuleProxy.h" />
99
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\IRequestBodyHandler.h" />
100
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\IResponseHandler.h" />
101
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\IUriHandler.h" />
102
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\IWebSocketModuleContentHandler.h" />
103
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\IWebSocketModuleProxy.h" />
104
+ <ClInclude Include="$(MSBuildThisFileDirectory)Modules\HttpModule.h" />
86
105
  <ClInclude Include="$(MSBuildThisFileDirectory)Modules\NetworkingModule.h" />
106
+ <ClInclude Include="$(MSBuildThisFileDirectory)Networking\IHttpResource.h" />
107
+ <ClInclude Include="$(MSBuildThisFileDirectory)Networking\IWebSocketResource.h" />
108
+ <ClInclude Include="$(MSBuildThisFileDirectory)Networking\OriginPolicy.h" />
109
+ <ClInclude Include="$(MSBuildThisFileDirectory)Networking\OriginPolicyHttpFilter.h" />
110
+ <ClInclude Include="$(MSBuildThisFileDirectory)Networking\WinRTHttpResource.h" />
111
+ <ClInclude Include="$(MSBuildThisFileDirectory)Networking\WinRTTypes.h" />
112
+ <ClInclude Include="$(MSBuildThisFileDirectory)Networking\WinRTWebSocketResource.h" />
87
113
  <ClInclude Include="$(MSBuildThisFileDirectory)RuntimeOptions.h" />
88
114
  <ClInclude Include="$(MSBuildThisFileDirectory)Modules\AsyncStorageModuleWin32.h" />
89
115
  <ClInclude Include="$(MSBuildThisFileDirectory)AsyncStorage\StorageFileIO.h" />
@@ -98,12 +124,10 @@
98
124
  <ClInclude Include="$(MSBuildThisFileDirectory)HermesRuntimeHolder.h" />
99
125
  <ClInclude Include="$(MSBuildThisFileDirectory)InspectorPackagerConnection.h" />
100
126
  <ClInclude Include="$(MSBuildThisFileDirectory)IDevSupportManager.h" />
101
- <ClInclude Include="$(MSBuildThisFileDirectory)IHttpResource.h" />
102
127
  <ClInclude Include="$(MSBuildThisFileDirectory)InstanceManager.h" />
103
128
  <ClInclude Include="$(MSBuildThisFileDirectory)IReactRootView.h" />
104
129
  <ClInclude Include="$(MSBuildThisFileDirectory)IRedBoxHandler.h" />
105
130
  <ClInclude Include="$(MSBuildThisFileDirectory)IUIManager.h" />
106
- <ClInclude Include="$(MSBuildThisFileDirectory)IWebSocketResource.h" />
107
131
  <ClInclude Include="$(MSBuildThisFileDirectory)JSBigAbiString.h" />
108
132
  <ClInclude Include="$(MSBuildThisFileDirectory)LayoutAnimation.h" />
109
133
  <ClInclude Include="$(MSBuildThisFileDirectory)Logging.h" />
@@ -130,9 +154,9 @@
130
154
  <ClInclude Include="$(MSBuildThisFileDirectory)TurboModuleRegistry.h" />
131
155
  <ClInclude Include="$(MSBuildThisFileDirectory)Utils.h" />
132
156
  <ClInclude Include="$(MSBuildThisFileDirectory)Utils\CppWinrtLessExceptions.h" />
157
+ <ClInclude Include="$(MSBuildThisFileDirectory)Utils\WinRTConversions.h" />
133
158
  <ClInclude Include="$(MSBuildThisFileDirectory)V8JSIRuntimeHolder.h" />
134
159
  <ClInclude Include="$(MSBuildThisFileDirectory)WebSocketJSExecutorFactory.h" />
135
- <ClInclude Include="$(MSBuildThisFileDirectory)WinRTWebSocketResource.h" />
136
160
  </ItemGroup>
137
161
  <ItemGroup>
138
162
  <None Include="$(MSBuildThisFileDirectory)tracing\rnw.wprp" />