static void var_set(v8::Local<v8::String>, v8::Local<v8::Value> value, v8::PropertyCallbackInfo<void> const& info) { v8::Isolate* isolate = info.GetIsolate(); Variable* var = detail::get_external_data<Variable*>(info.Data()); *var = v8pp::from_v8<Variable>(isolate, value); }
static void var_get(v8::Local<v8::String>, v8::PropertyCallbackInfo<v8::Value> const& info) { v8::Isolate* isolate = info.GetIsolate(); Variable* var = detail::get_external_data<Variable*>(info.Data()); info.GetReturnValue().Set(to_v8(isolate, *var)); }
static void TestInterfaceNamedConstructorConstructorGetter(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) { v8::Handle<v8::Value> data = info.Data(); ASSERT(data->IsExternal()); V8PerContextData* perContextData = V8PerContextData::from(info.Holder()->CreationContext()); if (!perContextData) return; v8SetReturnValue(info, perContextData->constructorForType(WrapperTypeInfo::unwrap(data))); }
static void FXJSE_V8_GenericNamedPropertyEnumeratorCallback( const v8::PropertyCallbackInfo<v8::Array>& info) { const FXJSE_CLASS* lpClass = static_cast<FXJSE_CLASS*>(info.Data().As<v8::External>()->Value()); v8::Isolate* pIsolate = info.GetIsolate(); v8::Local<v8::Array> newArray = v8::Array::New(pIsolate, lpClass->propNum); for (int i = 0; i < lpClass->propNum; i++) { newArray->Set( i, v8::String::NewFromUtf8(pIsolate, lpClass->properties[i].name)); } info.GetReturnValue().Set(newArray); }
static void TestTypedefsConstructorAttributeSetterCallback(v8::Local<v8::Name>, v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) { TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMSetter"); do { v8::Local<v8::Value> data = info.Data(); ASSERT(data->IsExternal()); V8PerContextData* perContextData = V8PerContextData::from(info.Holder()->CreationContext()); if (!perContextData) break; const WrapperTypeInfo* wrapperTypeInfo = WrapperTypeInfo::unwrap(data); if (!wrapperTypeInfo) break; TestTypedefsForceSetAttributeOnThis(v8String(info.GetIsolate(), wrapperTypeInfo->interfaceName), v8Value, info); } while (false); // do ... while (false) just for use of break TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); }
static void FXJSE_V8_GenericNamedPropertyGetterCallback( v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value>& info) { v8::Local<v8::Object> thisObject = info.This(); const FXJSE_CLASS* lpClass = static_cast<FXJSE_CLASS*>(info.Data().As<v8::External>()->Value()); v8::String::Utf8Value szPropName(property); CFX_ByteStringC szFxPropName(*szPropName, szPropName.length()); CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate()); lpThisValue->ForceSetValue(thisObject); CFXJSE_Value* lpNewValue = CFXJSE_Value::Create(info.GetIsolate()); FXJSE_DynPropGetterAdapter( lpClass, reinterpret_cast<FXJSE_HOBJECT>(lpThisValue), szFxPropName, reinterpret_cast<FXJSE_HVALUE>(lpNewValue)); info.GetReturnValue().Set(lpNewValue->DirectGetValue()); delete lpThisValue; lpThisValue = nullptr; }
static void FXJSE_V8_GenericNamedPropertyQueryCallback( v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Integer>& info) { v8::Local<v8::Object> thisObject = info.This(); const FXJSE_CLASS* lpClass = static_cast<FXJSE_CLASS*>(info.Data().As<v8::External>()->Value()); v8::Isolate* pIsolate = info.GetIsolate(); v8::HandleScope scope(pIsolate); v8::String::Utf8Value szPropName(property); CFX_ByteStringC szFxPropName(*szPropName, szPropName.length()); CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate()); lpThisValue->ForceSetValue(thisObject); if (FXJSE_DynPropQueryAdapter(lpClass, reinterpret_cast<FXJSE_HOBJECT>(lpThisValue), szFxPropName)) { info.GetReturnValue().Set(v8::DontDelete); } else { const int32_t iV8Absent = 64; info.GetReturnValue().Set(iV8Absent); } delete lpThisValue; lpThisValue = nullptr; }
static void domExceptionStackSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<void>& info) { ASSERT(info.Data()->IsObject()); info.Data()->ToObject()->Set(v8::String::NewSymbol("stack"), value); }
static void domExceptionStackSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<void>& info) { ASSERT(info.Data()->IsObject()); info.Data()->ToObject()->Set(v8AtomicString(info.GetIsolate(), "stack"), value); }
static void domExceptionStackGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info) { ASSERT(info.Data()->IsObject()); v8SetReturnValue(info, info.Data()->ToObject()->Get(v8AtomicString(info.GetIsolate(), "stack"))); }