Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: third_party/WebKit/Source/core/loader/ThreadableLoaderTest.cpp

Issue 2080623002: Revert "Remove OwnPtr from Blink." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/CrossThreadTask.h" 7 #include "core/dom/CrossThreadTask.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 12 matching lines...) Expand all
23 #include "platform/testing/UnitTestHelpers.h" 23 #include "platform/testing/UnitTestHelpers.h"
24 #include "platform/weborigin/KURL.h" 24 #include "platform/weborigin/KURL.h"
25 #include "platform/weborigin/SecurityOrigin.h" 25 #include "platform/weborigin/SecurityOrigin.h"
26 #include "public/platform/Platform.h" 26 #include "public/platform/Platform.h"
27 #include "public/platform/WebURLLoadTiming.h" 27 #include "public/platform/WebURLLoadTiming.h"
28 #include "public/platform/WebURLLoaderMockFactory.h" 28 #include "public/platform/WebURLLoaderMockFactory.h"
29 #include "public/platform/WebURLResponse.h" 29 #include "public/platform/WebURLResponse.h"
30 #include "testing/gmock/include/gmock/gmock.h" 30 #include "testing/gmock/include/gmock/gmock.h"
31 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
32 #include "wtf/Assertions.h" 32 #include "wtf/Assertions.h"
33 #include "wtf/PtrUtil.h" 33 #include "wtf/OwnPtr.h"
34 #include "wtf/PassOwnPtr.h"
34 #include "wtf/RefPtr.h" 35 #include "wtf/RefPtr.h"
35 #include <memory>
36 36
37 namespace blink { 37 namespace blink {
38 38
39 namespace { 39 namespace {
40 40
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 PassOwnPtr<MockThreadableLoaderClient> create()
51 { 51 {
52 return wrapUnique(new ::testing::StrictMock<MockThreadableLoaderClient>) ; 52 return adoptPtr(new ::testing::StrictMock<MockThreadableLoaderClient>);
53 } 53 }
54 MOCK_METHOD2(didSendData, void(unsigned long long, unsigned long long)); 54 MOCK_METHOD2(didSendData, void(unsigned long long, unsigned long long));
55 MOCK_METHOD3(didReceiveResponseMock, void(unsigned long, const ResourceRespo nse&, WebDataConsumerHandle*)); 55 MOCK_METHOD3(didReceiveResponseMock, void(unsigned long, const ResourceRespo nse&, WebDataConsumerHandle*));
56 void didReceiveResponse(unsigned long identifier, const ResourceResponse& re sponse, std::unique_ptr<WebDataConsumerHandle> handle) 56 void didReceiveResponse(unsigned long identifier, const ResourceResponse& re sponse, PassOwnPtr<WebDataConsumerHandle> handle)
57 { 57 {
58 didReceiveResponseMock(identifier, response, handle.get()); 58 didReceiveResponseMock(identifier, response, handle.get());
59 } 59 }
60 MOCK_METHOD2(didReceiveData, void(const char*, unsigned)); 60 MOCK_METHOD2(didReceiveData, void(const char*, unsigned));
61 MOCK_METHOD2(didReceiveCachedMetadata, void(const char*, int)); 61 MOCK_METHOD2(didReceiveCachedMetadata, void(const char*, int));
62 MOCK_METHOD2(didFinishLoading, void(unsigned long, double)); 62 MOCK_METHOD2(didFinishLoading, void(unsigned long, double));
63 MOCK_METHOD1(didFail, void(const ResourceError&)); 63 MOCK_METHOD1(didFail, void(const ResourceError&));
64 MOCK_METHOD1(didFailAccessControlCheck, void(const ResourceError&)); 64 MOCK_METHOD1(didFailAccessControlCheck, void(const ResourceError&));
65 MOCK_METHOD0(didFailRedirectCheck, void()); 65 MOCK_METHOD0(didFailRedirectCheck, void());
66 MOCK_METHOD1(didReceiveResourceTiming, void(const ResourceTimingInfo&)); 66 MOCK_METHOD1(didReceiveResourceTiming, void(const ResourceTimingInfo&));
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 } 139 }
140 140
141 void onTearDown() override 141 void onTearDown() override
142 { 142 {
143 m_loader.reset(); 143 m_loader.reset();
144 } 144 }
145 145
146 private: 146 private:
147 Document& document() { return m_dummyPageHolder->document(); } 147 Document& document() { return m_dummyPageHolder->document(); }
148 148
149 std::unique_ptr<DummyPageHolder> m_dummyPageHolder; 149 OwnPtr<DummyPageHolder> m_dummyPageHolder;
150 Checkpoint m_checkpoint; 150 Checkpoint m_checkpoint;
151 std::unique_ptr<DocumentThreadableLoader> m_loader; 151 OwnPtr<DocumentThreadableLoader> m_loader;
152 }; 152 };
153 153
154 class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper, publ ic WorkerLoaderProxyProvider { 154 class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper, publ ic WorkerLoaderProxyProvider {
155 public: 155 public:
156 WorkerThreadableLoaderTestHelper() 156 WorkerThreadableLoaderTestHelper()
157 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))) 157 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1)))
158 { 158 {
159 } 159 }
160 160
161 void createLoader(ThreadableLoaderClient* client, CrossOriginRequestPolicy c rossOriginRequestPolicy) override 161 void createLoader(ThreadableLoaderClient* client, CrossOriginRequestPolicy c rossOriginRequestPolicy) override
162 { 162 {
163 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event()); 163 OwnPtr<WaitableEvent> completionEvent = adoptPtr(new WaitableEvent());
164 postTaskToWorkerGlobalScope(createCrossThreadTask( 164 postTaskToWorkerGlobalScope(createCrossThreadTask(
165 &WorkerThreadableLoaderTestHelper::workerCreateLoader, 165 &WorkerThreadableLoaderTestHelper::workerCreateLoader,
166 AllowCrossThreadAccess(this), 166 AllowCrossThreadAccess(this),
167 AllowCrossThreadAccess(client), 167 AllowCrossThreadAccess(client),
168 AllowCrossThreadAccess(completionEvent.get()), 168 AllowCrossThreadAccess(completionEvent.get()),
169 crossOriginRequestPolicy)); 169 crossOriginRequestPolicy));
170 completionEvent->wait(); 170 completionEvent->wait();
171 } 171 }
172 172
173 void startLoader(const ResourceRequest& request) override 173 void startLoader(const ResourceRequest& request) override
174 { 174 {
175 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event()); 175 OwnPtr<WaitableEvent> completionEvent = adoptPtr(new WaitableEvent());
176 postTaskToWorkerGlobalScope(createCrossThreadTask( 176 postTaskToWorkerGlobalScope(createCrossThreadTask(
177 &WorkerThreadableLoaderTestHelper::workerStartLoader, 177 &WorkerThreadableLoaderTestHelper::workerStartLoader,
178 AllowCrossThreadAccess(this), 178 AllowCrossThreadAccess(this),
179 AllowCrossThreadAccess(completionEvent.get()), 179 AllowCrossThreadAccess(completionEvent.get()),
180 request)); 180 request));
181 completionEvent->wait(); 181 completionEvent->wait();
182 } 182 }
183 183
184 // Must be called on the worker thread. 184 // Must be called on the worker thread.
185 void cancelLoader() override 185 void cancelLoader() override
(...skipping 13 matching lines...) Expand all
199 199
200 Checkpoint& checkpoint() override 200 Checkpoint& checkpoint() override
201 { 201 {
202 return m_checkpoint; 202 return m_checkpoint;
203 } 203 }
204 204
205 void callCheckpoint(int n) override 205 void callCheckpoint(int n) override
206 { 206 {
207 testing::runPendingTasks(); 207 testing::runPendingTasks();
208 208
209 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event()); 209 OwnPtr<WaitableEvent> completionEvent = adoptPtr(new WaitableEvent());
210 postTaskToWorkerGlobalScope(createCrossThreadTask( 210 postTaskToWorkerGlobalScope(createCrossThreadTask(
211 &WorkerThreadableLoaderTestHelper::workerCallCheckpoint, 211 &WorkerThreadableLoaderTestHelper::workerCallCheckpoint,
212 AllowCrossThreadAccess(this), 212 AllowCrossThreadAccess(this),
213 AllowCrossThreadAccess(completionEvent.get()), 213 AllowCrossThreadAccess(completionEvent.get()),
214 n)); 214 n));
215 completionEvent->wait(); 215 completionEvent->wait();
216 } 216 }
217 217
218 void onSetUp() override 218 void onSetUp() override
219 { 219 {
220 m_mockWorkerReportingProxy = wrapUnique(new MockWorkerReportingProxy()); 220 m_mockWorkerReportingProxy = adoptPtr(new MockWorkerReportingProxy());
221 m_securityOrigin = document().getSecurityOrigin(); 221 m_securityOrigin = document().getSecurityOrigin();
222 m_workerThread = wrapUnique(new WorkerThreadForTest( 222 m_workerThread = adoptPtr(new WorkerThreadForTest(
223 this, 223 this,
224 *m_mockWorkerReportingProxy)); 224 *m_mockWorkerReportingProxy));
225 225
226 expectWorkerLifetimeReportingCalls(); 226 expectWorkerLifetimeReportingCalls();
227 m_workerThread->startWithSourceCode(m_securityOrigin.get(), "//fake sour ce code"); 227 m_workerThread->startWithSourceCode(m_securityOrigin.get(), "//fake sour ce code");
228 m_workerThread->waitForInit(); 228 m_workerThread->waitForInit();
229 } 229 }
230 230
231 void onServeRequests() override 231 void onServeRequests() override
232 { 232 {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 // ThreadableLoader::create() determines whether it should create 269 // ThreadableLoader::create() determines whether it should create
270 // a DocumentThreadableLoader or WorkerThreadableLoader based on 270 // a DocumentThreadableLoader or WorkerThreadableLoader based on
271 // isWorkerGlobalScope(). 271 // isWorkerGlobalScope().
272 ASSERT(m_workerThread->workerGlobalScope()->isWorkerGlobalScope()); 272 ASSERT(m_workerThread->workerGlobalScope()->isWorkerGlobalScope());
273 273
274 m_loader = ThreadableLoader::create(*m_workerThread->workerGlobalScope() , client, options, resourceLoaderOptions); 274 m_loader = ThreadableLoader::create(*m_workerThread->workerGlobalScope() , client, options, resourceLoaderOptions);
275 ASSERT(m_loader); 275 ASSERT(m_loader);
276 event->signal(); 276 event->signal();
277 } 277 }
278 278
279 void workerStartLoader(WaitableEvent* event, std::unique_ptr<CrossThreadReso urceRequestData> requestData) 279 void workerStartLoader(WaitableEvent* event, PassOwnPtr<CrossThreadResourceR equestData> requestData)
280 { 280 {
281 ASSERT(m_workerThread); 281 ASSERT(m_workerThread);
282 ASSERT(m_workerThread->isCurrentThread()); 282 ASSERT(m_workerThread->isCurrentThread());
283 283
284 ResourceRequest request(requestData.get()); 284 ResourceRequest request(requestData.get());
285 m_loader->start(request); 285 m_loader->start(request);
286 event->signal(); 286 event->signal();
287 } 287 }
288 288
289 void workerCallCheckpoint(WaitableEvent* event, int n) 289 void workerCallCheckpoint(WaitableEvent* event, int n)
(...skipping 13 matching lines...) Expand all
303 } 303 }
304 304
305 bool postTaskToWorkerGlobalScope(std::unique_ptr<ExecutionContextTask> task) override 305 bool postTaskToWorkerGlobalScope(std::unique_ptr<ExecutionContextTask> task) override
306 { 306 {
307 ASSERT(m_workerThread); 307 ASSERT(m_workerThread);
308 m_workerThread->postTask(BLINK_FROM_HERE, std::move(task)); 308 m_workerThread->postTask(BLINK_FROM_HERE, std::move(task));
309 return true; 309 return true;
310 } 310 }
311 311
312 RefPtr<SecurityOrigin> m_securityOrigin; 312 RefPtr<SecurityOrigin> m_securityOrigin;
313 std::unique_ptr<MockWorkerReportingProxy> m_mockWorkerReportingProxy; 313 OwnPtr<MockWorkerReportingProxy> m_mockWorkerReportingProxy;
314 std::unique_ptr<WorkerThreadForTest> m_workerThread; 314 OwnPtr<WorkerThreadForTest> m_workerThread;
315 315
316 std::unique_ptr<DummyPageHolder> m_dummyPageHolder; 316 OwnPtr<DummyPageHolder> m_dummyPageHolder;
317 Checkpoint m_checkpoint; 317 Checkpoint m_checkpoint;
318 // |m_loader| must be touched only from the worker thread only. 318 // |m_loader| must be touched only from the worker thread only.
319 std::unique_ptr<ThreadableLoader> m_loader; 319 OwnPtr<ThreadableLoader> m_loader;
320 }; 320 };
321 321
322 class ThreadableLoaderTest : public ::testing::TestWithParam<ThreadableLoaderToT est> { 322 class ThreadableLoaderTest : public ::testing::TestWithParam<ThreadableLoaderToT est> {
323 public: 323 public:
324 ThreadableLoaderTest() 324 ThreadableLoaderTest()
325 { 325 {
326 switch (GetParam()) { 326 switch (GetParam()) {
327 case DocumentThreadableLoaderTest: 327 case DocumentThreadableLoaderTest:
328 m_helper = wrapUnique(new DocumentThreadableLoaderTestHelper); 328 m_helper = adoptPtr(new DocumentThreadableLoaderTestHelper);
329 break; 329 break;
330 case WorkerThreadableLoaderTest: 330 case WorkerThreadableLoaderTest:
331 m_helper = wrapUnique(new WorkerThreadableLoaderTestHelper); 331 m_helper = adoptPtr(new WorkerThreadableLoaderTestHelper);
332 break; 332 break;
333 } 333 }
334 } 334 }
335 335
336 void startLoader(const KURL& url) 336 void startLoader(const KURL& url)
337 { 337 {
338 ResourceRequest request(url); 338 ResourceRequest request(url);
339 request.setRequestContext(WebURLRequest::RequestContextObject); 339 request.setRequestContext(WebURLRequest::RequestContextObject);
340 m_helper->startLoader(request); 340 m_helper->startLoader(request);
341 } 341 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 response.initialize(); 417 response.initialize();
418 response.setURL(url); 418 response.setURL(url);
419 response.setHTTPStatusCode(301); 419 response.setHTTPStatusCode(301);
420 response.setLoadTiming(timing); 420 response.setLoadTiming(timing);
421 response.addHTTPHeaderField("Location", redirectLoopURL().getString()); 421 response.addHTTPHeaderField("Location", redirectLoopURL().getString());
422 response.addHTTPHeaderField("Access-Control-Allow-Origin", "null"); 422 response.addHTTPHeaderField("Access-Control-Allow-Origin", "null");
423 423
424 URLTestHelpers::registerMockedURLLoadWithCustomResponse(url, "fox-null-t erminated.html", "", response); 424 URLTestHelpers::registerMockedURLLoadWithCustomResponse(url, "fox-null-t erminated.html", "", response);
425 } 425 }
426 426
427 std::unique_ptr<MockThreadableLoaderClient> m_client; 427 OwnPtr<MockThreadableLoaderClient> m_client;
428 std::unique_ptr<ThreadableLoaderTestHelper> m_helper; 428 OwnPtr<ThreadableLoaderTestHelper> m_helper;
429 }; 429 };
430 430
431 INSTANTIATE_TEST_CASE_P(Document, 431 INSTANTIATE_TEST_CASE_P(Document,
432 ThreadableLoaderTest, 432 ThreadableLoaderTest,
433 ::testing::Values(DocumentThreadableLoaderTest)); 433 ::testing::Values(DocumentThreadableLoaderTest));
434 434
435 INSTANTIATE_TEST_CASE_P(Worker, 435 INSTANTIATE_TEST_CASE_P(Worker,
436 ThreadableLoaderTest, 436 ThreadableLoaderTest,
437 ::testing::Values(WorkerThreadableLoaderTest)); 437 ::testing::Values(WorkerThreadableLoaderTest));
438 438
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 EXPECT_CALL(*client(), didFailRedirectCheck()).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::clearLoader)); 833 EXPECT_CALL(*client(), didFailRedirectCheck()).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::clearLoader));
834 834
835 startLoader(redirectLoopURL()); 835 startLoader(redirectLoopURL());
836 callCheckpoint(2); 836 callCheckpoint(2);
837 serveRequests(); 837 serveRequests();
838 } 838 }
839 839
840 } // namespace 840 } // namespace
841 841
842 } // namespace blink 842 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698