| 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 |