if (std::find(kExcludeList.begin(), kExcludeList.end(), key)
!= kExcludeList.end())
- return v8::Intercepted::kYes;;
+ return v8::Intercepted::kNo;;
if (!WidgetPreferenceDB::HasItem(key))
- return v8::Intercepted::kYes;
+ return v8::Intercepted::kNo;
std::string value;
if (WidgetPreferenceDB::GetItem(key, &value)) {
return v8::Intercepted::kYes;
} else {
info.GetReturnValue().SetNull();
- return v8::Intercepted::kNo;
+ return v8::Intercepted::kYes;
}
};
if (std::find(kExcludeList.begin(), kExcludeList.end(), key)
!= kExcludeList.end())
- return v8::Intercepted::kYes;
+ return v8::Intercepted::kNo;
v8::Local<v8::Value> oldvalue = v8::Null(isolate);
std::string oldvaluestr;
return v8::Intercepted::kYes;
} else {
info.GetReturnValue().Set(false);
- return v8::Intercepted::kNo;
+ return v8::Intercepted::kYes;
}
};
void AccessorGetter(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
auto holder = LoadExtension(isolate, info.Data());
- if (holder.IsEmpty())
+ if (holder.IsEmpty() || !info.Data()->IsArray())
return;
v8::Local<v8::Context> context = isolate->GetCurrentContext();
+
+ v8::Local<v8::Array> data = info.Data().As<v8::Array>();
+ v8::Local<v8::Value> property =
+ data->Get(context, 1).FromMaybe(v8::Local<v8::Value>());
v8::Local<v8::Value> value =
- holder.As<v8::Object>()->Get(context, info[1])
+ holder.As<v8::Object>()
+ ->Get(context, property)
.FromMaybe(v8::Local<v8::Value>::Cast(v8::Undefined(isolate)));
info.GetReturnValue().Set(value);
}
void AccessorSetter(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
auto holder = LoadExtension(isolate, info.Data());
- if (holder.IsEmpty())
+ if (holder.IsEmpty() || !info.Data()->IsArray())
return;
v8::Local<v8::Context> context = isolate->GetCurrentContext();
+
+ v8::Local<v8::Array> data = info.Data().As<v8::Array>();
+ v8::Local<v8::Value> property =
+ data->Get(context, 1).FromMaybe(v8::Local<v8::Value>());
+ v8::Local<v8::Value> value =
+ data->Get(context, 0).FromMaybe(v8::Local<v8::Value>());
if (!holder.As<v8::Object>()
- ->Set(context, info[1], info[0])
+ ->Set(context, property, value)
.FromMaybe(false)) {
LOG(ERROR) << "Fail to set property : "
- << *v8::String::Utf8Value(isolate, info[1]);
+ << *v8::String::Utf8Value(isolate, property);
}
}