Files
electron/patches/node/src_do_not_use_soon-to-be-deprecated_v8_api.patch
electron-roller[bot] ea8f43f9b9 chore: bump node to v22.20.0 (main) (#48383)
* chore: bump node in DEPS to v22.20.0

* chore: fixup patches

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2025-10-08 15:19:08 +02:00

128 lines
4.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Igor Sheludko <ishell@chromium.org>
Date: Fri, 19 Apr 2024 12:29:53 +0200
Subject: src: do not use soon-to-be-deprecated V8 API
V8 announced deprecation of the following methods:
- v8::Object::SetAccessor(...) in favor of
v8::Object::SetNativeDataProperty(...),
- v8::ObjectTemplate::SetNativeDataProperty(...) with AccessControl
parameter in favor of
v8::ObjectTemplate::SetNativeDataProperty(...) without AccessControl
parameter.
See https://crrev.com/c/5006387.
This slightly changes behavior of the following properties:
- process.debugPort (for worker processes),
- process.title (for worker processes),
- process.ppid.
The difference is that they will now behave like a regular writable
JavaScript data properties - in case setter callback is not provided
they will be be reconfigured from a native data property (the one
that calls C++ callbacks upon get/set operations) to a real data
property (so subsequent reads will no longer trigger C++ getter
callbacks).
PR-URL: https://github.com/nodejs/node/pull/53174
Reviewed-By: Michael Dawson <midawson@redhat.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
diff --git a/src/node_process_object.cc b/src/node_process_object.cc
index 2e0d180d249c6925c761cb673a4a396905cc971c..5bf854723040859f841608f40ac43ea3d4a44b1e 100644
--- a/src/node_process_object.cc
+++ b/src/node_process_object.cc
@@ -13,7 +13,6 @@
namespace node {
using v8::Context;
-using v8::DEFAULT;
using v8::EscapableHandleScope;
using v8::Function;
using v8::FunctionCallbackInfo;
@@ -168,13 +167,12 @@ void PatchProcessObject(const FunctionCallbackInfo<Value>& args) {
// process.title
CHECK(process
- ->SetAccessor(
+ ->SetNativeDataProperty(
context,
FIXED_ONE_BYTE_STRING(isolate, "title"),
ProcessTitleGetter,
env->owns_process_state() ? ProcessTitleSetter : nullptr,
Local<Value>(),
- DEFAULT,
None,
SideEffectType::kHasNoSideEffect)
.FromJust());
@@ -193,9 +191,15 @@ void PatchProcessObject(const FunctionCallbackInfo<Value>& args) {
READONLY_PROPERTY(process, "pid",
Integer::New(isolate, uv_os_getpid()));
- CHECK(process->SetAccessor(context,
- FIXED_ONE_BYTE_STRING(isolate, "ppid"),
- GetParentProcessId).FromJust());
+ CHECK(process
+ ->SetNativeDataProperty(context,
+ FIXED_ONE_BYTE_STRING(isolate, "ppid"),
+ GetParentProcessId,
+ nullptr,
+ Local<Value>(),
+ None,
+ SideEffectType::kHasNoSideEffect)
+ .FromJust());
// --security-revert flags
#define V(code, _, __) \
@@ -220,12 +224,15 @@ void PatchProcessObject(const FunctionCallbackInfo<Value>& args) {
// process.debugPort
CHECK(process
- ->SetAccessor(context,
- FIXED_ONE_BYTE_STRING(isolate, "debugPort"),
- DebugPortGetter,
- env->owns_process_state() ? DebugPortSetter : nullptr,
- Local<Value>())
- .FromJust());
+ ->SetNativeDataProperty(
+ context,
+ FIXED_ONE_BYTE_STRING(isolate, "debugPort"),
+ DebugPortGetter,
+ env->owns_process_state() ? DebugPortSetter : nullptr,
+ Local<Value>(),
+ None,
+ SideEffectType::kHasNoSideEffect)
+ .FromJust());
// process.versions
Local<Object> versions = Object::New(isolate);
diff --git a/test/parallel/test-worker-unsupported-things.js b/test/parallel/test-worker-unsupported-things.js
index 18c1617c3cde5ef12f9c97828840c39e0be3dc2c..95d93d24dec9f1944091a97574f01c94d617cc49 100644
--- a/test/parallel/test-worker-unsupported-things.js
+++ b/test/parallel/test-worker-unsupported-things.js
@@ -14,14 +14,16 @@ if (!process.env.HAS_STARTED_WORKER) {
} else {
{
const before = process.title;
- process.title += ' in worker';
- assert.strictEqual(process.title, before);
+ const after = before + ' in worker';
+ process.title = after;
+ assert.strictEqual(process.title, after);
}
{
const before = process.debugPort;
- process.debugPort++;
- assert.strictEqual(process.debugPort, before);
+ const after = before + 1;
+ process.debugPort = after;
+ assert.strictEqual(process.debugPort, after);
}
{