| 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 #ifndef DataConsumerHandleTestUtil_h | 5 #ifndef DataConsumerHandleTestUtil_h |
| 6 #define DataConsumerHandleTestUtil_h | 6 #define DataConsumerHandleTestUtil_h |
| 7 | 7 |
| 8 #include "bindings/core/v8/ScriptState.h" | 8 #include "bindings/core/v8/ScriptState.h" |
| 9 #include "core/testing/NullExecutionContext.h" | 9 #include "core/testing/NullExecutionContext.h" |
| 10 #include "gin/public/isolate_holder.h" | 10 #include "gin/public/isolate_holder.h" |
| 11 #include "modules/fetch/DataConsumerHandleUtil.h" | 11 #include "modules/fetch/DataConsumerHandleUtil.h" |
| 12 #include "modules/fetch/FetchDataConsumerHandle.h" | 12 #include "modules/fetch/FetchDataConsumerHandle.h" |
| 13 #include "modules/fetch/FetchDataLoader.h" | 13 #include "modules/fetch/FetchDataLoader.h" |
| 14 #include "platform/ThreadSafeFunctional.h" | 14 #include "platform/CrossThreadFunctional.h" |
| 15 #include "platform/WaitableEvent.h" | 15 #include "platform/WaitableEvent.h" |
| 16 #include "platform/WebThreadSupportingGC.h" | 16 #include "platform/WebThreadSupportingGC.h" |
| 17 #include "platform/heap/Handle.h" | 17 #include "platform/heap/Handle.h" |
| 18 #include "public/platform/Platform.h" | 18 #include "public/platform/Platform.h" |
| 19 #include "public/platform/WebDataConsumerHandle.h" | 19 #include "public/platform/WebDataConsumerHandle.h" |
| 20 #include "public/platform/WebTraceLocation.h" | 20 #include "public/platform/WebTraceLocation.h" |
| 21 #include "wtf/Deque.h" | 21 #include "wtf/Deque.h" |
| 22 #include "wtf/Locker.h" | 22 #include "wtf/Locker.h" |
| 23 #include "wtf/PtrUtil.h" | 23 #include "wtf/PtrUtil.h" |
| 24 #include "wtf/ThreadSafeRefCounted.h" | 24 #include "wtf/ThreadSafeRefCounted.h" |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 public: | 249 public: |
| 250 using Self = ThreadingHandleNotificationTest; | 250 using Self = ThreadingHandleNotificationTest; |
| 251 static PassRefPtr<Self> create() { return adoptRef(new Self); } | 251 static PassRefPtr<Self> create() { return adoptRef(new Self); } |
| 252 | 252 |
| 253 void run(std::unique_ptr<WebDataConsumerHandle> handle) | 253 void run(std::unique_ptr<WebDataConsumerHandle> handle) |
| 254 { | 254 { |
| 255 ThreadHolder holder(this); | 255 ThreadHolder holder(this); |
| 256 m_waitableEvent = wrapUnique(new WaitableEvent()); | 256 m_waitableEvent = wrapUnique(new WaitableEvent()); |
| 257 m_handle = std::move(handle); | 257 m_handle = std::move(handle); |
| 258 | 258 |
| 259 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self
::obtainReader, wrapPassRefPtr(this))); | 259 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, crossThreadBind(&Sel
f::obtainReader, wrapPassRefPtr(this))); |
| 260 } | 260 } |
| 261 | 261 |
| 262 private: | 262 private: |
| 263 ThreadingHandleNotificationTest() = default; | 263 ThreadingHandleNotificationTest() = default; |
| 264 void obtainReader() | 264 void obtainReader() |
| 265 { | 265 { |
| 266 m_reader = m_handle->obtainReader(this); | 266 m_reader = m_handle->obtainReader(this); |
| 267 } | 267 } |
| 268 void didGetReadable() override | 268 void didGetReadable() override |
| 269 { | 269 { |
| 270 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::reset
Reader, wrapPassRefPtr(this))); | 270 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::rese
tReader, wrapPassRefPtr(this))); |
| 271 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signa
lDone, wrapPassRefPtr(this))); | 271 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::sign
alDone, wrapPassRefPtr(this))); |
| 272 } | 272 } |
| 273 | 273 |
| 274 std::unique_ptr<WebDataConsumerHandle> m_handle; | 274 std::unique_ptr<WebDataConsumerHandle> m_handle; |
| 275 }; | 275 }; |
| 276 | 276 |
| 277 class ThreadingHandleNoNotificationTest : public ThreadingTestBase, public W
ebDataConsumerHandle::Client { | 277 class ThreadingHandleNoNotificationTest : public ThreadingTestBase, public W
ebDataConsumerHandle::Client { |
| 278 public: | 278 public: |
| 279 using Self = ThreadingHandleNoNotificationTest; | 279 using Self = ThreadingHandleNoNotificationTest; |
| 280 static PassRefPtr<Self> create() { return adoptRef(new Self); } | 280 static PassRefPtr<Self> create() { return adoptRef(new Self); } |
| 281 | 281 |
| 282 void run(std::unique_ptr<WebDataConsumerHandle> handle) | 282 void run(std::unique_ptr<WebDataConsumerHandle> handle) |
| 283 { | 283 { |
| 284 ThreadHolder holder(this); | 284 ThreadHolder holder(this); |
| 285 m_waitableEvent = wrapUnique(new WaitableEvent()); | 285 m_waitableEvent = wrapUnique(new WaitableEvent()); |
| 286 m_handle = std::move(handle); | 286 m_handle = std::move(handle); |
| 287 | 287 |
| 288 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, threadSafeBind(&Self
::obtainReader, wrapPassRefPtr(this))); | 288 postTaskToReadingThreadAndWait(BLINK_FROM_HERE, crossThreadBind(&Sel
f::obtainReader, wrapPassRefPtr(this))); |
| 289 } | 289 } |
| 290 | 290 |
| 291 private: | 291 private: |
| 292 ThreadingHandleNoNotificationTest() = default; | 292 ThreadingHandleNoNotificationTest() = default; |
| 293 void obtainReader() | 293 void obtainReader() |
| 294 { | 294 { |
| 295 m_reader = m_handle->obtainReader(this); | 295 m_reader = m_handle->obtainReader(this); |
| 296 m_reader = nullptr; | 296 m_reader = nullptr; |
| 297 postTaskToReadingThread(BLINK_FROM_HERE, threadSafeBind(&Self::signa
lDone, wrapPassRefPtr(this))); | 297 postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::sign
alDone, wrapPassRefPtr(this))); |
| 298 } | 298 } |
| 299 void didGetReadable() override | 299 void didGetReadable() override |
| 300 { | 300 { |
| 301 ASSERT_NOT_REACHED(); | 301 ASSERT_NOT_REACHED(); |
| 302 } | 302 } |
| 303 | 303 |
| 304 std::unique_ptr<WebDataConsumerHandle> m_handle; | 304 std::unique_ptr<WebDataConsumerHandle> m_handle; |
| 305 }; | 305 }; |
| 306 | 306 |
| 307 class MockFetchDataConsumerHandle : public FetchDataConsumerHandle { | 307 class MockFetchDataConsumerHandle : public FetchDataConsumerHandle { |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 // where T is one of HandleReader and HandleTwophaseReader. | 492 // where T is one of HandleReader and HandleTwophaseReader. |
| 493 template <typename T> | 493 template <typename T> |
| 494 class HandleReaderRunner final { | 494 class HandleReaderRunner final { |
| 495 STACK_ALLOCATED(); | 495 STACK_ALLOCATED(); |
| 496 public: | 496 public: |
| 497 explicit HandleReaderRunner(std::unique_ptr<WebDataConsumerHandle> handl
e) | 497 explicit HandleReaderRunner(std::unique_ptr<WebDataConsumerHandle> handl
e) |
| 498 : m_thread(wrapUnique(new Thread("reading thread"))) | 498 : m_thread(wrapUnique(new Thread("reading thread"))) |
| 499 , m_event(wrapUnique(new WaitableEvent())) | 499 , m_event(wrapUnique(new WaitableEvent())) |
| 500 , m_isDone(false) | 500 , m_isDone(false) |
| 501 { | 501 { |
| 502 m_thread->thread()->postTask(BLINK_FROM_HERE, threadSafeBind(&Handle
ReaderRunner::start, crossThreadUnretained(this), passed(std::move(handle)))); | 502 m_thread->thread()->postTask(BLINK_FROM_HERE, crossThreadBind(&Handl
eReaderRunner::start, crossThreadUnretained(this), passed(std::move(handle)))); |
| 503 } | 503 } |
| 504 ~HandleReaderRunner() | 504 ~HandleReaderRunner() |
| 505 { | 505 { |
| 506 wait(); | 506 wait(); |
| 507 } | 507 } |
| 508 | 508 |
| 509 std::unique_ptr<HandleReadResult> wait() | 509 std::unique_ptr<HandleReadResult> wait() |
| 510 { | 510 { |
| 511 if (m_isDone) | 511 if (m_isDone) |
| 512 return nullptr; | 512 return nullptr; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 533 std::unique_ptr<HandleReadResult> m_result; | 533 std::unique_ptr<HandleReadResult> m_result; |
| 534 bool m_isDone; | 534 bool m_isDone; |
| 535 | 535 |
| 536 std::unique_ptr<T> m_handleReader; | 536 std::unique_ptr<T> m_handleReader; |
| 537 }; | 537 }; |
| 538 }; | 538 }; |
| 539 | 539 |
| 540 } // namespace blink | 540 } // namespace blink |
| 541 | 541 |
| 542 #endif // DataConsumerHandleTestUtil_h | 542 #endif // DataConsumerHandleTestUtil_h |
| OLD | NEW |