static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info) { TestInterface2* impl = V8TestInterface2::toImpl(info.Holder()); ExceptionState exceptionState(ExceptionState::IndexedGetterContext, "TestInterface2", info.Holder(), info.GetIsolate()); TestInterfaceEmpty* result = impl->item(index, exceptionState); if (exceptionState.throwIfNeeded()) return; if (!result) return; v8SetReturnValueFast(info, result, impl); }
static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info) { ExceptionState exceptionState(info.GetIsolate(), ExceptionState::IndexedGetterContext, "TestInterface2"); TestInterface2* impl = V8TestInterface2::toImpl(info.Holder()); // We assume that all the implementations support length() method, although // the spec doesn't require that length() must exist. It's okay that // the interface does not have length attribute as long as the // implementation supports length() member function. if (index >= impl->length()) return; // Returns undefined due to out-of-range. TestInterfaceEmpty* result = impl->item(index, exceptionState); v8SetReturnValueFast(info, result, impl); }
static void itemMethod(const v8::FunctionCallbackInfo<v8::Value>& info) { ExceptionState exceptionState(info.GetIsolate(), ExceptionState::ExecutionContext, "TestInterface2", "item"); TestInterface2* impl = V8TestInterface2::toImpl(info.Holder()); if (UNLIKELY(info.Length() < 1)) { exceptionState.throwTypeError(ExceptionMessages::notEnoughArguments(1, info.Length())); return; } unsigned index; index = toUInt32(info.GetIsolate(), info[0], NormalConversion, exceptionState); if (exceptionState.hadException()) return; TestInterfaceEmpty* result = impl->item(index, exceptionState); if (exceptionState.hadException()) { return; } v8SetReturnValue(info, result); }
static void itemMethod(const v8::FunctionCallbackInfo<v8::Value>& info) { ExceptionState exceptionState(ExceptionState::ExecutionContext, "item", "TestInterface2", info.Holder(), info.GetIsolate()); if (UNLIKELY(info.Length() < 1)) { setMinimumArityTypeError(exceptionState, 1, info.Length()); exceptionState.throwIfNeeded(); return; } TestInterface2* impl = V8TestInterface2::toImpl(info.Holder()); unsigned index; { index = toUInt32(info.GetIsolate(), info[0], NormalConversion, exceptionState); if (exceptionState.throwIfNeeded()) return; } TestInterfaceEmpty* result = impl->item(index, exceptionState); if (exceptionState.hadException()) { exceptionState.throwIfNeeded(); return; } v8SetReturnValue(info, result); }