OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * Copyright (C) 2009 Google Inc. All Rights Reserved. | 3 * Copyright (C) 2009 Google Inc. All Rights Reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 ASSERT((m_executionContext->isDocument() && isMainThread()) | 104 ASSERT((m_executionContext->isDocument() && isMainThread()) |
105 || (m_executionContext->isWorkerGlobalScope() && toWorkerGlobalScope(m_e
xecutionContext.get())->thread()->isCurrentThread())); | 105 || (m_executionContext->isWorkerGlobalScope() && toWorkerGlobalScope(m_e
xecutionContext.get())->thread()->isCurrentThread())); |
106 } | 106 } |
107 | 107 |
108 void WorkerMessagingProxy::startWorkerGlobalScope(const KURL& scriptURL, const S
tring& userAgent, const String& sourceCode, WorkerThreadStartMode startMode) | 108 void WorkerMessagingProxy::startWorkerGlobalScope(const KURL& scriptURL, const S
tring& userAgent, const String& sourceCode, WorkerThreadStartMode startMode) |
109 { | 109 { |
110 // FIXME: This need to be revisited when we support nested worker one day | 110 // FIXME: This need to be revisited when we support nested worker one day |
111 ASSERT(m_executionContext->isDocument()); | 111 ASSERT(m_executionContext->isDocument()); |
112 Document* document = toDocument(m_executionContext.get()); | 112 Document* document = toDocument(m_executionContext.get()); |
113 | 113 |
114 OwnPtr<WorkerThreadStartupData> startupData = WorkerThreadStartupData::creat
e(scriptURL, userAgent, sourceCode, startMode, document->contentSecurityPolicy()
->deprecatedHeader(), document->contentSecurityPolicy()->deprecatedHeaderType(),
m_workerClients.release()); | 114 OwnPtrWillBeRawPtr<WorkerThreadStartupData> startupData = WorkerThreadStartu
pData::create(scriptURL, userAgent, sourceCode, startMode, document->contentSecu
rityPolicy()->deprecatedHeader(), document->contentSecurityPolicy()->deprecatedH
eaderType(), m_workerClients.release()); |
115 double originTime = document->loader() ? document->loader()->timing()->refer
enceMonotonicTime() : monotonicallyIncreasingTime(); | 115 double originTime = document->loader() ? document->loader()->timing()->refer
enceMonotonicTime() : monotonicallyIncreasingTime(); |
116 | 116 |
117 RefPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::create(*this,
*m_workerObjectProxy.get(), originTime, startupData.release()); | 117 RefPtrWillBeRawPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::cr
eate(*this, *m_workerObjectProxy.get(), originTime, startupData.release()); |
118 workerThreadCreated(thread); | 118 workerThreadCreated(thread); |
119 thread->start(); | 119 thread->start(); |
120 InspectorInstrumentation::didStartWorkerGlobalScope(m_executionContext.get()
, this, scriptURL); | 120 InspectorInstrumentation::didStartWorkerGlobalScope(m_executionContext.get()
, this, scriptURL); |
121 } | 121 } |
122 | 122 |
123 void WorkerMessagingProxy::postMessageToWorkerObject(PassRefPtr<SerializedScript
Value> message, PassOwnPtr<MessagePortChannelArray> channels) | 123 void WorkerMessagingProxy::postMessageToWorkerObject(PassRefPtr<SerializedScript
Value> message, PassOwnPtr<MessagePortChannelArray> channels) |
124 { | 124 { |
125 if (!m_workerObject || m_askedToTerminate) | 125 if (!m_workerObject || m_askedToTerminate) |
126 return; | 126 return; |
127 | 127 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 m_executionContext->reportException(event, nullptr, NotSharableCrossOrig
in); | 172 m_executionContext->reportException(event, nullptr, NotSharableCrossOrig
in); |
173 } | 173 } |
174 | 174 |
175 void WorkerMessagingProxy::reportConsoleMessage(MessageSource source, MessageLev
el level, const String& message, int lineNumber, const String& sourceURL) | 175 void WorkerMessagingProxy::reportConsoleMessage(MessageSource source, MessageLev
el level, const String& message, int lineNumber, const String& sourceURL) |
176 { | 176 { |
177 if (m_askedToTerminate) | 177 if (m_askedToTerminate) |
178 return; | 178 return; |
179 m_executionContext->addConsoleMessage(source, level, message, sourceURL, lin
eNumber); | 179 m_executionContext->addConsoleMessage(source, level, message, sourceURL, lin
eNumber); |
180 } | 180 } |
181 | 181 |
182 void WorkerMessagingProxy::workerThreadCreated(PassRefPtr<DedicatedWorkerThread>
workerThread) | 182 void WorkerMessagingProxy::workerThreadCreated(PassRefPtrWillBeRawPtr<DedicatedW
orkerThread> workerThread) |
183 { | 183 { |
184 m_workerThread = workerThread; | 184 m_workerThread = workerThread; |
185 | 185 |
186 if (m_askedToTerminate) { | 186 if (m_askedToTerminate) { |
187 // Worker.terminate() could be called from JS before the thread was crea
ted. | 187 // Worker.terminate() could be called from JS before the thread was crea
ted. |
188 m_workerThread->stop(); | 188 m_workerThread->stop(); |
189 } else { | 189 } else { |
190 unsigned taskCount = m_queuedEarlyTasks.size(); | 190 unsigned taskCount = m_queuedEarlyTasks.size(); |
191 ASSERT(!m_unconfirmedMessageCount); | 191 ASSERT(!m_unconfirmedMessageCount); |
192 m_unconfirmedMessageCount = taskCount; | 192 m_unconfirmedMessageCount = taskCount; |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 { | 297 { |
298 m_workerThreadHadPendingActivity = hasPendingActivity; | 298 m_workerThreadHadPendingActivity = hasPendingActivity; |
299 } | 299 } |
300 | 300 |
301 bool WorkerMessagingProxy::hasPendingActivity() const | 301 bool WorkerMessagingProxy::hasPendingActivity() const |
302 { | 302 { |
303 return (m_unconfirmedMessageCount || m_workerThreadHadPendingActivity) && !m
_askedToTerminate; | 303 return (m_unconfirmedMessageCount || m_workerThreadHadPendingActivity) && !m
_askedToTerminate; |
304 } | 304 } |
305 | 305 |
306 } // namespace WebCore | 306 } // namespace WebCore |
OLD | NEW |