From c2329ae1e718c3f1ce7033f51acc6c3397dcd0da Mon Sep 17 00:00:00 2001 From: Momtchil Momtchev Date: Mon, 22 Aug 2022 08:40:31 +0000 Subject: [PATCH] default_bootstrap didn't make it --- src/js_native_api.h | 44 ++++++++++++++------------- src/js_native_api_v8.cc | 6 ++-- src/node_api.cc | 1 + src/node_api_internals.h | 1 + src/node_binding.h | 1 + test/embedding/napi_embedding.c | 18 ++++++++--- test/embedding/napi_modules.c | 1 + test/embedding/test-napi-embedding.js | 2 +- 8 files changed, 45 insertions(+), 29 deletions(-) diff --git a/src/js_native_api.h b/src/js_native_api.h index 08c02a65a206b9..c8d64f31003d20 100644 --- a/src/js_native_api.h +++ b/src/js_native_api.h @@ -101,33 +101,35 @@ node_api_symbol_for(napi_env env, const char* utf8description, size_t length, napi_value* result); +#endif // NAPI_EXPERIMENTAL -napi_status NAPI_CDECL napi_create_platform(int argc, - char** argv, - int exec_argc, - char** exec_argv, - char*** errors, - int thread_pool_size, - napi_platform* result); - -napi_status NAPI_CDECL napi_destroy_platform(napi_platform platform); - -napi_status NAPI_CDECL napi_create_environment(napi_platform platform, - char*** errors, - const char* main_script, - napi_env* result); +#ifdef NAPI_EMBEDDING +NAPI_EXTERN napi_status NAPI_CDECL napi_create_platform(int argc, + char** argv, + int exec_argc, + char** exec_argv, + char*** errors, + int thread_pool_size, + napi_platform* result); -const char* NAPI_CDECL napi_default_bootstrap(); +NAPI_EXTERN napi_status NAPI_CDECL +napi_destroy_platform(napi_platform platform); -napi_status NAPI_CDECL napi_run_environment(napi_env env); +NAPI_EXTERN napi_status NAPI_CDECL +napi_create_environment(napi_platform platform, + char*** errors, + const char* main_script, + napi_env* result); -napi_status NAPI_CDECL napi_await_promise(napi_env env, - napi_value promise, - napi_value* result); +NAPI_EXTERN napi_status NAPI_CDECL napi_run_environment(napi_env env); -napi_status NAPI_CDECL napi_destroy_environment(napi_env env, int* exit_code); +NAPI_EXTERN napi_status NAPI_CDECL napi_await_promise(napi_env env, + napi_value promise, + napi_value* result); -#endif // NAPI_EXPERIMENTAL +NAPI_EXTERN napi_status NAPI_CDECL napi_destroy_environment(napi_env env, + int* exit_code); +#endif // NAPI_EMBEDDING NAPI_EXTERN napi_status NAPI_CDECL napi_create_function(napi_env env, const char* utf8name, size_t length, diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index 5d13c98ed2f074..97ad1093745948 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -2,6 +2,7 @@ #include // INT_MAX #include #define NAPI_EXPERIMENTAL +#define NAPI_EMBEDDING #include "env-inl.h" #include "js_native_api.h" #include "js_native_api_v8.h" @@ -986,11 +987,12 @@ napi_status napi_await_promise(napi_env env, }); if (!r) return napi_closing; - if (promise_object->State() == v8::Promise::PromiseState::kRejected) - return napi_pending_exception; *result = v8impl::JsValueFromV8LocalValue(scope.Escape(promise_object->Result())); + if (promise_object->State() == v8::Promise::PromiseState::kRejected) + return napi_pending_exception; + return napi_ok; } diff --git a/src/node_api.cc b/src/node_api.cc index 08352b0a584b54..5fd4685fe64fce 100644 --- a/src/node_api.cc +++ b/src/node_api.cc @@ -1,6 +1,7 @@ #include "async_wrap-inl.h" #include "env-inl.h" #define NAPI_EXPERIMENTAL +#define NAPI_EMBEDDING #include "js_native_api_v8.h" #include "memory_tracker-inl.h" #include "node_api.h" diff --git a/src/node_api_internals.h b/src/node_api_internals.h index 6478520fd55da6..501ee1e837dbb1 100644 --- a/src/node_api_internals.h +++ b/src/node_api_internals.h @@ -3,6 +3,7 @@ #include "v8.h" #define NAPI_EXPERIMENTAL +#define NAPI_EMBEDDING #include "env-inl.h" #include "js_native_api_v8.h" #include "node_api.h" diff --git a/src/node_binding.h b/src/node_binding.h index 5bced5b41431dc..0158623369763b 100644 --- a/src/node_binding.h +++ b/src/node_binding.h @@ -9,6 +9,7 @@ #include "node.h" #define NAPI_EXPERIMENTAL +#define NAPI_EMBEDDING #include "node_api.h" #include "uv.h" diff --git a/test/embedding/napi_embedding.c b/test/embedding/napi_embedding.c index 3289cd2c9184f4..8a3a9bcec22557 100644 --- a/test/embedding/napi_embedding.c +++ b/test/embedding/napi_embedding.c @@ -1,4 +1,5 @@ #define NAPI_EXPERIMENTAL +#define NAPI_EMBEDDING #include #include @@ -207,14 +208,21 @@ int waitMeWithCheese(napi_env env) { goto fail; } - if (napi_await_promise(env, promise, &result) != napi_ok) { - fprintf(stderr, "Failed awaiting promise\n"); + napi_status r = napi_await_promise(env, promise, &result); + if (r != napi_ok && r != napi_pending_exception) { + fprintf(stderr, "Failed awaiting promise: %d\n", r); goto fail; } - napi_get_value_string_utf8(env, result, callback_buf, 32, &callback_buf_len); - if (strncmp( - callback_buf, "waited with cheese", strlen("waited with cheese"))) { + const char* expected; + if (r == napi_ok) + expected = "waited with cheese"; + else + expected = "waited without cheese"; + + napi_get_value_string_utf8( + env, result, callback_buf, 32, &callback_buf_len); + if (strncmp(callback_buf, expected, strlen(expected))) { fprintf(stderr, "Invalid value received: %s\n", callback_buf); goto fail; } diff --git a/test/embedding/napi_modules.c b/test/embedding/napi_modules.c index b14bf4455a72f6..0d407805d486da 100644 --- a/test/embedding/napi_modules.c +++ b/test/embedding/napi_modules.c @@ -1,6 +1,7 @@ #include #include #define NAPI_EXPERIMENTAL +#define NAPI_EMBEDDING #include #define CHECK(op, msg) \ diff --git a/test/embedding/test-napi-embedding.js b/test/embedding/test-napi-embedding.js index bcadd7cba7644b..f854f25b230719 100644 --- a/test/embedding/test-napi-embedding.js +++ b/test/embedding/test-napi-embedding.js @@ -57,7 +57,7 @@ assert.strictEqual( assert.strictEqual( child_process.spawnSync(binary, ['function waitPromise(text)' + - '{ return new Promise((res) => setTimeout(() => res(text + " with cheese"), 1)); }']) + '{ return new Promise((res) => setTimeout(() => res(text + " with cheese"), 1)); }']) .stdout.toString().trim(), 'waited with cheese');