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" |
| 9 #include <memory> |
8 | 10 |
9 namespace blink { | 11 namespace blink { |
10 | 12 |
11 DataConsumerHandleTestUtil::Thread::Thread(const char* name, InitializationPolic
y initializationPolicy) | 13 DataConsumerHandleTestUtil::Thread::Thread(const char* name, InitializationPolic
y initializationPolicy) |
12 : m_thread(WebThreadSupportingGC::create(name)) | 14 : m_thread(WebThreadSupportingGC::create(name)) |
13 , m_initializationPolicy(initializationPolicy) | 15 , m_initializationPolicy(initializationPolicy) |
14 , m_waitableEvent(adoptPtr(new WaitableEvent())) | 16 , m_waitableEvent(wrapUnique(new WaitableEvent())) |
15 { | 17 { |
16 m_thread->postTask(BLINK_FROM_HERE, threadSafeBind(&Thread::initialize, Allo
wCrossThreadAccess(this))); | 18 m_thread->postTask(BLINK_FROM_HERE, threadSafeBind(&Thread::initialize, Allo
wCrossThreadAccess(this))); |
17 m_waitableEvent->wait(); | 19 m_waitableEvent->wait(); |
18 } | 20 } |
19 | 21 |
20 DataConsumerHandleTestUtil::Thread::~Thread() | 22 DataConsumerHandleTestUtil::Thread::~Thread() |
21 { | 23 { |
22 m_thread->postTask(BLINK_FROM_HERE, threadSafeBind(&Thread::shutdown, AllowC
rossThreadAccess(this))); | 24 m_thread->postTask(BLINK_FROM_HERE, threadSafeBind(&Thread::shutdown, AllowC
rossThreadAccess(this))); |
23 m_waitableEvent->wait(); | 25 m_waitableEvent->wait(); |
24 } | 26 } |
25 | 27 |
26 void DataConsumerHandleTestUtil::Thread::initialize() | 28 void DataConsumerHandleTestUtil::Thread::initialize() |
27 { | 29 { |
28 if (m_initializationPolicy >= ScriptExecution) { | 30 if (m_initializationPolicy >= ScriptExecution) { |
29 m_isolateHolder = adoptPtr(new gin::IsolateHolder()); | 31 m_isolateHolder = wrapUnique(new gin::IsolateHolder()); |
30 isolate()->Enter(); | 32 isolate()->Enter(); |
31 } | 33 } |
32 m_thread->initialize(); | 34 m_thread->initialize(); |
33 if (m_initializationPolicy >= ScriptExecution) { | 35 if (m_initializationPolicy >= ScriptExecution) { |
34 v8::HandleScope handleScope(isolate()); | 36 v8::HandleScope handleScope(isolate()); |
35 m_scriptState = ScriptState::create(v8::Context::New(isolate()), DOMWrap
perWorld::create(isolate())); | 37 m_scriptState = ScriptState::create(v8::Context::New(isolate()), DOMWrap
perWorld::create(isolate())); |
36 } | 38 } |
37 if (m_initializationPolicy >= WithExecutionContext) { | 39 if (m_initializationPolicy >= WithExecutionContext) { |
38 m_executionContext = new NullExecutionContext(); | 40 m_executionContext = new NullExecutionContext(); |
39 } | 41 } |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 consume(readSize); | 160 consume(readSize); |
159 return Ok; | 161 return Ok; |
160 } | 162 } |
161 | 163 |
162 DataConsumerHandleTestUtil::ReplayingHandle::Context::Context() | 164 DataConsumerHandleTestUtil::ReplayingHandle::Context::Context() |
163 : m_offset(0) | 165 : m_offset(0) |
164 , m_readerThread(nullptr) | 166 , m_readerThread(nullptr) |
165 , m_client(nullptr) | 167 , m_client(nullptr) |
166 , m_result(ShouldWait) | 168 , m_result(ShouldWait) |
167 , m_isHandleAttached(true) | 169 , m_isHandleAttached(true) |
168 , m_detached(adoptPtr(new WaitableEvent())) | 170 , m_detached(wrapUnique(new WaitableEvent())) |
169 { | 171 { |
170 } | 172 } |
171 | 173 |
172 const DataConsumerHandleTestUtil::Command& DataConsumerHandleTestUtil::Replaying
Handle::Context::top() | 174 const DataConsumerHandleTestUtil::Command& DataConsumerHandleTestUtil::Replaying
Handle::Context::top() |
173 { | 175 { |
174 ASSERT(!isEmpty()); | 176 ASSERT(!isEmpty()); |
175 return m_commands.first(); | 177 return m_commands.first(); |
176 } | 178 } |
177 | 179 |
178 void DataConsumerHandleTestUtil::ReplayingHandle::Context::consume(size_t size) | 180 void DataConsumerHandleTestUtil::ReplayingHandle::Context::consume(size_t size) |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 WebDataConsumerHandle::Reader* DataConsumerHandleTestUtil::ReplayingHandle::obta
inReaderInternal(Client* client) | 224 WebDataConsumerHandle::Reader* DataConsumerHandleTestUtil::ReplayingHandle::obta
inReaderInternal(Client* client) |
223 { | 225 { |
224 return new ReaderImpl(m_context, client); | 226 return new ReaderImpl(m_context, client); |
225 } | 227 } |
226 | 228 |
227 void DataConsumerHandleTestUtil::ReplayingHandle::add(const Command& command) | 229 void DataConsumerHandleTestUtil::ReplayingHandle::add(const Command& command) |
228 { | 230 { |
229 m_context->add(command); | 231 m_context->add(command); |
230 } | 232 } |
231 | 233 |
232 DataConsumerHandleTestUtil::HandleReader::HandleReader(PassOwnPtr<WebDataConsume
rHandle> handle, std::unique_ptr<OnFinishedReading> onFinishedReading) | 234 DataConsumerHandleTestUtil::HandleReader::HandleReader(std::unique_ptr<WebDataCo
nsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinishedReading) |
233 : m_reader(handle->obtainReader(this)) | 235 : m_reader(handle->obtainReader(this)) |
234 , m_onFinishedReading(std::move(onFinishedReading)) | 236 , m_onFinishedReading(std::move(onFinishedReading)) |
235 { | 237 { |
236 } | 238 } |
237 | 239 |
238 void DataConsumerHandleTestUtil::HandleReader::didGetReadable() | 240 void DataConsumerHandleTestUtil::HandleReader::didGetReadable() |
239 { | 241 { |
240 WebDataConsumerHandle::Result r = WebDataConsumerHandle::UnexpectedError; | 242 WebDataConsumerHandle::Result r = WebDataConsumerHandle::UnexpectedError; |
241 char buffer[3]; | 243 char buffer[3]; |
242 while (true) { | 244 while (true) { |
243 size_t size; | 245 size_t size; |
244 r = m_reader->read(buffer, sizeof(buffer), WebDataConsumerHandle::FlagNo
ne, &size); | 246 r = m_reader->read(buffer, sizeof(buffer), WebDataConsumerHandle::FlagNo
ne, &size); |
245 if (r == WebDataConsumerHandle::ShouldWait) | 247 if (r == WebDataConsumerHandle::ShouldWait) |
246 return; | 248 return; |
247 if (r != WebDataConsumerHandle::Ok) | 249 if (r != WebDataConsumerHandle::Ok) |
248 break; | 250 break; |
249 m_data.append(buffer, size); | 251 m_data.append(buffer, size); |
250 } | 252 } |
251 OwnPtr<HandleReadResult> result = adoptPtr(new HandleReadResult(r, m_data)); | 253 std::unique_ptr<HandleReadResult> result = wrapUnique(new HandleReadResult(r
, m_data)); |
252 m_data.clear(); | 254 m_data.clear(); |
253 Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FRO
M_HERE, bind(&HandleReader::runOnFinishedReading, this, passed(std::move(result)
))); | 255 Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FRO
M_HERE, WTF::bind(&HandleReader::runOnFinishedReading, this, passed(std::move(re
sult)))); |
254 m_reader = nullptr; | 256 m_reader = nullptr; |
255 } | 257 } |
256 | 258 |
257 void DataConsumerHandleTestUtil::HandleReader::runOnFinishedReading(PassOwnPtr<H
andleReadResult> result) | 259 void DataConsumerHandleTestUtil::HandleReader::runOnFinishedReading(std::unique_
ptr<HandleReadResult> result) |
258 { | 260 { |
259 ASSERT(m_onFinishedReading); | 261 ASSERT(m_onFinishedReading); |
260 std::unique_ptr<OnFinishedReading> onFinishedReading(std::move(m_onFinishedR
eading)); | 262 std::unique_ptr<OnFinishedReading> onFinishedReading(std::move(m_onFinishedR
eading)); |
261 (*onFinishedReading)(std::move(result)); | 263 (*onFinishedReading)(std::move(result)); |
262 } | 264 } |
263 | 265 |
264 DataConsumerHandleTestUtil::HandleTwoPhaseReader::HandleTwoPhaseReader(PassOwnPt
r<WebDataConsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinishedRe
ading) | 266 DataConsumerHandleTestUtil::HandleTwoPhaseReader::HandleTwoPhaseReader(std::uniq
ue_ptr<WebDataConsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinis
hedReading) |
265 : m_reader(handle->obtainReader(this)) | 267 : m_reader(handle->obtainReader(this)) |
266 , m_onFinishedReading(std::move(onFinishedReading)) | 268 , m_onFinishedReading(std::move(onFinishedReading)) |
267 { | 269 { |
268 } | 270 } |
269 | 271 |
270 void DataConsumerHandleTestUtil::HandleTwoPhaseReader::didGetReadable() | 272 void DataConsumerHandleTestUtil::HandleTwoPhaseReader::didGetReadable() |
271 { | 273 { |
272 WebDataConsumerHandle::Result r = WebDataConsumerHandle::UnexpectedError; | 274 WebDataConsumerHandle::Result r = WebDataConsumerHandle::UnexpectedError; |
273 while (true) { | 275 while (true) { |
274 const void* buffer = nullptr; | 276 const void* buffer = nullptr; |
275 size_t size; | 277 size_t size; |
276 r = m_reader->beginRead(&buffer, WebDataConsumerHandle::FlagNone, &size)
; | 278 r = m_reader->beginRead(&buffer, WebDataConsumerHandle::FlagNone, &size)
; |
277 if (r == WebDataConsumerHandle::ShouldWait) | 279 if (r == WebDataConsumerHandle::ShouldWait) |
278 return; | 280 return; |
279 if (r != WebDataConsumerHandle::Ok) | 281 if (r != WebDataConsumerHandle::Ok) |
280 break; | 282 break; |
281 // Read smaller than available in order to test |endRead|. | 283 // Read smaller than available in order to test |endRead|. |
282 size_t readSize = std::min(size, std::max(size * 2 / 3, static_cast<size
_t>(1))); | 284 size_t readSize = std::min(size, std::max(size * 2 / 3, static_cast<size
_t>(1))); |
283 m_data.append(static_cast<const char*>(buffer), readSize); | 285 m_data.append(static_cast<const char*>(buffer), readSize); |
284 m_reader->endRead(readSize); | 286 m_reader->endRead(readSize); |
285 } | 287 } |
286 OwnPtr<HandleReadResult> result = adoptPtr(new HandleReadResult(r, m_data)); | 288 std::unique_ptr<HandleReadResult> result = wrapUnique(new HandleReadResult(r
, m_data)); |
287 m_data.clear(); | 289 m_data.clear(); |
288 Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FRO
M_HERE, bind(&HandleTwoPhaseReader::runOnFinishedReading, this, passed(std::move
(result)))); | 290 Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FRO
M_HERE, WTF::bind(&HandleTwoPhaseReader::runOnFinishedReading, this, passed(std:
:move(result)))); |
289 m_reader = nullptr; | 291 m_reader = nullptr; |
290 } | 292 } |
291 | 293 |
292 void DataConsumerHandleTestUtil::HandleTwoPhaseReader::runOnFinishedReading(Pass
OwnPtr<HandleReadResult> result) | 294 void DataConsumerHandleTestUtil::HandleTwoPhaseReader::runOnFinishedReading(std:
:unique_ptr<HandleReadResult> result) |
293 { | 295 { |
294 ASSERT(m_onFinishedReading); | 296 ASSERT(m_onFinishedReading); |
295 std::unique_ptr<OnFinishedReading> onFinishedReading(std::move(m_onFinishedR
eading)); | 297 std::unique_ptr<OnFinishedReading> onFinishedReading(std::move(m_onFinishedR
eading)); |
296 (*onFinishedReading)(std::move(result)); | 298 (*onFinishedReading)(std::move(result)); |
297 } | 299 } |
298 | 300 |
299 } // namespace blink | 301 } // namespace blink |
OLD | NEW |