Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(898)

Side by Side Diff: third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp

Issue 2177243002: Use per-frame TaskRunner instead of thread's default in DataConsumerHandle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@data_consumer_handle_unique_ptr
Patch Set: update Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/fetch/BodyStreamBuffer.h" 5 #include "modules/fetch/BodyStreamBuffer.h"
6 6
7 #include "bindings/core/v8/ScriptState.h" 7 #include "bindings/core/v8/ScriptState.h"
8 #include "bindings/core/v8/V8HiddenValue.h" 8 #include "bindings/core/v8/V8HiddenValue.h"
9 #include "bindings/core/v8/WorkerOrWorkletScriptController.h" 9 #include "bindings/core/v8/WorkerOrWorkletScriptController.h"
10 #include "core/dom/DOMArrayBuffer.h" 10 #include "core/dom/DOMArrayBuffer.h"
11 #include "core/dom/DOMTypedArray.h" 11 #include "core/dom/DOMTypedArray.h"
12 #include "core/dom/ExceptionCode.h" 12 #include "core/dom/ExceptionCode.h"
13 #include "core/dom/TaskRunnerHelper.h"
13 #include "core/streams/ReadableStreamController.h" 14 #include "core/streams/ReadableStreamController.h"
14 #include "core/streams/ReadableStreamOperations.h" 15 #include "core/streams/ReadableStreamOperations.h"
15 #include "core/workers/WorkerGlobalScope.h" 16 #include "core/workers/WorkerGlobalScope.h"
16 #include "modules/fetch/Body.h" 17 #include "modules/fetch/Body.h"
17 #include "modules/fetch/DataConsumerHandleUtil.h" 18 #include "modules/fetch/DataConsumerHandleUtil.h"
18 #include "modules/fetch/DataConsumerTee.h" 19 #include "modules/fetch/DataConsumerTee.h"
19 #include "modules/fetch/ReadableStreamDataConsumerHandle.h" 20 #include "modules/fetch/ReadableStreamDataConsumerHandle.h"
20 #include "platform/RuntimeEnabledFeatures.h" 21 #include "platform/RuntimeEnabledFeatures.h"
21 #include "platform/blob/BlobData.h" 22 #include "platform/blob/BlobData.h"
22 #include "platform/network/EncodedFormData.h" 23 #include "platform/network/EncodedFormData.h"
(...skipping 23 matching lines...) Expand all
46 : ActiveDOMObject(executionContext) 47 : ActiveDOMObject(executionContext)
47 , m_buffer(buffer) 48 , m_buffer(buffer)
48 , m_client(client) 49 , m_client(client)
49 { 50 {
50 suspendIfNeeded(); 51 suspendIfNeeded();
51 } 52 }
52 53
53 void didFetchDataLoadedBlobHandle(PassRefPtr<BlobDataHandle> blobDataHandle) override 54 void didFetchDataLoadedBlobHandle(PassRefPtr<BlobDataHandle> blobDataHandle) override
54 { 55 {
55 m_buffer->endLoading(); 56 m_buffer->endLoading();
56 m_client->didFetchDataLoadedBlobHandle(blobDataHandle); 57 if (m_client)
58 m_client->didFetchDataLoadedBlobHandle(blobDataHandle);
57 } 59 }
58 60
59 void didFetchDataLoadedArrayBuffer(DOMArrayBuffer* arrayBuffer) override 61 void didFetchDataLoadedArrayBuffer(DOMArrayBuffer* arrayBuffer) override
60 { 62 {
61 m_buffer->endLoading(); 63 m_buffer->endLoading();
62 m_client->didFetchDataLoadedArrayBuffer(arrayBuffer); 64 if (m_client)
65 m_client->didFetchDataLoadedArrayBuffer(arrayBuffer);
63 } 66 }
64 67
65 void didFetchDataLoadedString(const String& string) override 68 void didFetchDataLoadedString(const String& string) override
66 { 69 {
67 m_buffer->endLoading(); 70 m_buffer->endLoading();
68 m_client->didFetchDataLoadedString(string); 71 if (m_client)
72 m_client->didFetchDataLoadedString(string);
69 } 73 }
70 74
71 void didFetchDataLoadedStream() override 75 void didFetchDataLoadedStream() override
72 { 76 {
73 m_buffer->endLoading(); 77 m_buffer->endLoading();
74 m_client->didFetchDataLoadedStream(); 78 if (m_client)
79 m_client->didFetchDataLoadedStream();
75 } 80 }
76 81
77 void didFetchDataLoadFailed() override 82 void didFetchDataLoadFailed() override
78 { 83 {
79 m_buffer->endLoading(); 84 m_buffer->endLoading();
80 m_client->didFetchDataLoadFailed(); 85 if (m_client)
86 m_client->didFetchDataLoadFailed();
87 }
88
89 WebTaskRunner* getTaskRunner() override
90 {
91 return m_client ? m_client->getTaskRunner() : TaskRunnerHelper::getUnthr ottledTaskRunner(getExecutionContext());
81 } 92 }
82 93
83 DEFINE_INLINE_TRACE() 94 DEFINE_INLINE_TRACE()
84 { 95 {
85 visitor->trace(m_buffer); 96 visitor->trace(m_buffer);
86 visitor->trace(m_client); 97 visitor->trace(m_client);
87 ActiveDOMObject::trace(visitor); 98 ActiveDOMObject::trace(visitor);
88 FetchDataLoader::Client::trace(visitor); 99 FetchDataLoader::Client::trace(visitor);
89 } 100 }
90 101
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 case WebDataConsumerHandle::ResourceExhausted: 300 case WebDataConsumerHandle::ResourceExhausted:
290 case WebDataConsumerHandle::UnexpectedError: 301 case WebDataConsumerHandle::UnexpectedError:
291 error(); 302 error();
292 return; 303 return;
293 } 304 }
294 return; 305 return;
295 } 306 }
296 processData(); 307 processData();
297 } 308 }
298 309
310 WebTaskRunner* BodyStreamBuffer::getTaskRunner()
311 {
312 return TaskRunnerHelper::getUnthrottledTaskRunner(scriptState());
313 }
314
299 bool BodyStreamBuffer::hasPendingActivity() const 315 bool BodyStreamBuffer::hasPendingActivity() const
300 { 316 {
301 if (m_loader) 317 if (m_loader)
302 return true; 318 return true;
303 if (RuntimeEnabledFeatures::responseBodyWithV8ExtraStreamEnabled()) 319 if (RuntimeEnabledFeatures::responseBodyWithV8ExtraStreamEnabled())
304 return UnderlyingSourceBase::hasPendingActivity(); 320 return UnderlyingSourceBase::hasPendingActivity();
305 321
306 return m_stream->stateInternal() == ReadableStream::Readable && m_stream->is Locked(); 322 return m_stream->stateInternal() == ReadableStream::Readable && m_stream->is Locked();
307 } 323 }
308 324
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 return createFetchDataConsumerHandleFromWebHandle(createDoneDataConsumer Handle()); 493 return createFetchDataConsumerHandleFromWebHandle(createDoneDataConsumer Handle());
478 } 494 }
479 if (isErrored) 495 if (isErrored)
480 return createFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorD ataConsumerHandle()); 496 return createFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorD ataConsumerHandle());
481 497
482 DCHECK(handle); 498 DCHECK(handle);
483 return handle; 499 return handle;
484 } 500 }
485 501
486 } // namespace blink 502 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698