diff options
Diffstat (limited to 'deps/v8/test/cctest/test-api-interceptors.cc')
-rw-r--r-- | deps/v8/test/cctest/test-api-interceptors.cc | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/deps/v8/test/cctest/test-api-interceptors.cc b/deps/v8/test/cctest/test-api-interceptors.cc index 63f3bc42fb..fd811abffe 100644 --- a/deps/v8/test/cctest/test-api-interceptors.cc +++ b/deps/v8/test/cctest/test-api-interceptors.cc @@ -98,10 +98,10 @@ void SymbolAccessorSetter(Local<Name> name, Local<Value> value, SimpleAccessorSetter(Local<String>::Cast(sym->Name()), value, info); } -void StringInterceptorGetter( - Local<String> name, - const v8::PropertyCallbackInfo<v8::Value>& - info) { // Intercept names that start with 'interceptor_'. +void InterceptorGetter(Local<Name> generic_name, + const v8::PropertyCallbackInfo<v8::Value>& info) { + if (generic_name->IsSymbol()) return; + Local<String> name = Local<String>::Cast(generic_name); String::Utf8Value utf8(info.GetIsolate(), name); char* name_str = *utf8; char prefix[] = "interceptor_"; @@ -117,9 +117,10 @@ void StringInterceptorGetter( .ToLocalChecked()); } - -void StringInterceptorSetter(Local<String> name, Local<Value> value, - const v8::PropertyCallbackInfo<v8::Value>& info) { +void InterceptorSetter(Local<Name> generic_name, Local<Value> value, + const v8::PropertyCallbackInfo<v8::Value>& info) { + if (generic_name->IsSymbol()) return; + Local<String> name = Local<String>::Cast(generic_name); // Intercept accesses that set certain integer values, for which the name does // not start with 'accessor_'. String::Utf8Value utf8(info.GetIsolate(), name); @@ -140,18 +141,6 @@ void StringInterceptorSetter(Local<String> name, Local<Value> value, } } -void InterceptorGetter(Local<Name> generic_name, - const v8::PropertyCallbackInfo<v8::Value>& info) { - if (generic_name->IsSymbol()) return; - StringInterceptorGetter(Local<String>::Cast(generic_name), info); -} - -void InterceptorSetter(Local<Name> generic_name, Local<Value> value, - const v8::PropertyCallbackInfo<v8::Value>& info) { - if (generic_name->IsSymbol()) return; - StringInterceptorSetter(Local<String>::Cast(generic_name), value, info); -} - void GenericInterceptorGetter(Local<Name> generic_name, const v8::PropertyCallbackInfo<v8::Value>& info) { Local<String> str; @@ -198,19 +187,20 @@ void AddAccessor(Local<FunctionTemplate> templ, Local<String> name, templ->PrototypeTemplate()->SetAccessor(name, getter, setter); } -void AddInterceptor(Local<FunctionTemplate> templ, - v8::NamedPropertyGetterCallback getter, - v8::NamedPropertySetterCallback setter) { - templ->InstanceTemplate()->SetNamedPropertyHandler(getter, setter); -} - - void AddAccessor(Local<FunctionTemplate> templ, Local<Name> name, v8::AccessorNameGetterCallback getter, v8::AccessorNameSetterCallback setter) { templ->PrototypeTemplate()->SetAccessor(name, getter, setter); } +void AddStringOnlyInterceptor(Local<FunctionTemplate> templ, + v8::GenericNamedPropertyGetterCallback getter, + v8::GenericNamedPropertySetterCallback setter) { + templ->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration( + getter, setter, nullptr, nullptr, nullptr, Local<v8::Value>(), + v8::PropertyHandlerFlags::kOnlyInterceptStrings)); +} + void AddInterceptor(Local<FunctionTemplate> templ, v8::GenericNamedPropertyGetterCallback getter, v8::GenericNamedPropertySetterCallback setter) { @@ -1517,7 +1507,7 @@ THREADED_TEST(LegacyInterceptorDoesNotSeeSymbols) { child->Inherit(parent); AddAccessor(parent, age, SymbolAccessorGetter, SymbolAccessorSetter); - AddInterceptor(child, StringInterceptorGetter, StringInterceptorSetter); + AddStringOnlyInterceptor(child, InterceptorGetter, InterceptorSetter); env->Global() ->Set(env.local(), v8_str("Child"), @@ -4387,7 +4377,7 @@ THREADED_TEST(Regress625155) { CompileRun( "Number.prototype.__proto__ = new Bug;" "var x;" - "x = 0xdead;" + "x = 0xDEAD;" "x.boom = 0;" "x = 's';" "x.boom = 0;" |