|
Lines 47-55
JSValue JSReadableStream::read(ExecState* exec)
a/Source/WebCore/bindings/js/JSReadableStreamCustom.cpp_sec1
|
| 47 |
return exec->vm().throwException(exec, error); |
47 |
return exec->vm().throwException(exec, error); |
| 48 |
} |
48 |
} |
| 49 |
|
49 |
|
|
|
50 |
static JSPromiseDeferred* getOrCreatePromiseDeferredFromObject(ExecState* exec, JSValue thisObject, JSGlobalObject* globalObject, PrivateName &name) |
| 51 |
{ |
| 52 |
JSValue slot = getInternalSlotFromObject(exec, thisObject, name); |
| 53 |
JSPromiseDeferred* promiseDeferred = jsDynamicCast<JSPromiseDeferred*>(slot); |
| 54 |
|
| 55 |
if (!promiseDeferred) { |
| 56 |
promiseDeferred = JSPromiseDeferred::create(exec, globalObject); |
| 57 |
setInternalSlotToObject(exec, thisObject, name, promiseDeferred); |
| 58 |
} |
| 59 |
return promiseDeferred; |
| 60 |
} |
| 61 |
|
| 62 |
static JSC::PrivateName readyPromiseSlot("readyPromise"); |
| 50 |
JSValue JSReadableStream::ready(ExecState* exec) const |
63 |
JSValue JSReadableStream::ready(ExecState* exec) const |
| 51 |
{ |
64 |
{ |
| 52 |
DeferredWrapper wrapper(exec, globalObject()); |
65 |
JSPromiseDeferred* promiseDeferred = getOrCreatePromiseDeferredFromObject(exec, this, globalObject(), readyPromiseSlot); |
|
|
66 |
DeferredWrapper wrapper(exec, globalObject(), promiseDeferred); |
| 53 |
auto successCallback = [wrapper](RefPtr<ReadableStream> stream) mutable { |
67 |
auto successCallback = [wrapper](RefPtr<ReadableStream> stream) mutable { |
| 54 |
wrapper.resolve(stream.get()); |
68 |
wrapper.resolve(stream.get()); |
| 55 |
}; |
69 |
}; |
|
Lines 58-66
JSValue JSReadableStream::ready(ExecState* exec) const
a/Source/WebCore/bindings/js/JSReadableStreamCustom.cpp_sec2
|
| 58 |
return wrapper.promise(); |
72 |
return wrapper.promise(); |
| 59 |
} |
73 |
} |
| 60 |
|
74 |
|
|
|
75 |
static JSC::PrivateName closedPromiseSlot("closedPromise"); |
| 61 |
JSValue JSReadableStream::closed(ExecState* exec) const |
76 |
JSValue JSReadableStream::closed(ExecState* exec) const |
| 62 |
{ |
77 |
{ |
| 63 |
DeferredWrapper wrapper(exec, globalObject()); |
78 |
JSPromiseDeferred* promiseDeferred = getOrCreatePromiseDeferredFromObject(exec, this, globalObject(), closedPromiseSlot); |
|
|
79 |
DeferredWrapper wrapper(exec, globalObject(), promiseDeferred); |
| 64 |
auto successCallback = [wrapper](RefPtr<ReadableStream> stream) mutable { |
80 |
auto successCallback = [wrapper](RefPtr<ReadableStream> stream) mutable { |
| 65 |
wrapper.resolve(stream.get()); |
81 |
wrapper.resolve(stream.get()); |
| 66 |
}; |
82 |
}; |