refactor_expose_hostimportmoduledynamically_and.patch 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 b8b20d8c8340c63bd3039a0683446ef1eb4fdf0d..a0781bd3817c2e0d4be37835f0c02063b2e548f1 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. @@ -606,7 +606,9 @@ bool JavaScriptCompileHintsMagicEnabledCallback(
  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. @@ -672,7 +674,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. ScriptState* script_state = ScriptState::From(context);
  29. @@ -699,6 +701,8 @@ void HostGetImportMetaProperties(v8::Local<v8::Context> context,
  30. meta->CreateDataProperty(context, resolve_key, resolve_value).ToChecked();
  31. }
  32. +namespace {
  33. +
  34. void InitializeV8Common(v8::Isolate* isolate) {
  35. // Set up garbage collection before setting up anything else as V8 may trigger
  36. // GCs during Blink setup.
  37. @@ -718,9 +722,9 @@ void InitializeV8Common(v8::Isolate* isolate) {
  38. SharedArrayBufferConstructorEnabledCallback);
  39. isolate->SetJavaScriptCompileHintsMagicEnabledCallback(
  40. JavaScriptCompileHintsMagicEnabledCallback);
  41. - isolate->SetHostImportModuleDynamicallyCallback(HostImportModuleDynamically);
  42. + isolate->SetHostImportModuleDynamicallyCallback(V8Initializer::HostImportModuleDynamically);
  43. isolate->SetHostInitializeImportMetaObjectCallback(
  44. - HostGetImportMetaProperties);
  45. + V8Initializer::HostGetImportMetaProperties);
  46. isolate->SetMetricsRecorder(std::make_shared<V8MetricsRecorder>(isolate));
  47. V8ContextSnapshot::EnsureInterfaceTemplates(isolate);
  48. diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.h b/third_party/blink/renderer/bindings/core/v8/v8_initializer.h
  49. index 30a36cf16d4a8f4692ec6a13be1217212390172a..1924f7cef7f5a1f7523c00071639a6c72f9cca70 100644
  50. --- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.h
  51. +++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.h
  52. @@ -77,6 +77,17 @@ class CORE_EXPORT V8Initializer {
  53. v8::Local<v8::Context> context,
  54. v8::Local<v8::String> source);
  55. + static v8::MaybeLocal<v8::Promise> HostImportModuleDynamically(
  56. + v8::Local<v8::Context> context,
  57. + v8::Local<v8::Data> v8_host_defined_options,
  58. + v8::Local<v8::Value> v8_referrer_resource_url,
  59. + v8::Local<v8::String> v8_specifier,
  60. + v8::Local<v8::FixedArray> v8_import_assertions);
  61. +
  62. + static void HostGetImportMetaProperties(v8::Local<v8::Context> context,
  63. + v8::Local<v8::Module> module,
  64. + v8::Local<v8::Object> meta);
  65. +
  66. static void WasmAsyncResolvePromiseCallback(
  67. v8::Isolate* isolate,
  68. v8::Local<v8::Context> context,