| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "core/loader/ThreadableLoader.h" | 5 #include "core/loader/ThreadableLoader.h" |
| 6 | 6 |
| 7 #include "core/dom/ExecutionContextTask.h" | 7 #include "core/dom/ExecutionContextTask.h" |
| 8 #include "core/fetch/MemoryCache.h" | 8 #include "core/fetch/MemoryCache.h" |
| 9 #include "core/fetch/ResourceLoaderOptions.h" | 9 #include "core/fetch/ResourceLoaderOptions.h" |
| 10 #include "core/loader/DocumentThreadableLoader.h" | 10 #include "core/loader/DocumentThreadableLoader.h" |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 public: | 169 public: |
| 170 explicit WorkerThreadableLoaderTestHelper( | 170 explicit WorkerThreadableLoaderTestHelper( |
| 171 BlinkGC::ThreadHeapMode threadHeapMode) | 171 BlinkGC::ThreadHeapMode threadHeapMode) |
| 172 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))), | 172 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))), |
| 173 m_threadHeapMode(threadHeapMode) {} | 173 m_threadHeapMode(threadHeapMode) {} |
| 174 | 174 |
| 175 void createLoader( | 175 void createLoader( |
| 176 ThreadableLoaderClient* client, | 176 ThreadableLoaderClient* client, |
| 177 CrossOriginRequestPolicy crossOriginRequestPolicy) override { | 177 CrossOriginRequestPolicy crossOriginRequestPolicy) override { |
| 178 std::unique_ptr<WaitableEvent> completionEvent = | 178 std::unique_ptr<WaitableEvent> completionEvent = |
| 179 wrapUnique(new WaitableEvent()); | 179 makeUnique<WaitableEvent>(); |
| 180 postTaskToWorkerGlobalScope( | 180 postTaskToWorkerGlobalScope( |
| 181 BLINK_FROM_HERE, | 181 BLINK_FROM_HERE, |
| 182 createCrossThreadTask( | 182 createCrossThreadTask( |
| 183 &WorkerThreadableLoaderTestHelper::workerCreateLoader, | 183 &WorkerThreadableLoaderTestHelper::workerCreateLoader, |
| 184 crossThreadUnretained(this), crossThreadUnretained(client), | 184 crossThreadUnretained(this), crossThreadUnretained(client), |
| 185 crossThreadUnretained(completionEvent.get()), | 185 crossThreadUnretained(completionEvent.get()), |
| 186 crossOriginRequestPolicy)); | 186 crossOriginRequestPolicy)); |
| 187 completionEvent->wait(); | 187 completionEvent->wait(); |
| 188 } | 188 } |
| 189 | 189 |
| 190 void startLoader(const ResourceRequest& request) override { | 190 void startLoader(const ResourceRequest& request) override { |
| 191 std::unique_ptr<WaitableEvent> completionEvent = | 191 std::unique_ptr<WaitableEvent> completionEvent = |
| 192 wrapUnique(new WaitableEvent()); | 192 makeUnique<WaitableEvent>(); |
| 193 postTaskToWorkerGlobalScope( | 193 postTaskToWorkerGlobalScope( |
| 194 BLINK_FROM_HERE, | 194 BLINK_FROM_HERE, |
| 195 createCrossThreadTask( | 195 createCrossThreadTask( |
| 196 &WorkerThreadableLoaderTestHelper::workerStartLoader, | 196 &WorkerThreadableLoaderTestHelper::workerStartLoader, |
| 197 crossThreadUnretained(this), | 197 crossThreadUnretained(this), |
| 198 crossThreadUnretained(completionEvent.get()), request)); | 198 crossThreadUnretained(completionEvent.get()), request)); |
| 199 completionEvent->wait(); | 199 completionEvent->wait(); |
| 200 } | 200 } |
| 201 | 201 |
| 202 // Must be called on the worker thread. | 202 // Must be called on the worker thread. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 219 DCHECK(m_workerThread->isCurrentThread()); | 219 DCHECK(m_workerThread->isCurrentThread()); |
| 220 m_loader = nullptr; | 220 m_loader = nullptr; |
| 221 } | 221 } |
| 222 | 222 |
| 223 Checkpoint& checkpoint() override { return m_checkpoint; } | 223 Checkpoint& checkpoint() override { return m_checkpoint; } |
| 224 | 224 |
| 225 void callCheckpoint(int n) override { | 225 void callCheckpoint(int n) override { |
| 226 testing::runPendingTasks(); | 226 testing::runPendingTasks(); |
| 227 | 227 |
| 228 std::unique_ptr<WaitableEvent> completionEvent = | 228 std::unique_ptr<WaitableEvent> completionEvent = |
| 229 wrapUnique(new WaitableEvent()); | 229 makeUnique<WaitableEvent>(); |
| 230 postTaskToWorkerGlobalScope( | 230 postTaskToWorkerGlobalScope( |
| 231 BLINK_FROM_HERE, | 231 BLINK_FROM_HERE, |
| 232 createCrossThreadTask( | 232 createCrossThreadTask( |
| 233 &WorkerThreadableLoaderTestHelper::workerCallCheckpoint, | 233 &WorkerThreadableLoaderTestHelper::workerCallCheckpoint, |
| 234 crossThreadUnretained(this), | 234 crossThreadUnretained(this), |
| 235 crossThreadUnretained(completionEvent.get()), n)); | 235 crossThreadUnretained(completionEvent.get()), n)); |
| 236 completionEvent->wait(); | 236 completionEvent->wait(); |
| 237 } | 237 } |
| 238 | 238 |
| 239 void onSetUp() override { | 239 void onSetUp() override { |
| 240 m_mockWorkerReportingProxy = wrapUnique(new MockWorkerReportingProxy()); | 240 m_mockWorkerReportingProxy = makeUnique<MockWorkerReportingProxy>(); |
| 241 m_securityOrigin = document().getSecurityOrigin(); | 241 m_securityOrigin = document().getSecurityOrigin(); |
| 242 m_workerThread = wrapUnique(new WorkerThreadForTest( | 242 m_workerThread = wrapUnique(new WorkerThreadForTest( |
| 243 this, *m_mockWorkerReportingProxy, m_threadHeapMode)); | 243 this, *m_mockWorkerReportingProxy, m_threadHeapMode)); |
| 244 | 244 |
| 245 expectWorkerLifetimeReportingCalls(); | 245 expectWorkerLifetimeReportingCalls(); |
| 246 m_workerThread->startWithSourceCode(m_securityOrigin.get(), | 246 m_workerThread->startWithSourceCode(m_securityOrigin.get(), |
| 247 "//fake source code"); | 247 "//fake source code"); |
| 248 m_workerThread->waitForInit(); | 248 m_workerThread->waitForInit(); |
| 249 } | 249 } |
| 250 | 250 |
| (...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 886 // test is not saying that didFailAccessControlCheck should be dispatched | 886 // test is not saying that didFailAccessControlCheck should be dispatched |
| 887 // synchronously, but is saying that even when a response is served | 887 // synchronously, but is saying that even when a response is served |
| 888 // synchronously it should not lead to a crash. | 888 // synchronously it should not lead to a crash. |
| 889 startLoader(KURL(KURL(), "about:blank")); | 889 startLoader(KURL(KURL(), "about:blank")); |
| 890 callCheckpoint(2); | 890 callCheckpoint(2); |
| 891 } | 891 } |
| 892 | 892 |
| 893 } // namespace | 893 } // namespace |
| 894 | 894 |
| 895 } // namespace blink | 895 } // namespace blink |
| OLD | NEW |