| 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/inspector/ConsoleMessageStorage.h" | 5 #include "core/inspector/ConsoleMessageStorage.h" |
| 6 #include "core/testing/DummyPageHolder.h" | 6 #include "core/testing/DummyPageHolder.h" |
| 7 #include "core/workers/ThreadedWorkletGlobalScope.h" | 7 #include "core/workers/ThreadedWorkletGlobalScope.h" |
| 8 #include "core/workers/ThreadedWorkletMessagingProxy.h" | 8 #include "core/workers/ThreadedWorkletMessagingProxy.h" |
| 9 #include "core/workers/ThreadedWorkletObjectProxy.h" | 9 #include "core/workers/ThreadedWorkletObjectProxy.h" |
| 10 #include "core/workers/WorkerInspectorProxy.h" | 10 #include "core/workers/WorkerInspectorProxy.h" |
| 11 #include "core/workers/WorkerThread.h" | 11 #include "core/workers/WorkerThread.h" |
| 12 #include "core/workers/WorkerThreadStartupData.h" | 12 #include "core/workers/WorkerThreadStartupData.h" |
| 13 #include "core/workers/WorkerThreadTestHelper.h" | 13 #include "core/workers/WorkerThreadTestHelper.h" |
| 14 #include "core/workers/WorkletThreadHolder.h" | 14 #include "core/workers/WorkletThreadHolder.h" |
| 15 #include "platform/CrossThreadFunctional.h" | 15 #include "platform/CrossThreadFunctional.h" |
| 16 #include "platform/testing/UnitTestHelpers.h" | 16 #include "platform/testing/UnitTestHelpers.h" |
| 17 #include "platform/weborigin/SecurityOrigin.h" | 17 #include "platform/weborigin/SecurityOrigin.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 19 |
| 20 namespace blink { | 20 namespace blink { |
| 21 | 21 |
| 22 class ThreadedWorkletThreadForTest : public WorkerThread { | 22 class ThreadedWorkletThreadForTest : public WorkerThread { |
| 23 public: | 23 public: |
| 24 ThreadedWorkletThreadForTest( | 24 ThreadedWorkletThreadForTest( |
| 25 WorkerLoaderProxyProvider* workerLoaderProxyProvider, | 25 WorkerLoaderProxyProvider* workerLoaderProxyProvider, |
| 26 WorkerReportingProxy& workerReportingProxy, | 26 WorkerReportingProxy& workerReportingProxy) |
| 27 ParentFrameTaskRunners* parentFrameTaskRunners) | |
| 28 : WorkerThread(WorkerLoaderProxy::create(workerLoaderProxyProvider), | 27 : WorkerThread(WorkerLoaderProxy::create(workerLoaderProxyProvider), |
| 29 workerReportingProxy, | 28 workerReportingProxy) {} |
| 30 parentFrameTaskRunners) {} | |
| 31 ~ThreadedWorkletThreadForTest() override{}; | 29 ~ThreadedWorkletThreadForTest() override{}; |
| 32 | 30 |
| 33 WorkerBackingThread& workerBackingThread() override { | 31 WorkerBackingThread& workerBackingThread() override { |
| 34 auto workletThreadHolder = | 32 auto workletThreadHolder = |
| 35 WorkletThreadHolder<ThreadedWorkletThreadForTest>::getInstance(); | 33 WorkletThreadHolder<ThreadedWorkletThreadForTest>::getInstance(); |
| 36 DCHECK(workletThreadHolder); | 34 DCHECK(workletThreadHolder); |
| 37 return *workletThreadHolder->thread(); | 35 return *workletThreadHolder->thread(); |
| 38 } | 36 } |
| 39 | 37 |
| 40 void clearWorkerBackingThread() override {} | 38 void clearWorkerBackingThread() override {} |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 }; | 86 }; |
| 89 | 87 |
| 90 class ThreadedWorkletMessagingProxyForTest | 88 class ThreadedWorkletMessagingProxyForTest |
| 91 : public ThreadedWorkletMessagingProxy { | 89 : public ThreadedWorkletMessagingProxy { |
| 92 public: | 90 public: |
| 93 ThreadedWorkletMessagingProxyForTest(ExecutionContext* executionContext) | 91 ThreadedWorkletMessagingProxyForTest(ExecutionContext* executionContext) |
| 94 : ThreadedWorkletMessagingProxy(executionContext) { | 92 : ThreadedWorkletMessagingProxy(executionContext) { |
| 95 m_mockWorkerLoaderProxyProvider = | 93 m_mockWorkerLoaderProxyProvider = |
| 96 WTF::makeUnique<MockWorkerLoaderProxyProvider>(); | 94 WTF::makeUnique<MockWorkerLoaderProxyProvider>(); |
| 97 m_workerThread = WTF::makeUnique<ThreadedWorkletThreadForTest>( | 95 m_workerThread = WTF::makeUnique<ThreadedWorkletThreadForTest>( |
| 98 m_mockWorkerLoaderProxyProvider.get(), workletObjectProxy(), | 96 m_mockWorkerLoaderProxyProvider.get(), workletObjectProxy()); |
| 99 getParentFrameTaskRunners()); | |
| 100 ThreadedWorkletThreadForTest::ensureSharedBackingThread(); | 97 ThreadedWorkletThreadForTest::ensureSharedBackingThread(); |
| 101 } | 98 } |
| 102 | 99 |
| 103 ~ThreadedWorkletMessagingProxyForTest() override { | 100 ~ThreadedWorkletMessagingProxyForTest() override { |
| 104 m_workerThread->workerLoaderProxy()->detachProvider( | 101 m_workerThread->workerLoaderProxy()->detachProvider( |
| 105 m_mockWorkerLoaderProxyProvider.get()); | 102 m_mockWorkerLoaderProxyProvider.get()); |
| 106 m_workerThread->terminateAndWait(); | 103 m_workerThread->terminateAndWait(); |
| 107 ThreadedWorkletThreadForTest::clearSharedBackingThread(); | 104 ThreadedWorkletThreadForTest::clearSharedBackingThread(); |
| 108 }; | 105 }; |
| 109 | 106 |
| 110 void start() { | 107 void start() { |
| 111 KURL scriptURL(ParsedURLString, "http://fake.url/"); | 108 KURL scriptURL(ParsedURLString, "http://fake.url/"); |
| 112 std::unique_ptr<Vector<char>> cachedMetaData = nullptr; | 109 std::unique_ptr<Vector<char>> cachedMetaData = nullptr; |
| 113 Vector<CSPHeaderAndType> contentSecurityPolicyHeaders; | 110 Vector<CSPHeaderAndType> contentSecurityPolicyHeaders; |
| 114 String referrerPolicy = ""; | 111 String referrerPolicy = ""; |
| 115 m_securityOrigin = SecurityOrigin::create(scriptURL); | 112 m_securityOrigin = SecurityOrigin::create(scriptURL); |
| 116 WorkerClients* workerClients = nullptr; | 113 WorkerClients* workerClients = nullptr; |
| 117 Vector<String> originTrialTokens; | 114 Vector<String> originTrialTokens; |
| 118 std::unique_ptr<WorkerSettings> workerSettings = nullptr; | 115 std::unique_ptr<WorkerSettings> workerSettings = nullptr; |
| 119 m_workerThread->start(WorkerThreadStartupData::create( | 116 m_workerThread->start( |
| 120 scriptURL, "fake user agent", "// fake source code", | 117 WorkerThreadStartupData::create( |
| 121 std::move(cachedMetaData), DontPauseWorkerGlobalScopeOnStart, | 118 scriptURL, "fake user agent", "// fake source code", |
| 122 &contentSecurityPolicyHeaders, referrerPolicy, m_securityOrigin.get(), | 119 std::move(cachedMetaData), DontPauseWorkerGlobalScopeOnStart, |
| 123 workerClients, WebAddressSpaceLocal, &originTrialTokens, | 120 &contentSecurityPolicyHeaders, referrerPolicy, |
| 124 std::move(workerSettings), WorkerV8Settings::Default())); | 121 m_securityOrigin.get(), workerClients, WebAddressSpaceLocal, |
| 122 &originTrialTokens, std::move(workerSettings), |
| 123 WorkerV8Settings::Default()), |
| 124 getParentFrameTaskRunners()); |
| 125 workerInspectorProxy()->workerThreadCreated( | 125 workerInspectorProxy()->workerThreadCreated( |
| 126 toDocument(getExecutionContext()), m_workerThread.get(), scriptURL); | 126 toDocument(getExecutionContext()), m_workerThread.get(), scriptURL); |
| 127 } | 127 } |
| 128 | 128 |
| 129 protected: | 129 protected: |
| 130 std::unique_ptr<WorkerThread> createWorkerThread(double originTime) final { | 130 std::unique_ptr<WorkerThread> createWorkerThread(double originTime) final { |
| 131 NOTREACHED(); | 131 NOTREACHED(); |
| 132 return nullptr; | 132 return nullptr; |
| 133 } | 133 } |
| 134 | 134 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 EXPECT_FALSE(UseCounter::isCounted(document(), feature2)); | 188 EXPECT_FALSE(UseCounter::isCounted(document(), feature2)); |
| 189 workerThread()->postTask( | 189 workerThread()->postTask( |
| 190 BLINK_FROM_HERE, | 190 BLINK_FROM_HERE, |
| 191 crossThreadBind(&ThreadedWorkletThreadForTest::countDeprecation, | 191 crossThreadBind(&ThreadedWorkletThreadForTest::countDeprecation, |
| 192 crossThreadUnretained(workerThread()), feature2)); | 192 crossThreadUnretained(workerThread()), feature2)); |
| 193 testing::enterRunLoop(); | 193 testing::enterRunLoop(); |
| 194 EXPECT_TRUE(UseCounter::isCounted(document(), feature2)); | 194 EXPECT_TRUE(UseCounter::isCounted(document(), feature2)); |
| 195 } | 195 } |
| 196 | 196 |
| 197 } // namespace blink | 197 } // namespace blink |
| OLD | NEW |