Index: third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.h |
diff --git a/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.h b/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.h |
index 65a768ec6f97d9505a6f661307028ffe5a849374..c85c6f8f6c0fe93c127ebcee62f40c1c95d53743 100644 |
--- a/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.h |
+++ b/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.h |
@@ -30,14 +30,11 @@ |
#include "core/CoreExport.h" |
#include "core/dom/ExecutionContext.h" |
#include "core/dom/MessagePort.h" |
-#include "core/inspector/ConsoleTypes.h" |
+#include "core/workers/ThreadedMessagingProxyBase.h" |
#include "core/workers/WorkerLoaderProxy.h" |
#include "platform/heap/Handle.h" |
-#include "wtf/Forward.h" |
#include "wtf/Noncopyable.h" |
#include "wtf/PassRefPtr.h" |
-#include "wtf/RefPtr.h" |
-#include "wtf/Vector.h" |
#include <memory> |
namespace blink { |
@@ -45,91 +42,54 @@ namespace blink { |
class ExecutionContext; |
class InProcessWorkerBase; |
class InProcessWorkerObjectProxy; |
-class ParentFrameTaskRunners; |
+class SerializedScriptValue; |
class WorkerClients; |
-class WorkerInspectorProxy; |
-class WorkerThread; |
// TODO(nhiroki): "MessagingProxy" is not well-defined term among worker |
// components. Probably we should rename this to something more suitable. |
// (http://crbug.com/603785) |
-class CORE_EXPORT InProcessWorkerMessagingProxy : private WorkerLoaderProxyProvider { |
+class CORE_EXPORT InProcessWorkerMessagingProxy : public ThreadedMessagingProxyBase { |
WTF_MAKE_NONCOPYABLE(InProcessWorkerMessagingProxy); |
public: |
// These methods should only be used on the parent context thread. |
void startWorkerGlobalScope(const KURL& scriptURL, const String& userAgent, const String& sourceCode); |
- void terminateWorkerGlobalScope(); |
void postMessageToWorkerGlobalScope(PassRefPtr<SerializedScriptValue>, std::unique_ptr<MessagePortChannelArray>); |
+ |
+ void workerThreadCreated() override; |
+ void parentObjectDestroyed() override; |
+ |
bool hasPendingActivity() const; |
- void workerObjectDestroyed(); |
// These methods come from worker context thread via |
// InProcessWorkerObjectProxy and are called on the parent context thread. |
void postMessageToWorkerObject(PassRefPtr<SerializedScriptValue>, std::unique_ptr<MessagePortChannelArray>); |
void dispatchErrorEvent(const String& errorMessage, std::unique_ptr<SourceLocation>, int exceptionId); |
- void reportConsoleMessage(MessageSource, MessageLevel, const String& message, std::unique_ptr<SourceLocation>); |
- void postMessageToPageInspector(const String&); |
// 'virtual' for testing. |
virtual void confirmMessageFromWorkerObject(); |
virtual void pendingActivityFinished(); |
- virtual void workerThreadTerminated(); |
- |
- void workerThreadCreated(); |
- |
- ExecutionContext* getExecutionContext() const { return m_executionContext.get(); } |
- |
- ParentFrameTaskRunners* getParentFrameTaskRunners() { return m_parentFrameTaskRunners.get(); } |
- |
- // Number of live messaging proxies, used by leak detection. |
- static int proxyCount(); |
protected: |
InProcessWorkerMessagingProxy(InProcessWorkerBase*, WorkerClients*); |
~InProcessWorkerMessagingProxy() override; |
- virtual std::unique_ptr<WorkerThread> createWorkerThread(double originTime) = 0; |
- |
- PassRefPtr<WorkerLoaderProxy> loaderProxy() { return m_loaderProxy; } |
InProcessWorkerObjectProxy& workerObjectProxy() { return *m_workerObjectProxy.get(); } |
private: |
friend class InProcessWorkerMessagingProxyForTest; |
InProcessWorkerMessagingProxy(ExecutionContext*, InProcessWorkerBase*, WorkerClients*); |
- void workerObjectDestroyedInternal(); |
- |
- // WorkerLoaderProxyProvider |
- // These methods are called on different threads to schedule loading |
- // requests and to send callbacks back to WorkerGlobalScope. |
- void postTaskToLoader(const WebTraceLocation&, std::unique_ptr<ExecutionContextTask>) override; |
- void postTaskToWorkerGlobalScope(const WebTraceLocation&, std::unique_ptr<ExecutionContextTask>) override; |
- |
- // Returns true if this is called on the parent context thread. |
- bool isParentContextThread() const; |
- |
- Persistent<ExecutionContext> m_executionContext; |
std::unique_ptr<InProcessWorkerObjectProxy> m_workerObjectProxy; |
WeakPersistent<InProcessWorkerBase> m_workerObject; |
- bool m_mayBeDestroyed; |
- std::unique_ptr<WorkerThread> m_workerThread; |
- |
- // Unconfirmed messages from the parent context thread to the worker thread. |
- unsigned m_unconfirmedMessageCount; |
- |
- bool m_workerGlobalScopeMayHavePendingActivity; |
- bool m_askedToTerminate; |
+ Persistent<WorkerClients> m_workerClients; |
// Tasks are queued here until there's a thread object created. |
Vector<std::unique_ptr<ExecutionContextTask>> m_queuedEarlyTasks; |
- Persistent<WorkerInspectorProxy> m_workerInspectorProxy; |
- |
- Persistent<WorkerClients> m_workerClients; |
- |
- Persistent<ParentFrameTaskRunners> m_parentFrameTaskRunners; |
+ // Unconfirmed messages from the parent context thread to the worker thread. |
+ unsigned m_unconfirmedMessageCount; |
- RefPtr<WorkerLoaderProxy> m_loaderProxy; |
+ bool m_workerGlobalScopeMayHavePendingActivity; |
}; |
} // namespace blink |