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/events/MessageEvent.h" | 5 #include "core/events/MessageEvent.h" |
6 #include "core/inspector/ConsoleMessageStorage.h" | 6 #include "core/inspector/ConsoleMessageStorage.h" |
7 #include "core/testing/DummyPageHolder.h" | 7 #include "core/testing/DummyPageHolder.h" |
8 #include "core/workers/DedicatedWorkerGlobalScope.h" | 8 #include "core/workers/DedicatedWorkerGlobalScope.h" |
9 #include "core/workers/DedicatedWorkerThread.h" | 9 #include "core/workers/DedicatedWorkerThread.h" |
10 #include "core/workers/InProcessWorkerMessagingProxy.h" | 10 #include "core/workers/InProcessWorkerMessagingProxy.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 const double kDefaultIntervalInSec = 0.01; | 31 const double kDefaultIntervalInSec = 0.01; |
32 const double kNextIntervalInSec = 0.01; | 32 const double kNextIntervalInSec = 0.01; |
33 const double kMaxIntervalInSec = 0.02; | 33 const double kMaxIntervalInSec = 0.02; |
34 | 34 |
35 } // namespace | 35 } // namespace |
36 | 36 |
37 class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread { | 37 class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread { |
38 public: | 38 public: |
39 DedicatedWorkerThreadForTest( | 39 DedicatedWorkerThreadForTest( |
40 WorkerLoaderProxyProvider* workerLoaderProxyProvider, | 40 WorkerLoaderProxyProvider* workerLoaderProxyProvider, |
41 InProcessWorkerObjectProxy& workerObjectProxy, | 41 InProcessWorkerObjectProxy& workerObjectProxy) |
42 ParentFrameTaskRunners* parentFrameTaskRunners) | |
43 : DedicatedWorkerThread( | 42 : DedicatedWorkerThread( |
44 WorkerLoaderProxy::create(workerLoaderProxyProvider), | 43 WorkerLoaderProxy::create(workerLoaderProxyProvider), |
45 workerObjectProxy, | 44 workerObjectProxy, |
46 parentFrameTaskRunners, | |
47 monotonicallyIncreasingTime()) { | 45 monotonicallyIncreasingTime()) { |
48 m_workerBackingThread = WorkerBackingThread::createForTest("Test thread"); | 46 m_workerBackingThread = WorkerBackingThread::createForTest("Test thread"); |
49 } | 47 } |
50 | 48 |
51 WorkerOrWorkletGlobalScope* createWorkerGlobalScope( | 49 WorkerOrWorkletGlobalScope* createWorkerGlobalScope( |
52 std::unique_ptr<WorkerThreadStartupData> startupData) override { | 50 std::unique_ptr<WorkerThreadStartupData> startupData) override { |
53 return new DedicatedWorkerGlobalScope( | 51 return new DedicatedWorkerGlobalScope( |
54 startupData->m_scriptURL, startupData->m_userAgent, this, m_timeOrigin, | 52 startupData->m_scriptURL, startupData->m_userAgent, this, m_timeOrigin, |
55 std::move(startupData->m_starterOriginPrivilegeData), | 53 std::move(startupData->m_starterOriginPrivilegeData), |
56 std::move(startupData->m_workerClients)); | 54 std::move(startupData->m_workerClients)); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 : InProcessWorkerMessagingProxy(executionContext, | 87 : InProcessWorkerMessagingProxy(executionContext, |
90 nullptr /* workerObject */, | 88 nullptr /* workerObject */, |
91 nullptr /* workerClients */) { | 89 nullptr /* workerClients */) { |
92 workerObjectProxy().m_defaultIntervalInSec = kDefaultIntervalInSec; | 90 workerObjectProxy().m_defaultIntervalInSec = kDefaultIntervalInSec; |
93 workerObjectProxy().m_nextIntervalInSec = kNextIntervalInSec; | 91 workerObjectProxy().m_nextIntervalInSec = kNextIntervalInSec; |
94 workerObjectProxy().m_maxIntervalInSec = kMaxIntervalInSec; | 92 workerObjectProxy().m_maxIntervalInSec = kMaxIntervalInSec; |
95 | 93 |
96 m_mockWorkerLoaderProxyProvider = | 94 m_mockWorkerLoaderProxyProvider = |
97 WTF::makeUnique<MockWorkerLoaderProxyProvider>(); | 95 WTF::makeUnique<MockWorkerLoaderProxyProvider>(); |
98 m_workerThread = WTF::wrapUnique(new DedicatedWorkerThreadForTest( | 96 m_workerThread = WTF::wrapUnique(new DedicatedWorkerThreadForTest( |
99 m_mockWorkerLoaderProxyProvider.get(), workerObjectProxy(), | 97 m_mockWorkerLoaderProxyProvider.get(), workerObjectProxy())); |
100 getParentFrameTaskRunners())); | |
101 m_mockWorkerThreadLifecycleObserver = new MockWorkerThreadLifecycleObserver( | 98 m_mockWorkerThreadLifecycleObserver = new MockWorkerThreadLifecycleObserver( |
102 m_workerThread->getWorkerThreadLifecycleContext()); | 99 m_workerThread->getWorkerThreadLifecycleContext()); |
103 EXPECT_CALL(*m_mockWorkerThreadLifecycleObserver, | 100 EXPECT_CALL(*m_mockWorkerThreadLifecycleObserver, |
104 contextDestroyed(::testing::_)) | 101 contextDestroyed(::testing::_)) |
105 .Times(1); | 102 .Times(1); |
106 } | 103 } |
107 | 104 |
108 ~InProcessWorkerMessagingProxyForTest() override { | 105 ~InProcessWorkerMessagingProxyForTest() override { |
109 EXPECT_FALSE(m_blocking); | 106 EXPECT_FALSE(m_blocking); |
110 m_workerThread->workerLoaderProxy()->detachProvider( | 107 m_workerThread->workerLoaderProxy()->detachProvider( |
111 m_mockWorkerLoaderProxyProvider.get()); | 108 m_mockWorkerLoaderProxyProvider.get()); |
112 } | 109 } |
113 | 110 |
114 void startWithSourceCode(const String& source) { | 111 void startWithSourceCode(const String& source) { |
115 KURL scriptURL(ParsedURLString, "http://fake.url/"); | 112 KURL scriptURL(ParsedURLString, "http://fake.url/"); |
116 m_securityOrigin = SecurityOrigin::create(scriptURL); | 113 m_securityOrigin = SecurityOrigin::create(scriptURL); |
117 std::unique_ptr<Vector<CSPHeaderAndType>> headers = | 114 std::unique_ptr<Vector<CSPHeaderAndType>> headers = |
118 WTF::makeUnique<Vector<CSPHeaderAndType>>(); | 115 WTF::makeUnique<Vector<CSPHeaderAndType>>(); |
119 CSPHeaderAndType headerAndType("contentSecurityPolicy", | 116 CSPHeaderAndType headerAndType("contentSecurityPolicy", |
120 ContentSecurityPolicyHeaderTypeReport); | 117 ContentSecurityPolicyHeaderTypeReport); |
121 headers->push_back(headerAndType); | 118 headers->push_back(headerAndType); |
122 workerThread()->start(WorkerThreadStartupData::create( | 119 workerThread()->start( |
123 scriptURL, "fake user agent", source, nullptr /* cachedMetaData */, | 120 WorkerThreadStartupData::create( |
124 DontPauseWorkerGlobalScopeOnStart, headers.get(), | 121 scriptURL, "fake user agent", source, nullptr /* cachedMetaData */, |
125 "" /* referrerPolicy */, m_securityOrigin.get(), | 122 DontPauseWorkerGlobalScopeOnStart, headers.get(), |
126 nullptr /* workerClients */, WebAddressSpaceLocal, | 123 "" /* referrerPolicy */, m_securityOrigin.get(), |
127 nullptr /* originTrialTokens */, nullptr /* workerSettings */, | 124 nullptr /* workerClients */, WebAddressSpaceLocal, |
128 WorkerV8Settings::Default())); | 125 nullptr /* originTrialTokens */, nullptr /* workerSettings */, |
| 126 WorkerV8Settings::Default()), |
| 127 getParentFrameTaskRunners()); |
129 | 128 |
130 workerInspectorProxy()->workerThreadCreated( | 129 workerInspectorProxy()->workerThreadCreated( |
131 toDocument(getExecutionContext()), m_workerThread.get(), scriptURL); | 130 toDocument(getExecutionContext()), m_workerThread.get(), scriptURL); |
132 workerThreadCreated(); | 131 workerThreadCreated(); |
133 } | 132 } |
134 | 133 |
135 enum class Notification { | 134 enum class Notification { |
136 MessageConfirmed, | 135 MessageConfirmed, |
137 PendingActivityReported, | 136 PendingActivityReported, |
138 ThreadTerminated, | 137 ThreadTerminated, |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 EXPECT_FALSE(UseCounter::isCounted(document(), feature2)); | 399 EXPECT_FALSE(UseCounter::isCounted(document(), feature2)); |
401 workerThread()->postTask( | 400 workerThread()->postTask( |
402 BLINK_FROM_HERE, | 401 BLINK_FROM_HERE, |
403 crossThreadBind(&DedicatedWorkerThreadForTest::countDeprecation, | 402 crossThreadBind(&DedicatedWorkerThreadForTest::countDeprecation, |
404 crossThreadUnretained(workerThread()), feature2)); | 403 crossThreadUnretained(workerThread()), feature2)); |
405 testing::enterRunLoop(); | 404 testing::enterRunLoop(); |
406 EXPECT_TRUE(UseCounter::isCounted(document(), feature2)); | 405 EXPECT_TRUE(UseCounter::isCounted(document(), feature2)); |
407 } | 406 } |
408 | 407 |
409 } // namespace blink | 408 } // namespace blink |
OLD | NEW |