| Index: third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.cpp
|
| diff --git a/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.cpp b/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.cpp
|
| index 8ccb106ab96a23b1832a052f6984c7f504d5c69c..f8718d3708324a29c6c6e0f8a8739bfaead2c026 100644
|
| --- a/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.cpp
|
| +++ b/third_party/WebKit/Source/core/workers/InProcessWorkerMessagingProxy.cpp
|
| @@ -28,7 +28,6 @@
|
|
|
| #include "core/workers/InProcessWorkerMessagingProxy.h"
|
|
|
| -#include "bindings/core/v8/V8GCController.h"
|
| #include "core/dom/CrossThreadTask.h"
|
| #include "core/dom/Document.h"
|
| #include "core/dom/SecurityContext.h"
|
| @@ -65,26 +64,23 @@ void processMessageOnWorkerGlobalScope(PassRefPtr<SerializedScriptValue> message
|
| WorkerGlobalScope* globalScope = toWorkerGlobalScope(scriptContext);
|
| MessagePortArray* ports = MessagePort::entanglePorts(*scriptContext, std::move(channels));
|
| globalScope->dispatchEvent(MessageEvent::create(ports, message));
|
| - workerObjectProxy->confirmMessageFromWorkerObject(V8GCController::hasPendingActivity(globalScope->thread()->isolate(), scriptContext));
|
| + workerObjectProxy->reportPendingActivity(globalScope);
|
| + workerObjectProxy->confirmMessageFromWorkerObject();
|
| }
|
|
|
| static int s_liveMessagingProxyCount = 0;
|
|
|
| } // namespace
|
|
|
| -InProcessWorkerMessagingProxy::InProcessWorkerMessagingProxy(InProcessWorkerBase* workerObject, WorkerClients* workerClients)
|
| - : m_executionContext(workerObject->getExecutionContext())
|
| +InProcessWorkerMessagingProxy::InProcessWorkerMessagingProxy(ExecutionContext* executionContext, InProcessWorkerBase* workerObject, WorkerClients* workerClients)
|
| + : m_executionContext(executionContext)
|
| , m_workerObjectProxy(InProcessWorkerObjectProxy::create(this))
|
| , m_workerObject(workerObject)
|
| - , m_mayBeDestroyed(false)
|
| , m_unconfirmedMessageCount(0)
|
| - , m_workerThreadHadPendingActivity(false)
|
| - , m_askedToTerminate(false)
|
| , m_workerInspectorProxy(WorkerInspectorProxy::create())
|
| , m_workerClients(workerClients)
|
| {
|
| DCHECK(isParentContextThread());
|
| - DCHECK(m_workerObject);
|
| s_liveMessagingProxyCount++;
|
| }
|
|
|
| @@ -270,14 +266,13 @@ void InProcessWorkerMessagingProxy::postMessageToPageInspector(const String& mes
|
| m_workerInspectorProxy->dispatchMessageFromWorker(message);
|
| }
|
|
|
| -void InProcessWorkerMessagingProxy::confirmMessageFromWorkerObject(bool hasPendingActivity)
|
| +void InProcessWorkerMessagingProxy::confirmMessageFromWorkerObject()
|
| {
|
| DCHECK(isParentContextThread());
|
| - if (!m_askedToTerminate) {
|
| - DCHECK(m_unconfirmedMessageCount);
|
| - --m_unconfirmedMessageCount;
|
| - }
|
| - reportPendingActivity(hasPendingActivity);
|
| + if (m_askedToTerminate)
|
| + return;
|
| + DCHECK(m_unconfirmedMessageCount);
|
| + --m_unconfirmedMessageCount;
|
| }
|
|
|
| void InProcessWorkerMessagingProxy::reportPendingActivity(bool hasPendingActivity)
|
|
|