refactor_expose_hostimportmoduledynamically_and.patch 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
  2. From: Samuel Attard <[email protected]>
  3. Date: Wed, 8 Mar 2023 13:04:21 -0800
  4. Subject: refactor: expose HostImportModuleDynamically and
  5. HostGetImportMetaProperties to embedders
  6. This is so that Electron can blend Blink's and Node's implementations of these isolate handlers.
  7. diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
  8. index c17479e167de17b4ed02be7934a7c3ac7a020ed1..a1d5426f62f24395a7304dce7b040755e7f7b941 100644
  9. --- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
  10. +++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
  11. @@ -609,7 +609,9 @@ bool WasmJSPromiseIntegrationEnabledCallback(v8::Local<v8::Context> context) {
  12. execution_context);
  13. }
  14. -v8::MaybeLocal<v8::Promise> HostImportModuleDynamically(
  15. +}
  16. +
  17. +v8::MaybeLocal<v8::Promise> V8Initializer::HostImportModuleDynamically(
  18. v8::Local<v8::Context> context,
  19. v8::Local<v8::Data> v8_host_defined_options,
  20. v8::Local<v8::Value> v8_referrer_resource_url,
  21. @@ -687,7 +689,7 @@ v8::MaybeLocal<v8::Promise> HostImportModuleDynamically(
  22. }
  23. // https://html.spec.whatwg.org/C/#hostgetimportmetaproperties
  24. -void HostGetImportMetaProperties(v8::Local<v8::Context> context,
  25. +void V8Initializer::HostGetImportMetaProperties(v8::Local<v8::Context> context,
  26. v8::Local<v8::Module> module,
  27. v8::Local<v8::Object> meta) {
  28. v8::Isolate* isolate = context->GetIsolate();
  29. @@ -730,9 +732,6 @@ std::ostream& operator<<(std::ostream& os, const PrintV8OOM& oom_details) {
  30. return os;
  31. }
  32. -} // namespace
  33. -
  34. -// static
  35. void V8Initializer::InitializeV8Common(v8::Isolate* isolate) {
  36. // Set up garbage collection before setting up anything else as V8 may trigger
  37. // GCs during Blink setup.
  38. @@ -752,9 +751,9 @@ void V8Initializer::InitializeV8Common(v8::Isolate* isolate) {
  39. isolate->SetWasmJSPIEnabledCallback(WasmJSPromiseIntegrationEnabledCallback);
  40. isolate->SetSharedArrayBufferConstructorEnabledCallback(
  41. SharedArrayBufferConstructorEnabledCallback);
  42. - isolate->SetHostImportModuleDynamicallyCallback(HostImportModuleDynamically);
  43. + isolate->SetHostImportModuleDynamicallyCallback(V8Initializer::HostImportModuleDynamically);
  44. isolate->SetHostInitializeImportMetaObjectCallback(
  45. - HostGetImportMetaProperties);
  46. + V8Initializer::HostGetImportMetaProperties);
  47. isolate->SetMetricsRecorder(std::make_shared<V8MetricsRecorder>(isolate));
  48. #if BUILDFLAG(IS_WIN)
  49. diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.h b/third_party/blink/renderer/bindings/core/v8/v8_initializer.h
  50. index 2e0fd8cdef733677f8e1d32b3d8e0c635e0a5052..1df4517f9b5926c1dc5333aa6fc9cc1290256c70 100644
  51. --- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.h
  52. +++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.h
  53. @@ -84,6 +84,17 @@ class CORE_EXPORT V8Initializer {
  54. v8::Local<v8::Value> data);
  55. static void PromiseRejectHandlerInMainThread(v8::PromiseRejectMessage data);
  56. + static v8::MaybeLocal<v8::Promise> HostImportModuleDynamically(
  57. + v8::Local<v8::Context> context,
  58. + v8::Local<v8::Data> v8_host_defined_options,
  59. + v8::Local<v8::Value> v8_referrer_resource_url,
  60. + v8::Local<v8::String> v8_specifier,
  61. + v8::Local<v8::FixedArray> v8_import_assertions);
  62. +
  63. + static void HostGetImportMetaProperties(v8::Local<v8::Context> context,
  64. + v8::Local<v8::Module> module,
  65. + v8::Local<v8::Object> meta);
  66. +
  67. static void WasmAsyncResolvePromiseCallback(
  68. v8::Isolate* isolate,
  69. v8::Local<v8::Context> context,