Chromium Code Reviews| Index: third_party/WebKit/Source/modules/fetch/Body.cpp |
| diff --git a/third_party/WebKit/Source/modules/fetch/Body.cpp b/third_party/WebKit/Source/modules/fetch/Body.cpp |
| index 670ea27b1e45ca179c84449e2b08beb0cad2f913..51caf404bdec79bf4bbfc562ee59bb3a15c306b0 100644 |
| --- a/third_party/WebKit/Source/modules/fetch/Body.cpp |
| +++ b/third_party/WebKit/Source/modules/fetch/Body.cpp |
| @@ -4,21 +4,19 @@ |
| #include "modules/fetch/Body.h" |
| -#include "bindings/core/v8/ExceptionState.h" |
| #include "bindings/core/v8/ScriptPromiseResolver.h" |
| #include "bindings/core/v8/ScriptState.h" |
| #include "bindings/core/v8/V8ArrayBuffer.h" |
| +#include "bindings/core/v8/V8HiddenValue.h" |
|
Yuki
2016/04/20 12:15:26
Why do you need to include V8HiddenValue.h?
yhirano
2016/04/21 03:41:42
Deleted.
|
| #include "bindings/core/v8/V8ThrowException.h" |
| #include "core/dom/DOMArrayBuffer.h" |
| #include "core/dom/DOMTypedArray.h" |
| #include "core/dom/ExceptionCode.h" |
| #include "core/fileapi/Blob.h" |
| #include "core/frame/UseCounter.h" |
| -#include "core/streams/ReadableStreamController.h" |
| -#include "core/streams/ReadableStreamOperations.h" |
| -#include "core/streams/UnderlyingSourceBase.h" |
| #include "modules/fetch/BodyStreamBuffer.h" |
| #include "modules/fetch/FetchDataLoader.h" |
| +#include "platform/RuntimeEnabledFeatures.h" |
|
Yuki
2016/04/20 12:15:26
Why do you need to include RuntimeEnabledFeatures.
yhirano
2016/04/21 03:41:42
Deleted.
|
| #include "public/platform/WebDataConsumerHandle.h" |
| #include "wtf/OwnPtr.h" |
| #include "wtf/PassRefPtr.h" |
| @@ -104,59 +102,6 @@ public: |
| } |
| }; |
| -class UnderlyingSourceFromDataConsumerHandle final : public UnderlyingSourceBase, public WebDataConsumerHandle::Client { |
| - EAGERLY_FINALIZE(); |
| - DECLARE_EAGER_FINALIZATION_OPERATOR_NEW(); |
| -public: |
| - UnderlyingSourceFromDataConsumerHandle(ScriptState* scriptState, PassOwnPtr<WebDataConsumerHandle> handle) |
| - : UnderlyingSourceBase(scriptState) |
| - , m_scriptState(scriptState) |
| - , m_reader(handle->obtainReader(this)) |
| - { |
| - } |
| - |
| - ScriptPromise pull(ScriptState* scriptState) override |
| - { |
| - didGetReadable(); |
| - return ScriptPromise::castUndefined(scriptState); |
| - } |
| - |
| - ScriptPromise cancel(ScriptState* scriptState, ScriptValue reason) override |
| - { |
| - m_reader = nullptr; |
| - return ScriptPromise::castUndefined(scriptState); |
| - } |
| - |
| - void didGetReadable() override |
| - { |
| - while (controller()->desiredSize() > 0) { |
| - size_t available = 0; |
| - const void* buffer = nullptr; |
| - WebDataConsumerHandle::Result result = m_reader->beginRead(&buffer, WebDataConsumerHandle::FlagNone, &available); |
| - if (result == WebDataConsumerHandle::Ok) { |
| - RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(available, 1); |
| - memcpy(arrayBuffer->data(), buffer, available); |
| - m_reader->endRead(available); |
| - controller()->enqueue(DOMUint8Array::create(arrayBuffer.release(), 0, available)); |
| - } else if (result == WebDataConsumerHandle::ShouldWait) { |
| - break; |
| - } else if (result == WebDataConsumerHandle::Done) { |
| - m_reader = nullptr; |
| - controller()->close(); |
| - break; |
| - } else { |
| - m_reader = nullptr; |
| - controller()->error(V8ThrowException::createTypeError(m_scriptState->isolate(), "Network error")); |
| - break; |
| - } |
| - } |
| - } |
| - |
| -private: |
| - RefPtr<ScriptState> m_scriptState; |
| - OwnPtr<WebDataConsumerHandle::Reader> m_reader; |
| -}; |
| - |
| } // namespace |
| ScriptPromise Body::arrayBuffer(ScriptState* scriptState) |
| @@ -177,7 +122,7 @@ ScriptPromise Body::arrayBuffer(ScriptState* scriptState) |
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
| promise = resolver->promise(); |
| if (bodyBuffer()) { |
| - bodyBuffer()->startLoading(scriptState->getExecutionContext(), FetchDataLoader::createLoaderAsArrayBuffer(), new BodyArrayBufferConsumer(resolver)); |
| + bodyBuffer()->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), new BodyArrayBufferConsumer(resolver)); |
| } else { |
| resolver->resolve(DOMArrayBuffer::create(0u, 1)); |
| } |
| @@ -197,7 +142,7 @@ ScriptPromise Body::blob(ScriptState* scriptState) |
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
| promise = resolver->promise(); |
| if (bodyBuffer()) { |
| - bodyBuffer()->startLoading(scriptState->getExecutionContext(), FetchDataLoader::createLoaderAsBlobHandle(mimeType()), new BodyBlobConsumer(resolver)); |
| + bodyBuffer()->startLoading(FetchDataLoader::createLoaderAsBlobHandle(mimeType()), new BodyBlobConsumer(resolver)); |
| } else { |
| OwnPtr<BlobData> blobData = BlobData::create(); |
| blobData->setContentType(mimeType()); |
| @@ -220,7 +165,7 @@ ScriptPromise Body::json(ScriptState* scriptState) |
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
| promise = resolver->promise(); |
| if (bodyBuffer()) { |
| - bodyBuffer()->startLoading(scriptState->getExecutionContext(), FetchDataLoader::createLoaderAsString(), new BodyJsonConsumer(resolver)); |
| + bodyBuffer()->startLoading(FetchDataLoader::createLoaderAsString(), new BodyJsonConsumer(resolver)); |
| } else { |
| resolver->reject(V8ThrowException::createSyntaxError(scriptState->isolate(), "Unexpected end of input")); |
| } |
| @@ -240,32 +185,21 @@ ScriptPromise Body::text(ScriptState* scriptState) |
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
| promise = resolver->promise(); |
| if (bodyBuffer()) { |
| - bodyBuffer()->startLoading(scriptState->getExecutionContext(), FetchDataLoader::createLoaderAsString(), new BodyTextConsumer(resolver)); |
| + bodyBuffer()->startLoading(FetchDataLoader::createLoaderAsString(), new BodyTextConsumer(resolver)); |
| } else { |
| resolver->resolve(String()); |
| } |
| return promise; |
| } |
| -ReadableByteStream* Body::body() |
| -{ |
| - return bodyBuffer() ? bodyBuffer()->stream() : nullptr; |
| -} |
| - |
| -ReadableByteStream* Body::bodyWithUseCounter() |
| +ScriptValue Body::bodyWithUseCounter(ScriptState* scriptState) |
| { |
| UseCounter::count(getExecutionContext(), UseCounter::FetchBodyStream); |
| - return body(); |
| -} |
| - |
| -ScriptValue Body::v8ExtraStreamBody(ScriptState* scriptState) |
| -{ |
| - if (bodyUsed() || isBodyLocked() || !bodyBuffer()) |
| - return ScriptValue(scriptState, v8::Undefined(scriptState->isolate())); |
| - OwnPtr<FetchDataConsumerHandle> handle = bodyBuffer()->releaseHandle(scriptState->getExecutionContext()); |
| - return ReadableStreamOperations::createReadableStream(scriptState, |
| - new UnderlyingSourceFromDataConsumerHandle(scriptState, handle.release()), |
| - ScriptValue(scriptState, v8::Undefined(scriptState->isolate()))); |
| + if (!bodyBuffer()) |
| + return ScriptValue::createNull(scriptState); |
| + ScriptValue stream = bodyBuffer()->stream(); |
| + ASSERT(stream.getScriptState() == scriptState); |
| + return stream; |
| } |
| bool Body::bodyUsed() |