Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: include/v8.h

Issue 2703563002: [ESNext] Implement DynamicImportCall (Closed)
Patch Set: add test + comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/api.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/v8.h
diff --git a/include/v8.h b/include/v8.h
index 38584e8af06efdd848ae92d5c8b8ad412108f528..9764db01548940c16eaaf5ffc7ce887a024252ed 100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -1071,6 +1071,19 @@ class V8_EXPORT Module {
* Returns the completion value.
*/
V8_WARN_UNUSED_RESULT MaybeLocal<Value> Evaluate(Local<Context> context);
+
+ /**
+ * Resolves the promise with the namespace object of the given
+ * module.
+ */
+ static V8_WARN_UNUSED_RESULT bool FinishDynamicImportSuccess(
+ Local<Context> context, Local<Promise> promise, Local<Module> module);
+
+ /**
+ * Rejects the promise with the given exception.
+ */
+ static V8_WARN_UNUSED_RESULT bool FinishDynamicImportFailure(
+ Local<Context> context, Local<Promise> promise, Local<Value> exception);
};
/**
@@ -5841,6 +5854,33 @@ typedef void (*CallCompletedCallback)(Isolate*);
typedef void (*DeprecatedCallCompletedCallback)();
/**
+ * HostImportDynamicallyCallback is called when we require the
+ * embedder to load a module. This is used as part of the dynamic
+ * import syntax. The behavior of this callback is not specified in
+ * EcmaScript.
+ *
+ * The referrer is the name of the file which calls the dynamic
+ * import. The referrer can be used to resolve the module location.
+ *
+ * The specifier is the name of the module that should be imported.
+ *
+ * The promise object is the promise associated with the import
+ * call. This is either resolved successfully with a module or
+ * rejected with an exception.
+ *
+ * The promise object is opaque to the embedder. The embedder should
+ * not resolve or reject the promise. Instead, the embedder should
+ * call FinishDynamicImportSuccess on successful module load or call
+ * FinishDynamicImportFailure on exception. These two functions will
+ * resolve or reject the promise.
+ *
+ */
+typedef void (*HostImportModuleDynamicallyCallback)(Isolate* isolate,
+ Local<String> referrer,
jochen (gone - plz use gerrit) 2017/03/22 10:12:28 why not Local<Module> ?
+ Local<String> specifier,
+ Local<Promise> promise);
+
+/**
* PromiseHook with type kInit is called when a new promise is
* created. When a new promise is created as part of the chain in the
* case of Promise.then or in the intermediate promises created by
@@ -6393,7 +6433,8 @@ class V8_EXPORT Isolate {
add_histogram_sample_callback(nullptr),
array_buffer_allocator(nullptr),
external_references(nullptr),
- allow_atomics_wait(true) {}
+ allow_atomics_wait(true),
+ host_import_module_dynamically_callback_(nullptr) {}
/**
* The optional entry_hook allows the host application to provide the
@@ -6456,6 +6497,16 @@ class V8_EXPORT Isolate {
* this isolate.
*/
bool allow_atomics_wait;
+
+ /**
+ * This is an unfinished experimental feature, and is only exposed
+ * here for internal testing purposes. DO NOT USE.
+ *
+ * This specifies the callback called by the upcoming dynamic
+ * import() language feature to load modules.
+ */
+ HostImportModuleDynamicallyCallback
+ host_import_module_dynamically_callback_;
};
« no previous file with comments | « no previous file | src/api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698