@@ -17,9 +17,9 @@ namespace node {
17
17
18
18
using v8::Context;
19
19
using v8::FunctionCallbackInfo;
20
+ using v8::IntegrityLevel;
20
21
using v8::Local;
21
22
using v8::MaybeLocal;
22
- using v8::NewStringType;
23
23
using v8::Object;
24
24
using v8::String;
25
25
using v8::Value;
@@ -32,10 +32,9 @@ namespace {
32
32
// permission.has('fs.in')
33
33
static void Has (const FunctionCallbackInfo<Value>& args) {
34
34
Environment* env = Environment::GetCurrent (args);
35
- v8::Isolate* isolate = env->isolate ();
36
35
CHECK (args[0 ]->IsString ());
37
36
38
- String::Utf8Value utf8_deny_scope (isolate, args[0 ]);
37
+ String::Utf8Value utf8_deny_scope (env-> isolate () , args[0 ]);
39
38
if (*utf8_deny_scope == nullptr ) {
40
39
return ;
41
40
}
@@ -47,7 +46,7 @@ static void Has(const FunctionCallbackInfo<Value>& args) {
47
46
}
48
47
49
48
if (args.Length () > 1 && !args[1 ]->IsUndefined ()) {
50
- String::Utf8Value utf8_arg (isolate, args[1 ]);
49
+ String::Utf8Value utf8_arg (env-> isolate () , args[1 ]);
51
50
if (*utf8_arg == nullptr ) {
52
51
return ;
53
52
}
@@ -111,14 +110,12 @@ MaybeLocal<Value> CreateAccessDeniedError(Environment* env,
111
110
PermissionScope perm,
112
111
const std::string_view& res) {
113
112
Local<Object> err = ERR_ACCESS_DENIED (env->isolate ());
114
- Local<String> perm_string;
115
- Local<String> resource_string;
116
- if (!String::NewFromUtf8 (env->isolate (),
117
- Permission::PermissionToString (perm),
118
- NewStringType::kNormal )
113
+ Local<Value> perm_string;
114
+ Local<Value> resource_string;
115
+ std::string_view perm_str = Permission::PermissionToString (perm);
116
+ if (!ToV8Value (env->context (), perm_str, env->isolate ())
119
117
.ToLocal (&perm_string) ||
120
- !String::NewFromUtf8 (
121
- env->isolate (), std::string (res).c_str (), NewStringType::kNormal )
118
+ !ToV8Value (env->context (), res, env->isolate ())
122
119
.ToLocal (&resource_string) ||
123
120
err->Set (env->context (), env->permission_string (), perm_string)
124
121
.IsNothing () ||
@@ -132,18 +129,24 @@ MaybeLocal<Value> CreateAccessDeniedError(Environment* env,
132
129
void Permission::ThrowAccessDenied (Environment* env,
133
130
PermissionScope perm,
134
131
const std::string_view& res) {
135
- MaybeLocal<Value> err = CreateAccessDeniedError (env, perm, res);
136
- if (err.IsEmpty ()) return ;
137
- env->isolate ()->ThrowException (err.ToLocalChecked ());
132
+ Local<Value> err;
133
+ if (CreateAccessDeniedError (env, perm, res).ToLocal (&err)) {
134
+ env->isolate ()->ThrowException (err);
135
+ }
136
+ // If ToLocal returned false, then v8 will have scheduled a
137
+ // superseding error to be thrown.
138
138
}
139
139
140
140
void Permission::AsyncThrowAccessDenied (Environment* env,
141
141
fs::FSReqBase* req_wrap,
142
142
PermissionScope perm,
143
143
const std::string_view& res) {
144
- MaybeLocal<Value> err = CreateAccessDeniedError (env, perm, res);
145
- if (err.IsEmpty ()) return ;
146
- return req_wrap->Reject (err.ToLocalChecked ());
144
+ Local<Value> err;
145
+ if (CreateAccessDeniedError (env, perm, res).ToLocal (&err)) {
146
+ return req_wrap->Reject (err);
147
+ }
148
+ // If ToLocal returned false, then v8 will have scheduled a
149
+ // superseding error to be thrown.
147
150
}
148
151
149
152
void Permission::EnablePermissions () {
@@ -167,7 +170,7 @@ void Initialize(Local<Object> target,
167
170
void * priv) {
168
171
SetMethodNoSideEffect (context, target, " has" , Has);
169
172
170
- target->SetIntegrityLevel (context, v8:: IntegrityLevel::kFrozen ).FromJust ();
173
+ target->SetIntegrityLevel (context, IntegrityLevel::kFrozen ).FromJust ();
171
174
}
172
175
173
176
void RegisterExternalReferences (ExternalReferenceRegistry* registry) {
0 commit comments