Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(369)

Unified Diff: third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.h

Issue 2310673002: [worklets] Split up InProcessWorkerMessagingProxy into a base+worker class. (Closed)
Patch Set: ... Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698