| 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 130f134f54e28f2836483d801ae2e177a25efbfd..cf7a4306f87906980d368bb0a581bf9cd524c11f 100644
|
| --- a/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.h
|
| +++ b/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.h
|
| @@ -29,14 +29,11 @@
|
|
|
| #include "core/CoreExport.h"
|
| #include "core/dom/ExecutionContext.h"
|
| -#include "core/workers/InProcessWorkerGlobalScopeProxy.h"
|
| -#include "core/workers/WorkerLoaderProxy.h"
|
| +#include "core/dom/MessagePort.h"
|
| +#include "core/workers/ThreadedMessagingProxyBase.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 {
|
| @@ -44,94 +41,40 @@ 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
|
| - : public InProcessWorkerGlobalScopeProxy
|
| - , private WorkerLoaderProxyProvider {
|
| +class CORE_EXPORT InProcessWorkerMessagingProxy : public ThreadedMessagingProxyBase {
|
| WTF_MAKE_NONCOPYABLE(InProcessWorkerMessagingProxy);
|
| public:
|
| - // Implementations of InProcessWorkerGlobalScopeProxy.
|
| - // (Only use these methods in the parent context thread.)
|
| - void startWorkerGlobalScope(const KURL& scriptURL, const String& userAgent, const String& sourceCode) override;
|
| - void terminateWorkerGlobalScope() override;
|
| - void postMessageToWorkerGlobalScope(PassRefPtr<SerializedScriptValue>, std::unique_ptr<MessagePortChannelArray>) override;
|
| - bool hasPendingActivity() const final;
|
| - void workerObjectDestroyed() override;
|
| + // These methods should only be used on the parent context thread.
|
| + void startWorkerGlobalScope(const KURL& scriptURL, const String& userAgent, const String& sourceCode);
|
| + void postMessageToWorkerGlobalScope(PassRefPtr<SerializedScriptValue>, std::unique_ptr<MessagePortChannelArray>);
|
| +
|
| + void parentObjectDestroyed() override;
|
|
|
| // 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;
|
| -
|
| - // 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;
|
| -
|
| - RefPtr<WorkerLoaderProxy> m_loaderProxy;
|
| };
|
|
|
| } // namespace blink
|
|
|