EncodedJSValue JSC_HOST_CALL jsTestSerializedScriptValueInterfacePrototypeFunctionMultiTransferList(ExecState* exec) { JSValue thisValue = exec->hostThisValue(); if (!thisValue.inherits(&JSTestSerializedScriptValueInterface::s_info)) return throwVMTypeError(exec); JSTestSerializedScriptValueInterface* castedThis = jsCast<JSTestSerializedScriptValueInterface*>(asObject(thisValue)); ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestSerializedScriptValueInterface::s_info); TestSerializedScriptValueInterface* impl = static_cast<TestSerializedScriptValueInterface*>(castedThis->impl()); size_t argsCount = exec->argumentCount(); if (argsCount <= 0) { impl->multiTransferList(); return JSValue::encode(jsUndefined()); } RefPtr<SerializedScriptValue> first(SerializedScriptValue::create(exec, MAYBE_MISSING_PARAMETER(exec, 0, DefaultIsUndefined), 0, 0)); if (exec->hadException()) return JSValue::encode(jsUndefined()); if (argsCount <= 1) { impl->multiTransferList(first); return JSValue::encode(jsUndefined()); } Array* tx(toArray(MAYBE_MISSING_PARAMETER(exec, 1, DefaultIsUndefined))); if (exec->hadException()) return JSValue::encode(jsUndefined()); if (argsCount <= 2) { impl->multiTransferList(first, tx); return JSValue::encode(jsUndefined()); } RefPtr<SerializedScriptValue> second(SerializedScriptValue::create(exec, MAYBE_MISSING_PARAMETER(exec, 2, DefaultIsUndefined), 0, 0)); if (exec->hadException()) return JSValue::encode(jsUndefined()); if (argsCount <= 3) { impl->multiTransferList(first, tx, second); return JSValue::encode(jsUndefined()); } Array* txx(toArray(MAYBE_MISSING_PARAMETER(exec, 3, DefaultIsUndefined))); if (exec->hadException()) return JSValue::encode(jsUndefined()); impl->multiTransferList(first, tx, second, txx); return JSValue::encode(jsUndefined()); }
static v8::Handle<v8::Value> multiTransferListCallback(const v8::Arguments& args) { INC_STATS("DOM.TestSerializedScriptValueInterface.multiTransferList"); TestSerializedScriptValueInterface* imp = V8TestSerializedScriptValueInterface::toNative(args.Holder()); if (args.Length() <= 0) { imp->multiTransferList(); return v8Undefined(); } MessagePortArray messagePortArrayTx; ArrayBufferArray arrayBufferArrayTx; if (args.Length() > 1) { if (!extractTransferables(args[1], messagePortArrayTx, arrayBufferArrayTx, args.GetIsolate())) return throwTypeError("Could not extract transferables"); } bool firstDidThrow = false; RefPtr<SerializedScriptValue> first = SerializedScriptValue::create(args[0], &messagePortArrayTx, &arrayBufferArrayTx, firstDidThrow, args.GetIsolate()); if (firstDidThrow) return v8Undefined(); if (args.Length() <= 1) { imp->multiTransferList(first); return v8Undefined(); } if (args.Length() <= 2) { imp->multiTransferList(first, messagePortArrayTx); return v8Undefined(); } MessagePortArray messagePortArrayTxx; ArrayBufferArray arrayBufferArrayTxx; if (args.Length() > 3) { if (!extractTransferables(args[3], messagePortArrayTxx, arrayBufferArrayTxx, args.GetIsolate())) return throwTypeError("Could not extract transferables"); } bool secondDidThrow = false; RefPtr<SerializedScriptValue> second = SerializedScriptValue::create(args[2], &messagePortArrayTxx, &arrayBufferArrayTxx, secondDidThrow, args.GetIsolate()); if (secondDidThrow) return v8Undefined(); if (args.Length() <= 3) { imp->multiTransferList(first, messagePortArrayTx, second); return v8Undefined(); } imp->multiTransferList(first, messagePortArrayTx, second, messagePortArrayTxx); return v8Undefined(); }