Commit ce453d62 authored by nhiroki's avatar nhiroki Committed by Commit bot

Worker: Clarify a target context of postTask in WorkerEventQueue

BUG=673711

Review-Url: https://codereview.chromium.org/2580743002
Cr-Commit-Position: refs/heads/master@{#438805}
parent 6a3ac63e
......@@ -26,26 +26,28 @@
#include "core/workers/WorkerEventQueue.h"
#include "core/dom/ExecutionContext.h"
#include "core/dom/ExecutionContextTask.h"
#include "core/dom/TaskRunnerHelper.h"
#include "core/events/Event.h"
#include "core/inspector/InspectorInstrumentation.h"
#include "core/workers/WorkerGlobalScope.h"
namespace blink {
WorkerEventQueue* WorkerEventQueue::create(ExecutionContext* context) {
return new WorkerEventQueue(context);
WorkerEventQueue* WorkerEventQueue::create(
WorkerGlobalScope* workerGlobalScope) {
return new WorkerEventQueue(workerGlobalScope);
}
WorkerEventQueue::WorkerEventQueue(ExecutionContext* context)
: m_executionContext(context), m_isClosed(false) {}
WorkerEventQueue::WorkerEventQueue(WorkerGlobalScope* workerGlobalScope)
: m_workerGlobalScope(workerGlobalScope), m_isClosed(false) {}
WorkerEventQueue::~WorkerEventQueue() {
DCHECK(m_pendingEvents.isEmpty());
}
DEFINE_TRACE(WorkerEventQueue) {
visitor->trace(m_executionContext);
visitor->trace(m_workerGlobalScope);
visitor->trace(m_pendingEvents);
EventQueue::trace(visitor);
}
......@@ -56,7 +58,7 @@ bool WorkerEventQueue::enqueueEvent(Event* event) {
InspectorInstrumentation::asyncTaskScheduled(
event->target()->getExecutionContext(), event->type(), event);
m_pendingEvents.add(event);
m_executionContext->postTask(
m_workerGlobalScope->postTask(
BLINK_FROM_HERE,
createSameThreadTask(&WorkerEventQueue::dispatchEvent,
wrapPersistent(this), wrapWeakPersistent(event)));
......@@ -87,12 +89,11 @@ bool WorkerEventQueue::removeEvent(Event* event) {
return true;
}
void WorkerEventQueue::dispatchEvent(Event* event,
ExecutionContext* executionContext) {
void WorkerEventQueue::dispatchEvent(Event* event) {
if (!event || !removeEvent(event))
return;
InspectorInstrumentation::AsyncTask asyncTask(executionContext, event);
InspectorInstrumentation::AsyncTask asyncTask(m_workerGlobalScope, event);
event->target()->dispatchEvent(event);
}
......
......@@ -33,11 +33,11 @@
namespace blink {
class Event;
class ExecutionContext;
class WorkerGlobalScope;
class WorkerEventQueue final : public EventQueue {
public:
static WorkerEventQueue* create(ExecutionContext*);
static WorkerEventQueue* create(WorkerGlobalScope*);
~WorkerEventQueue() override;
DECLARE_TRACE();
......@@ -47,11 +47,11 @@ class WorkerEventQueue final : public EventQueue {
void close() override;
private:
explicit WorkerEventQueue(ExecutionContext*);
explicit WorkerEventQueue(WorkerGlobalScope*);
bool removeEvent(Event*);
void dispatchEvent(Event*, ExecutionContext*);
void dispatchEvent(Event*);
Member<ExecutionContext> m_executionContext;
Member<WorkerGlobalScope> m_workerGlobalScope;
bool m_isClosed;
HeapHashSet<Member<Event>> m_pendingEvents;
......
......@@ -124,10 +124,14 @@ class CORE_EXPORT WorkerGlobalScope : public EventTargetWithInlineData,
bool isContextThread() const final;
void disableEval(const String& errorMessage) final;
String userAgent() const final { return m_userAgent; }
// This is necessary to make parent's postTask visible.
using ExecutionContext::postTask;
void postTask(TaskType,
const WebTraceLocation&,
std::unique_ptr<ExecutionContextTask>,
const String& taskNameForInstrumentation) final;
DOMTimerCoordinator* timers() final { return &m_timers; }
SecurityContext& securityContext() final { return *this; }
void addConsoleMessage(ConsoleMessage*) final;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment