Hello,

I need some help with some JS bindings code. I am implementing
CountQueuingStrategy [1], which is an object containing two properties,
one of them a function. That strategy is passed to another
ReadableStream object [2] and as you can see at step 8, the size method
is extracted from the strategy and kept inside the stream for later
use. That use happens at [3], step 5.b.i, when the spec says that we
have to pass undefined as this (and we do).

[1] https://streams.spec.whatwg.org/#cqs-class
[2] https://streams.spec.whatwg.org/#rs-constructor
[3] https://streams.spec.whatwg.org/#enqueue-in-readable-stream

The problem comes when invoking that method at the generated bindings:

EncodedJSValue JSC_HOST_CALL
jsCountQueuingStrategyPrototypeFunctionSize(ExecState* exec)
{
    JSValue thisValue = exec->thisValue();
    JSCountQueuingStrategy* castedThis =
jsDynamicCast<JSCountQueuingStrategy*>(thisValue);
    if (UNLIKELY(!castedThis))
        return throwThisTypeError(*exec, "CountQueuingStrategy",
"size");
    ASSERT_GC_OBJECT_INHERITS(castedThis,
JSCountQueuingStrategy::info());
    return JSValue::encode(castedThis->size(exec));
}

The problem is that it checks that "this" casts to the class and of
course it fails because the spec says it has to be undefined. I haven't
found any way to overcome this, even making the method custom.

Any ideas here?

Thanks in advance and best regards.

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to