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

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

Issue 2335063003: Prepare DedicatedWorker for per thread heap (Closed)
Patch Set: fix Created 4 years, 3 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/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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 return !error.isCancellation(); 80 return !error.isCancellation();
81 } 81 }
82 82
83 KURL successURL() { return KURL(KURL(), "http://example.com/success"); } 83 KURL successURL() { return KURL(KURL(), "http://example.com/success"); }
84 KURL errorURL() { return KURL(KURL(), "http://example.com/error"); } 84 KURL errorURL() { return KURL(KURL(), "http://example.com/error"); }
85 KURL redirectURL() { return KURL(KURL(), "http://example.com/redirect"); } 85 KURL redirectURL() { return KURL(KURL(), "http://example.com/redirect"); }
86 KURL redirectLoopURL() { return KURL(KURL(), "http://example.com/loop"); } 86 KURL redirectLoopURL() { return KURL(KURL(), "http://example.com/loop"); }
87 87
88 enum ThreadableLoaderToTest { 88 enum ThreadableLoaderToTest {
89 DocumentThreadableLoaderTest, 89 DocumentThreadableLoaderTest,
90 WorkerThreadableLoaderTest 90 WorkerThreadableLoaderTest,
91 PerThreadHeapEnabledWorkerThreadableLoaderTest
91 }; 92 };
92 93
93 class ThreadableLoaderTestHelper { 94 class ThreadableLoaderTestHelper {
94 public: 95 public:
95 virtual ~ThreadableLoaderTestHelper() { } 96 virtual ~ThreadableLoaderTestHelper() { }
96 97
97 virtual void createLoader(ThreadableLoaderClient*, CrossOriginRequestPolicy) = 0; 98 virtual void createLoader(ThreadableLoaderClient*, CrossOriginRequestPolicy) = 0;
98 virtual void startLoader(const ResourceRequest&) = 0; 99 virtual void startLoader(const ResourceRequest&) = 0;
99 virtual void cancelLoader() = 0; 100 virtual void cancelLoader() = 0;
100 virtual void cancelAndClearLoader() = 0; 101 virtual void cancelAndClearLoader() = 0;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 private: 156 private:
156 Document& document() { return m_dummyPageHolder->document(); } 157 Document& document() { return m_dummyPageHolder->document(); }
157 158
158 std::unique_ptr<DummyPageHolder> m_dummyPageHolder; 159 std::unique_ptr<DummyPageHolder> m_dummyPageHolder;
159 Checkpoint m_checkpoint; 160 Checkpoint m_checkpoint;
160 Persistent<DocumentThreadableLoader> m_loader; 161 Persistent<DocumentThreadableLoader> m_loader;
161 }; 162 };
162 163
163 class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper, publ ic WorkerLoaderProxyProvider { 164 class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper, publ ic WorkerLoaderProxyProvider {
164 public: 165 public:
165 WorkerThreadableLoaderTestHelper() 166 WorkerThreadableLoaderTestHelper(ThreadHeapMode threadHeapMode)
166 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))) 167 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1)))
168 , m_threadHeapMode(threadHeapMode)
167 { 169 {
168 } 170 }
169 171
170 void createLoader(ThreadableLoaderClient* client, CrossOriginRequestPolicy c rossOriginRequestPolicy) override 172 void createLoader(ThreadableLoaderClient* client, CrossOriginRequestPolicy c rossOriginRequestPolicy) override
171 { 173 {
172 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event()); 174 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event());
173 postTaskToWorkerGlobalScope(BLINK_FROM_HERE, 175 postTaskToWorkerGlobalScope(BLINK_FROM_HERE,
174 createCrossThreadTask( 176 createCrossThreadTask(
175 &WorkerThreadableLoaderTestHelper::workerCreateLoader, 177 &WorkerThreadableLoaderTestHelper::workerCreateLoader,
176 crossThreadUnretained(this), 178 crossThreadUnretained(this),
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 n)); 236 n));
235 completionEvent->wait(); 237 completionEvent->wait();
236 } 238 }
237 239
238 void onSetUp() override 240 void onSetUp() override
239 { 241 {
240 m_mockWorkerReportingProxy = wrapUnique(new MockWorkerReportingProxy()); 242 m_mockWorkerReportingProxy = wrapUnique(new MockWorkerReportingProxy());
241 m_securityOrigin = document().getSecurityOrigin(); 243 m_securityOrigin = document().getSecurityOrigin();
242 m_workerThread = wrapUnique(new WorkerThreadForTest( 244 m_workerThread = wrapUnique(new WorkerThreadForTest(
243 this, 245 this,
244 *m_mockWorkerReportingProxy)); 246 *m_mockWorkerReportingProxy,
247 m_threadHeapMode));
245 248
246 expectWorkerLifetimeReportingCalls(); 249 expectWorkerLifetimeReportingCalls();
247 m_workerThread->startWithSourceCode(m_securityOrigin.get(), "//fake sour ce code"); 250 m_workerThread->startWithSourceCode(m_securityOrigin.get(), "//fake sour ce code");
248 m_workerThread->waitForInit(); 251 m_workerThread->waitForInit();
249 } 252 }
250 253
251 void onServeRequests() override 254 void onServeRequests() override
252 { 255 {
253 testing::runPendingTasks(); 256 testing::runPendingTasks();
254 } 257 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 } 335 }
333 336
334 RefPtr<SecurityOrigin> m_securityOrigin; 337 RefPtr<SecurityOrigin> m_securityOrigin;
335 std::unique_ptr<MockWorkerReportingProxy> m_mockWorkerReportingProxy; 338 std::unique_ptr<MockWorkerReportingProxy> m_mockWorkerReportingProxy;
336 std::unique_ptr<WorkerThreadForTest> m_workerThread; 339 std::unique_ptr<WorkerThreadForTest> m_workerThread;
337 340
338 std::unique_ptr<DummyPageHolder> m_dummyPageHolder; 341 std::unique_ptr<DummyPageHolder> m_dummyPageHolder;
339 Checkpoint m_checkpoint; 342 Checkpoint m_checkpoint;
340 // |m_loader| must be touched only from the worker thread only. 343 // |m_loader| must be touched only from the worker thread only.
341 CrossThreadPersistent<ThreadableLoader> m_loader; 344 CrossThreadPersistent<ThreadableLoader> m_loader;
345 ThreadHeapMode m_threadHeapMode;
nhiroki 2016/09/21 05:32:59 Can you add 'const' for clarifying that the heap m
keishi 2016/09/21 09:16:11 Done.
342 }; 346 };
343 347
344 class ThreadableLoaderTest : public ::testing::TestWithParam<ThreadableLoaderToT est> { 348 class ThreadableLoaderTest : public ::testing::TestWithParam<ThreadableLoaderToT est> {
345 public: 349 public:
346 ThreadableLoaderTest() 350 ThreadableLoaderTest()
347 { 351 {
348 switch (GetParam()) { 352 switch (GetParam()) {
349 case DocumentThreadableLoaderTest: 353 case DocumentThreadableLoaderTest:
350 m_helper = wrapUnique(new DocumentThreadableLoaderTestHelper); 354 m_helper = wrapUnique(new DocumentThreadableLoaderTestHelper);
351 break; 355 break;
352 case WorkerThreadableLoaderTest: 356 case WorkerThreadableLoaderTest:
353 m_helper = wrapUnique(new WorkerThreadableLoaderTestHelper); 357 m_helper = wrapUnique(new WorkerThreadableLoaderTestHelper(MainThrea dHeapMode));
358 break;
359 case PerThreadHeapEnabledWorkerThreadableLoaderTest:
360 m_helper = wrapUnique(new WorkerThreadableLoaderTestHelper(PerThread HeapMode));
354 break; 361 break;
355 } 362 }
356 } 363 }
357 364
358 void startLoader(const KURL& url) 365 void startLoader(const KURL& url)
359 { 366 {
360 ResourceRequest request(url); 367 ResourceRequest request(url);
361 request.setRequestContext(WebURLRequest::RequestContextObject); 368 request.setRequestContext(WebURLRequest::RequestContextObject);
362 m_helper->startLoader(request); 369 m_helper->startLoader(request);
363 } 370 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 }; 457 };
451 458
452 INSTANTIATE_TEST_CASE_P(Document, 459 INSTANTIATE_TEST_CASE_P(Document,
453 ThreadableLoaderTest, 460 ThreadableLoaderTest,
454 ::testing::Values(DocumentThreadableLoaderTest)); 461 ::testing::Values(DocumentThreadableLoaderTest));
455 462
456 INSTANTIATE_TEST_CASE_P(Worker, 463 INSTANTIATE_TEST_CASE_P(Worker,
457 ThreadableLoaderTest, 464 ThreadableLoaderTest,
458 ::testing::Values(WorkerThreadableLoaderTest)); 465 ::testing::Values(WorkerThreadableLoaderTest));
459 466
467 INSTANTIATE_TEST_CASE_P(PerThreadHeapEnabledWorker,
468 ThreadableLoaderTest,
469 ::testing::Values(PerThreadHeapEnabledWorkerThreadableLoaderTest));
470
460 TEST_P(ThreadableLoaderTest, StartAndStop) 471 TEST_P(ThreadableLoaderTest, StartAndStop)
461 { 472 {
462 } 473 }
463 474
464 TEST_P(ThreadableLoaderTest, CancelAfterStart) 475 TEST_P(ThreadableLoaderTest, CancelAfterStart)
465 { 476 {
466 InSequence s; 477 InSequence s;
467 EXPECT_CALL(checkpoint(), Call(1)); 478 EXPECT_CALL(checkpoint(), Call(1));
468 createLoader(); 479 createLoader();
469 callCheckpoint(1); 480 callCheckpoint(1);
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 // test is not saying that didFailAccessControlCheck should be dispatched 882 // test is not saying that didFailAccessControlCheck should be dispatched
872 // synchronously, but is saying that even when a response is served 883 // synchronously, but is saying that even when a response is served
873 // synchronously it should not lead to a crash. 884 // synchronously it should not lead to a crash.
874 startLoader(KURL(KURL(), "about:blank")); 885 startLoader(KURL(KURL(), "about:blank"));
875 callCheckpoint(2); 886 callCheckpoint(2);
876 } 887 }
877 888
878 } // namespace 889 } // namespace
879 890
880 } // namespace blink 891 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698