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 30 matching lines...) Expand all Loading... |
41 using ::testing::_; | 41 using ::testing::_; |
42 using ::testing::InSequence; | 42 using ::testing::InSequence; |
43 using ::testing::InvokeWithoutArgs; | 43 using ::testing::InvokeWithoutArgs; |
44 using ::testing::StrEq; | 44 using ::testing::StrEq; |
45 using ::testing::Truly; | 45 using ::testing::Truly; |
46 using Checkpoint = ::testing::StrictMock<::testing::MockFunction<void(int)>>; | 46 using Checkpoint = ::testing::StrictMock<::testing::MockFunction<void(int)>>; |
47 | 47 |
48 class MockThreadableLoaderClient : public ThreadableLoaderClient { | 48 class MockThreadableLoaderClient : public ThreadableLoaderClient { |
49 public: | 49 public: |
50 static std::unique_ptr<MockThreadableLoaderClient> create() { | 50 static std::unique_ptr<MockThreadableLoaderClient> create() { |
51 return wrapUnique(new ::testing::StrictMock<MockThreadableLoaderClient>); | 51 return WTF::wrapUnique( |
| 52 new ::testing::StrictMock<MockThreadableLoaderClient>); |
52 } | 53 } |
53 MOCK_METHOD2(didSendData, void(unsigned long long, unsigned long long)); | 54 MOCK_METHOD2(didSendData, void(unsigned long long, unsigned long long)); |
54 MOCK_METHOD3(didReceiveResponseMock, | 55 MOCK_METHOD3(didReceiveResponseMock, |
55 void(unsigned long, | 56 void(unsigned long, |
56 const ResourceResponse&, | 57 const ResourceResponse&, |
57 WebDataConsumerHandle*)); | 58 WebDataConsumerHandle*)); |
58 void didReceiveResponse(unsigned long identifier, | 59 void didReceiveResponse(unsigned long identifier, |
59 const ResourceResponse& response, | 60 const ResourceResponse& response, |
60 std::unique_ptr<WebDataConsumerHandle> handle) { | 61 std::unique_ptr<WebDataConsumerHandle> handle) { |
61 didReceiveResponseMock(identifier, response, handle.get()); | 62 didReceiveResponseMock(identifier, response, handle.get()); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 public: | 170 public: |
170 explicit WorkerThreadableLoaderTestHelper( | 171 explicit WorkerThreadableLoaderTestHelper( |
171 BlinkGC::ThreadHeapMode threadHeapMode) | 172 BlinkGC::ThreadHeapMode threadHeapMode) |
172 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))), | 173 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))), |
173 m_threadHeapMode(threadHeapMode) {} | 174 m_threadHeapMode(threadHeapMode) {} |
174 | 175 |
175 void createLoader( | 176 void createLoader( |
176 ThreadableLoaderClient* client, | 177 ThreadableLoaderClient* client, |
177 CrossOriginRequestPolicy crossOriginRequestPolicy) override { | 178 CrossOriginRequestPolicy crossOriginRequestPolicy) override { |
178 std::unique_ptr<WaitableEvent> completionEvent = | 179 std::unique_ptr<WaitableEvent> completionEvent = |
179 makeUnique<WaitableEvent>(); | 180 WTF::makeUnique<WaitableEvent>(); |
180 postTaskToWorkerGlobalScope( | 181 postTaskToWorkerGlobalScope( |
181 BLINK_FROM_HERE, | 182 BLINK_FROM_HERE, |
182 createCrossThreadTask( | 183 createCrossThreadTask( |
183 &WorkerThreadableLoaderTestHelper::workerCreateLoader, | 184 &WorkerThreadableLoaderTestHelper::workerCreateLoader, |
184 crossThreadUnretained(this), crossThreadUnretained(client), | 185 crossThreadUnretained(this), crossThreadUnretained(client), |
185 crossThreadUnretained(completionEvent.get()), | 186 crossThreadUnretained(completionEvent.get()), |
186 crossOriginRequestPolicy)); | 187 crossOriginRequestPolicy)); |
187 completionEvent->wait(); | 188 completionEvent->wait(); |
188 } | 189 } |
189 | 190 |
190 void startLoader(const ResourceRequest& request) override { | 191 void startLoader(const ResourceRequest& request) override { |
191 std::unique_ptr<WaitableEvent> completionEvent = | 192 std::unique_ptr<WaitableEvent> completionEvent = |
192 makeUnique<WaitableEvent>(); | 193 WTF::makeUnique<WaitableEvent>(); |
193 postTaskToWorkerGlobalScope( | 194 postTaskToWorkerGlobalScope( |
194 BLINK_FROM_HERE, | 195 BLINK_FROM_HERE, |
195 createCrossThreadTask( | 196 createCrossThreadTask( |
196 &WorkerThreadableLoaderTestHelper::workerStartLoader, | 197 &WorkerThreadableLoaderTestHelper::workerStartLoader, |
197 crossThreadUnretained(this), | 198 crossThreadUnretained(this), |
198 crossThreadUnretained(completionEvent.get()), request)); | 199 crossThreadUnretained(completionEvent.get()), request)); |
199 completionEvent->wait(); | 200 completionEvent->wait(); |
200 } | 201 } |
201 | 202 |
202 // Must be called on the worker thread. | 203 // Must be called on the worker thread. |
(...skipping 16 matching lines...) Expand all Loading... |
219 DCHECK(m_workerThread->isCurrentThread()); | 220 DCHECK(m_workerThread->isCurrentThread()); |
220 m_loader = nullptr; | 221 m_loader = nullptr; |
221 } | 222 } |
222 | 223 |
223 Checkpoint& checkpoint() override { return m_checkpoint; } | 224 Checkpoint& checkpoint() override { return m_checkpoint; } |
224 | 225 |
225 void callCheckpoint(int n) override { | 226 void callCheckpoint(int n) override { |
226 testing::runPendingTasks(); | 227 testing::runPendingTasks(); |
227 | 228 |
228 std::unique_ptr<WaitableEvent> completionEvent = | 229 std::unique_ptr<WaitableEvent> completionEvent = |
229 makeUnique<WaitableEvent>(); | 230 WTF::makeUnique<WaitableEvent>(); |
230 postTaskToWorkerGlobalScope( | 231 postTaskToWorkerGlobalScope( |
231 BLINK_FROM_HERE, | 232 BLINK_FROM_HERE, |
232 createCrossThreadTask( | 233 createCrossThreadTask( |
233 &WorkerThreadableLoaderTestHelper::workerCallCheckpoint, | 234 &WorkerThreadableLoaderTestHelper::workerCallCheckpoint, |
234 crossThreadUnretained(this), | 235 crossThreadUnretained(this), |
235 crossThreadUnretained(completionEvent.get()), n)); | 236 crossThreadUnretained(completionEvent.get()), n)); |
236 completionEvent->wait(); | 237 completionEvent->wait(); |
237 } | 238 } |
238 | 239 |
239 void onSetUp() override { | 240 void onSetUp() override { |
240 m_mockWorkerReportingProxy = makeUnique<MockWorkerReportingProxy>(); | 241 m_mockWorkerReportingProxy = WTF::makeUnique<MockWorkerReportingProxy>(); |
241 m_securityOrigin = document().getSecurityOrigin(); | 242 m_securityOrigin = document().getSecurityOrigin(); |
242 m_workerThread = wrapUnique(new WorkerThreadForTest( | 243 m_workerThread = WTF::wrapUnique(new WorkerThreadForTest( |
243 this, *m_mockWorkerReportingProxy, m_threadHeapMode)); | 244 this, *m_mockWorkerReportingProxy, m_threadHeapMode)); |
244 | 245 |
245 expectWorkerLifetimeReportingCalls(); | 246 expectWorkerLifetimeReportingCalls(); |
246 m_workerThread->startWithSourceCode(m_securityOrigin.get(), | 247 m_workerThread->startWithSourceCode(m_securityOrigin.get(), |
247 "//fake source code"); | 248 "//fake source code"); |
248 m_workerThread->waitForInit(); | 249 m_workerThread->waitForInit(); |
249 } | 250 } |
250 | 251 |
251 void onServeRequests() override { testing::runPendingTasks(); } | 252 void onServeRequests() override { testing::runPendingTasks(); } |
252 | 253 |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 CrossThreadPersistent<ThreadableLoader> m_loader; | 349 CrossThreadPersistent<ThreadableLoader> m_loader; |
349 const BlinkGC::ThreadHeapMode m_threadHeapMode; | 350 const BlinkGC::ThreadHeapMode m_threadHeapMode; |
350 }; | 351 }; |
351 | 352 |
352 class ThreadableLoaderTest | 353 class ThreadableLoaderTest |
353 : public ::testing::TestWithParam<ThreadableLoaderToTest> { | 354 : public ::testing::TestWithParam<ThreadableLoaderToTest> { |
354 public: | 355 public: |
355 ThreadableLoaderTest() { | 356 ThreadableLoaderTest() { |
356 switch (GetParam()) { | 357 switch (GetParam()) { |
357 case DocumentThreadableLoaderTest: | 358 case DocumentThreadableLoaderTest: |
358 m_helper = wrapUnique(new DocumentThreadableLoaderTestHelper); | 359 m_helper = WTF::wrapUnique(new DocumentThreadableLoaderTestHelper); |
359 break; | 360 break; |
360 case WorkerThreadableLoaderTest: | 361 case WorkerThreadableLoaderTest: |
361 m_helper = wrapUnique( | 362 m_helper = WTF::wrapUnique( |
362 new WorkerThreadableLoaderTestHelper(BlinkGC::MainThreadHeapMode)); | 363 new WorkerThreadableLoaderTestHelper(BlinkGC::MainThreadHeapMode)); |
363 break; | 364 break; |
364 case PerThreadHeapEnabledWorkerThreadableLoaderTest: | 365 case PerThreadHeapEnabledWorkerThreadableLoaderTest: |
365 m_helper = wrapUnique( | 366 m_helper = WTF::wrapUnique( |
366 new WorkerThreadableLoaderTestHelper(BlinkGC::PerThreadHeapMode)); | 367 new WorkerThreadableLoaderTestHelper(BlinkGC::PerThreadHeapMode)); |
367 break; | 368 break; |
368 } | 369 } |
369 } | 370 } |
370 | 371 |
371 void startLoader(const KURL& url) { | 372 void startLoader(const KURL& url) { |
372 ResourceRequest request(url); | 373 ResourceRequest request(url); |
373 request.setRequestContext(WebURLRequest::RequestContextObject); | 374 request.setRequestContext(WebURLRequest::RequestContextObject); |
374 m_helper->startLoader(request); | 375 m_helper->startLoader(request); |
375 } | 376 } |
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
886 // test is not saying that didFailAccessControlCheck should be dispatched | 887 // test is not saying that didFailAccessControlCheck should be dispatched |
887 // synchronously, but is saying that even when a response is served | 888 // synchronously, but is saying that even when a response is served |
888 // synchronously it should not lead to a crash. | 889 // synchronously it should not lead to a crash. |
889 startLoader(KURL(KURL(), "about:blank")); | 890 startLoader(KURL(KURL(), "about:blank")); |
890 callCheckpoint(2); | 891 callCheckpoint(2); |
891 } | 892 } |
892 | 893 |
893 } // namespace | 894 } // namespace |
894 | 895 |
895 } // namespace blink | 896 } // namespace blink |
OLD | NEW |