| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/DataConsumerHandleTestUtil.h" | 5 #include "modules/fetch/DataConsumerHandleTestUtil.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/DOMWrapperWorld.h" | 7 #include "bindings/core/v8/DOMWrapperWorld.h" |
| 8 #include "wtf/PtrUtil.h" | 8 #include "wtf/PtrUtil.h" |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 | 85 |
| 86 void DataConsumerHandleTestUtil::ReplayingHandle::Context::add(const Command& co
mmand) | 86 void DataConsumerHandleTestUtil::ReplayingHandle::Context::add(const Command& co
mmand) |
| 87 { | 87 { |
| 88 MutexLocker locker(m_mutex); | 88 MutexLocker locker(m_mutex); |
| 89 m_commands.append(command); | 89 m_commands.append(command); |
| 90 } | 90 } |
| 91 | 91 |
| 92 void DataConsumerHandleTestUtil::ReplayingHandle::Context::attachReader(WebDataC
onsumerHandle::Client* client) | 92 void DataConsumerHandleTestUtil::ReplayingHandle::Context::attachReader(WebDataC
onsumerHandle::Client* client) |
| 93 { | 93 { |
| 94 MutexLocker locker(m_mutex); | 94 MutexLocker locker(m_mutex); |
| 95 ASSERT(!m_readerThread); | 95 DCHECK(!m_readerThread); |
| 96 ASSERT(!m_client); | 96 DCHECK(!m_client); |
| 97 m_readerThread = Platform::current()->currentThread(); | 97 m_readerThread = Platform::current()->currentThread(); |
| 98 m_client = client; | 98 m_client = client; |
| 99 | 99 |
| 100 if (m_client && !(isEmpty() && m_result == ShouldWait)) | 100 if (m_client && !(isEmpty() && m_result == ShouldWait)) |
| 101 notify(); | 101 notify(); |
| 102 } | 102 } |
| 103 | 103 |
| 104 void DataConsumerHandleTestUtil::ReplayingHandle::Context::detachReader() | 104 void DataConsumerHandleTestUtil::ReplayingHandle::Context::detachReader() |
| 105 { | 105 { |
| 106 MutexLocker locker(m_mutex); | 106 MutexLocker locker(m_mutex); |
| 107 ASSERT(m_readerThread && m_readerThread->isCurrentThread()); | 107 DCHECK(m_readerThread && m_readerThread->isCurrentThread()); |
| 108 m_readerThread = nullptr; | 108 m_readerThread = nullptr; |
| 109 m_client = nullptr; | 109 m_client = nullptr; |
| 110 if (!m_isHandleAttached) | 110 if (!m_isHandleAttached) |
| 111 m_detached->signal(); | 111 m_detached->signal(); |
| 112 } | 112 } |
| 113 | 113 |
| 114 void DataConsumerHandleTestUtil::ReplayingHandle::Context::detachHandle() | 114 void DataConsumerHandleTestUtil::ReplayingHandle::Context::detachHandle() |
| 115 { | 115 { |
| 116 MutexLocker locker(m_mutex); | 116 MutexLocker locker(m_mutex); |
| 117 m_isHandleAttached = false; | 117 m_isHandleAttached = false; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 , m_readerThread(nullptr) | 166 , m_readerThread(nullptr) |
| 167 , m_client(nullptr) | 167 , m_client(nullptr) |
| 168 , m_result(ShouldWait) | 168 , m_result(ShouldWait) |
| 169 , m_isHandleAttached(true) | 169 , m_isHandleAttached(true) |
| 170 , m_detached(wrapUnique(new WaitableEvent())) | 170 , m_detached(wrapUnique(new WaitableEvent())) |
| 171 { | 171 { |
| 172 } | 172 } |
| 173 | 173 |
| 174 const DataConsumerHandleTestUtil::Command& DataConsumerHandleTestUtil::Replaying
Handle::Context::top() | 174 const DataConsumerHandleTestUtil::Command& DataConsumerHandleTestUtil::Replaying
Handle::Context::top() |
| 175 { | 175 { |
| 176 ASSERT(!isEmpty()); | 176 DCHECK(!isEmpty()); |
| 177 return m_commands.first(); | 177 return m_commands.first(); |
| 178 } | 178 } |
| 179 | 179 |
| 180 void DataConsumerHandleTestUtil::ReplayingHandle::Context::consume(size_t size) | 180 void DataConsumerHandleTestUtil::ReplayingHandle::Context::consume(size_t size) |
| 181 { | 181 { |
| 182 ASSERT(!isEmpty()); | 182 DCHECK(!isEmpty()); |
| 183 ASSERT(size + m_offset <= top().body().size()); | 183 DCHECK(size + m_offset <= top().body().size()); |
| 184 bool fullyConsumed = (size + m_offset >= top().body().size()); | 184 bool fullyConsumed = (size + m_offset >= top().body().size()); |
| 185 if (fullyConsumed) { | 185 if (fullyConsumed) { |
| 186 m_offset = 0; | 186 m_offset = 0; |
| 187 m_commands.removeFirst(); | 187 m_commands.removeFirst(); |
| 188 } else { | 188 } else { |
| 189 m_offset += size; | 189 m_offset += size; |
| 190 } | 190 } |
| 191 } | 191 } |
| 192 | 192 |
| 193 void DataConsumerHandleTestUtil::ReplayingHandle::Context::notify() | 193 void DataConsumerHandleTestUtil::ReplayingHandle::Context::notify() |
| 194 { | 194 { |
| 195 if (!m_client) | 195 if (!m_client) |
| 196 return; | 196 return; |
| 197 ASSERT(m_readerThread); | 197 DCHECK(m_readerThread); |
| 198 m_readerThread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, crossThreadBin
d(&Context::notifyInternal, wrapPassRefPtr(this))); | 198 m_readerThread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, crossThreadBin
d(&Context::notifyInternal, wrapPassRefPtr(this))); |
| 199 } | 199 } |
| 200 | 200 |
| 201 void DataConsumerHandleTestUtil::ReplayingHandle::Context::notifyInternal() | 201 void DataConsumerHandleTestUtil::ReplayingHandle::Context::notifyInternal() |
| 202 { | 202 { |
| 203 { | 203 { |
| 204 MutexLocker locker(m_mutex); | 204 MutexLocker locker(m_mutex); |
| 205 if (!m_client || !m_readerThread->isCurrentThread()) { | 205 if (!m_client || !m_readerThread->isCurrentThread()) { |
| 206 // There is no client, or a new reader is attached. | 206 // There is no client, or a new reader is attached. |
| 207 return; | 207 return; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 m_data.append(buffer, size); | 251 m_data.append(buffer, size); |
| 252 } | 252 } |
| 253 std::unique_ptr<HandleReadResult> result = wrapUnique(new HandleReadResult(r
, m_data)); | 253 std::unique_ptr<HandleReadResult> result = wrapUnique(new HandleReadResult(r
, m_data)); |
| 254 m_data.clear(); | 254 m_data.clear(); |
| 255 Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FRO
M_HERE, WTF::bind(&HandleReader::runOnFinishedReading, WTF::unretained(this), pa
ssed(std::move(result)))); | 255 Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FRO
M_HERE, WTF::bind(&HandleReader::runOnFinishedReading, WTF::unretained(this), pa
ssed(std::move(result)))); |
| 256 m_reader = nullptr; | 256 m_reader = nullptr; |
| 257 } | 257 } |
| 258 | 258 |
| 259 void DataConsumerHandleTestUtil::HandleReader::runOnFinishedReading(std::unique_
ptr<HandleReadResult> result) | 259 void DataConsumerHandleTestUtil::HandleReader::runOnFinishedReading(std::unique_
ptr<HandleReadResult> result) |
| 260 { | 260 { |
| 261 ASSERT(m_onFinishedReading); | 261 DCHECK(m_onFinishedReading); |
| 262 std::unique_ptr<OnFinishedReading> onFinishedReading(std::move(m_onFinishedR
eading)); | 262 std::unique_ptr<OnFinishedReading> onFinishedReading(std::move(m_onFinishedR
eading)); |
| 263 (*onFinishedReading)(std::move(result)); | 263 (*onFinishedReading)(std::move(result)); |
| 264 } | 264 } |
| 265 | 265 |
| 266 DataConsumerHandleTestUtil::HandleTwoPhaseReader::HandleTwoPhaseReader(std::uniq
ue_ptr<WebDataConsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinis
hedReading) | 266 DataConsumerHandleTestUtil::HandleTwoPhaseReader::HandleTwoPhaseReader(std::uniq
ue_ptr<WebDataConsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinis
hedReading) |
| 267 : m_reader(handle->obtainReader(this)) | 267 : m_reader(handle->obtainReader(this)) |
| 268 , m_onFinishedReading(std::move(onFinishedReading)) | 268 , m_onFinishedReading(std::move(onFinishedReading)) |
| 269 { | 269 { |
| 270 } | 270 } |
| 271 | 271 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 286 m_reader->endRead(readSize); | 286 m_reader->endRead(readSize); |
| 287 } | 287 } |
| 288 std::unique_ptr<HandleReadResult> result = wrapUnique(new HandleReadResult(r
, m_data)); | 288 std::unique_ptr<HandleReadResult> result = wrapUnique(new HandleReadResult(r
, m_data)); |
| 289 m_data.clear(); | 289 m_data.clear(); |
| 290 Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FRO
M_HERE, WTF::bind(&HandleTwoPhaseReader::runOnFinishedReading, WTF::unretained(t
his), passed(std::move(result)))); | 290 Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FRO
M_HERE, WTF::bind(&HandleTwoPhaseReader::runOnFinishedReading, WTF::unretained(t
his), passed(std::move(result)))); |
| 291 m_reader = nullptr; | 291 m_reader = nullptr; |
| 292 } | 292 } |
| 293 | 293 |
| 294 void DataConsumerHandleTestUtil::HandleTwoPhaseReader::runOnFinishedReading(std:
:unique_ptr<HandleReadResult> result) | 294 void DataConsumerHandleTestUtil::HandleTwoPhaseReader::runOnFinishedReading(std:
:unique_ptr<HandleReadResult> result) |
| 295 { | 295 { |
| 296 ASSERT(m_onFinishedReading); | 296 DCHECK(m_onFinishedReading); |
| 297 std::unique_ptr<OnFinishedReading> onFinishedReading(std::move(m_onFinishedR
eading)); | 297 std::unique_ptr<OnFinishedReading> onFinishedReading(std::move(m_onFinishedR
eading)); |
| 298 (*onFinishedReading)(std::move(result)); | 298 (*onFinishedReading)(std::move(result)); |
| 299 } | 299 } |
| 300 | 300 |
| 301 } // namespace blink | 301 } // namespace blink |
| OLD | NEW |