Chromium Code Reviews| Index: third_party/WebKit/Source/core/streams/ReadableStreamOperations.cpp |
| diff --git a/third_party/WebKit/Source/core/streams/ReadableStreamOperations.cpp b/third_party/WebKit/Source/core/streams/ReadableStreamOperations.cpp |
| index 91f1786f9de8f5ebfa4c739f64d055b116823428..d2621c1dab97508f473c5c0f9b24a243945cfbe1 100644 |
| --- a/third_party/WebKit/Source/core/streams/ReadableStreamOperations.cpp |
| +++ b/third_party/WebKit/Source/core/streams/ReadableStreamOperations.cpp |
| @@ -116,4 +116,24 @@ ScriptPromise ReadableStreamOperations::defaultReaderRead(ScriptState* scriptSta |
| return ScriptPromise::cast(scriptState, V8ScriptRunner::callExtraOrCrash(scriptState, "ReadableStreamDefaultReaderRead", args)); |
| } |
| +void ReadableStreamOperations::tee(ScriptState* scriptState, ScriptValue stream, ScriptValue* newStream1, ScriptValue* newStream2) |
| +{ |
| + ASSERT(isReadableStream(scriptState, stream)); |
| + ASSERT(!isLocked(scriptState, stream)); |
| + |
| + v8::TryCatch block(scriptState->isolate()); |
| + v8::Local<v8::Value> args[] = { stream.v8Value() }; |
| + ScriptValue result(scriptState, V8ScriptRunner::callExtra(scriptState, "ReadableStreamTee", args)); |
| + DCHECK(!block.HasCaught()); |
| + DCHECK(!result.isEmpty()); |
|
haraken
2016/05/13 07:06:03
Can you use V8ScriptRunner::callExtraOrCrash to ch
yhirano
2016/05/13 07:21:16
Done.
Does that mean we don't need |block|? Curren
|
| + DCHECK(result.v8Value()->IsArray()); |
| + v8::Local<v8::Array> branches = result.v8Value().As<v8::Array>(); |
| + DCHECK_EQ(2u, branches->Length()); |
| + *newStream1 = ScriptValue(scriptState, v8CallOrCrash(branches->Get(scriptState->context(), 0))); |
| + *newStream2 = ScriptValue(scriptState, v8CallOrCrash(branches->Get(scriptState->context(), 1))); |
| + |
| + DCHECK(isReadableStream(scriptState, *newStream1)); |
| + DCHECK(isReadableStream(scriptState, *newStream2)); |
| +} |
| + |
| } // namespace blink |