Index: third_party/WebKit/WebCore/dom/WorkerMessagingProxy.h |
=================================================================== |
--- third_party/WebKit/WebCore/dom/WorkerMessagingProxy.h (revision 9391) |
+++ third_party/WebKit/WebCore/dom/WorkerMessagingProxy.h (working copy) |
@@ -1,98 +1,104 @@ |
-/* |
- * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions |
- * are met: |
- * 1. Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * 2. Redistributions in binary form must reproduce the above copyright |
- * notice, this list of conditions and the following disclaimer in the |
- * documentation and/or other materials provided with the distribution. |
- * |
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- * |
- */ |
- |
-#ifndef WorkerMessagingProxy_h |
-#define WorkerMessagingProxy_h |
- |
-#if ENABLE(WORKERS) |
- |
-#include "ScriptExecutionContext.h" |
-#include <wtf/Noncopyable.h> |
-#include <wtf/PassRefPtr.h> |
-#include <wtf/RefPtr.h> |
-#include <wtf/Vector.h> |
- |
-namespace WebCore { |
- |
- class ScriptExecutionContext; |
- class String; |
- class Worker; |
- class WorkerThread; |
- |
- class WorkerMessagingProxy : Noncopyable { |
- public: |
- WorkerMessagingProxy(PassRefPtr<ScriptExecutionContext>, Worker*); |
- |
- void postMessageToWorkerObject(const String& message); |
- void postMessageToWorkerContext(const String& message); |
- |
- void postTaskToWorkerObject(PassRefPtr<ScriptExecutionContext::Task>); |
- void postTaskToWorkerContext(PassRefPtr<ScriptExecutionContext::Task>); |
- |
- void postWorkerException(const String& errorMessage, int lineNumber, const String& sourceURL); |
- |
- void workerThreadCreated(PassRefPtr<WorkerThread>); |
- void workerObjectDestroyed(); |
- void workerContextDestroyed(); |
- |
- void confirmWorkerThreadMessage(bool hasPendingActivity); |
- void reportWorkerThreadActivity(bool hasPendingActivity); |
- bool workerThreadHasPendingActivity() const; |
- |
- // Only use these methods on the worker object thread. |
- void terminate(); |
- bool askedToTerminate() const { return m_askedToTerminate; } |
- |
- private: |
- friend class MessageWorkerTask; |
- friend class WorkerContextDestroyedTask; |
- friend class WorkerThreadActivityReportTask; |
- |
- ~WorkerMessagingProxy(); |
- |
- void workerContextDestroyedInternal(); |
- void reportWorkerThreadActivityInternal(bool confirmingMessage, bool hasPendingActivity); |
- Worker* workerObject() const { return m_workerObject; } |
- |
- RefPtr<ScriptExecutionContext> m_scriptExecutionContext; |
- Worker* m_workerObject; |
- RefPtr<WorkerThread> m_workerThread; |
- |
- unsigned m_unconfirmedMessageCount; // Unconfirmed messages from worker object to worker thread. |
- bool m_workerThreadHadPendingActivity; // The latest confirmation from worker thread reported that it was still active. |
- |
- bool m_askedToTerminate; |
- |
- Vector<RefPtr<ScriptExecutionContext::Task> > m_queuedEarlyTasks; // Tasks are queued here until there's a thread object created. |
- }; |
- |
-} // namespace WebCore |
- |
-#endif // ENABLE(WORKERS) |
- |
-#endif // WorkerMessagingProxy_h |
- |
- |
+/* |
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
+ * |
+ * Redistribution and use in source and binary forms, with or without |
+ * modification, are permitted provided that the following conditions |
+ * are met: |
+ * 1. Redistributions of source code must retain the above copyright |
+ * notice, this list of conditions and the following disclaimer. |
+ * 2. Redistributions in binary form must reproduce the above copyright |
+ * notice, this list of conditions and the following disclaimer in the |
+ * documentation and/or other materials provided with the distribution. |
+ * |
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ * |
+ */ |
+ |
+#ifndef WorkerMessagingProxy_h |
+#define WorkerMessagingProxy_h |
+ |
+#if ENABLE(WORKERS) |
+ |
+#include "ScriptExecutionContext.h" |
+#include "WorkerContextProxy.h" |
+#include "WorkerObjectProxy.h" |
+#include <wtf/Noncopyable.h> |
+#include <wtf/PassRefPtr.h> |
+#include <wtf/RefPtr.h> |
+#include <wtf/Vector.h> |
+ |
+namespace WebCore { |
+ |
+ class ScriptExecutionContext; |
+ class String; |
+ class Worker; |
+ class WorkerThread; |
+ |
+ class WorkerMessagingProxy : public WorkerContextProxy, public WorkerObjectProxy, Noncopyable { |
+ public: |
+ WorkerMessagingProxy(PassRefPtr<ScriptExecutionContext>, Worker*); |
+ |
+ // Implementations of WorkerContextProxy. |
+ // (Only use these methods in the worker object thread.) |
+ virtual void terminateWorkerContext(); |
+ virtual void postMessageToWorkerContext(const String& message); |
+ virtual bool hasPendingActivity() const; |
+ |
+ // Implementations of WorkerObjectProxy. |
+ // (Only use these methods in the worker context thread.) |
+ virtual void postMessageToWorkerObject(const String& message); |
+ virtual void postExceptionToWorkerObject(const String& errorMessage, int lineNumber, const String& sourceURL); |
+ virtual void reportPendingActivity(bool hasPendingActivity); |
+ virtual void workerContextDestroyed(); |
+ |
+ void postTaskToWorkerObject(PassRefPtr<ScriptExecutionContext::Task>); |
+ void postTaskToWorkerContext(PassRefPtr<ScriptExecutionContext::Task>); |
+ |
+ void workerThreadCreated(PassRefPtr<WorkerThread>); |
+ void workerObjectDestroyed(); |
+ |
+ void confirmWorkerThreadMessage(bool hasPendingActivity); |
+ |
+ // Only use this method on the worker object thread. |
+ bool askedToTerminate() const { return m_askedToTerminate; } |
+ |
+ private: |
+ friend class MessageWorkerTask; |
+ friend class WorkerContextDestroyedTask; |
+ friend class WorkerThreadActivityReportTask; |
+ |
+ virtual ~WorkerMessagingProxy(); |
+ |
+ void workerContextDestroyedInternal(); |
+ void reportPendingActivityInternal(bool confirmingMessage, bool hasPendingActivity); |
+ Worker* workerObject() const { return m_workerObject; } |
+ |
+ RefPtr<ScriptExecutionContext> m_scriptExecutionContext; |
+ Worker* m_workerObject; |
+ RefPtr<WorkerThread> m_workerThread; |
+ |
+ unsigned m_unconfirmedMessageCount; // Unconfirmed messages from worker object to worker thread. |
+ bool m_workerThreadHadPendingActivity; // The latest confirmation from worker thread reported that it was still active. |
+ |
+ bool m_askedToTerminate; |
+ |
+ Vector<RefPtr<ScriptExecutionContext::Task> > m_queuedEarlyTasks; // Tasks are queued here until there's a thread object created. |
+ }; |
+ |
+} // namespace WebCore |
+ |
+#endif // ENABLE(WORKERS) |
+ |
+#endif // WorkerMessagingProxy_h |
+ |
+ |