| Index: third_party/WebKit/Source/core/workers/ThreadedObjectProxyBase.cpp
|
| diff --git a/third_party/WebKit/Source/core/workers/ThreadedObjectProxyBase.cpp b/third_party/WebKit/Source/core/workers/ThreadedObjectProxyBase.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..29b67952e80739a587632822e28e95d1f49b8526
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/core/workers/ThreadedObjectProxyBase.cpp
|
| @@ -0,0 +1,71 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "core/workers/ThreadedObjectProxyBase.h"
|
| +
|
| +#include "core/dom/ExecutionContext.h"
|
| +#include "core/inspector/ConsoleMessage.h"
|
| +#include "core/workers/ParentFrameTaskRunners.h"
|
| +#include "core/workers/ThreadedMessagingProxyBase.h"
|
| +#include "platform/CrossThreadFunctional.h"
|
| +#include "platform/WebTaskRunner.h"
|
| +#include "wtf/Functional.h"
|
| +#include "wtf/PtrUtil.h"
|
| +#include <memory>
|
| +
|
| +namespace blink {
|
| +
|
| +void ThreadedObjectProxyBase::reportConsoleMessage(MessageSource source,
|
| + MessageLevel level,
|
| + const String& message,
|
| + SourceLocation* location) {
|
| + getParentFrameTaskRunners()
|
| + ->get(TaskType::Internal)
|
| + ->postTask(
|
| + BLINK_FROM_HERE,
|
| + crossThreadBind(&ThreadedMessagingProxyBase::reportConsoleMessage,
|
| + messagingProxyWeakPtr(), source, level, message,
|
| + WTF::passed(location->clone())));
|
| +}
|
| +
|
| +void ThreadedObjectProxyBase::postMessageToPageInspector(
|
| + const String& message) {
|
| + // The TaskType of Inspector tasks need to be Unthrottled because they need to
|
| + // run even on a suspended page.
|
| + getParentFrameTaskRunners()
|
| + ->get(TaskType::Unthrottled)
|
| + ->postTask(BLINK_FROM_HERE,
|
| + crossThreadBind(
|
| + &ThreadedMessagingProxyBase::postMessageToPageInspector,
|
| + messagingProxyWeakPtr(), message));
|
| +}
|
| +
|
| +ParentFrameTaskRunners* ThreadedObjectProxyBase::getParentFrameTaskRunners() {
|
| + return m_parentFrameTaskRunners.get();
|
| +}
|
| +
|
| +void ThreadedObjectProxyBase::didCloseWorkerGlobalScope() {
|
| + getParentFrameTaskRunners()
|
| + ->get(TaskType::Internal)
|
| + ->postTask(
|
| + BLINK_FROM_HERE,
|
| + crossThreadBind(&ThreadedMessagingProxyBase::terminateGlobalScope,
|
| + messagingProxyWeakPtr()));
|
| +}
|
| +
|
| +void ThreadedObjectProxyBase::didTerminateWorkerThread() {
|
| + // This will terminate the MessagingProxy.
|
| + getParentFrameTaskRunners()
|
| + ->get(TaskType::Internal)
|
| + ->postTask(
|
| + BLINK_FROM_HERE,
|
| + crossThreadBind(&ThreadedMessagingProxyBase::workerThreadTerminated,
|
| + messagingProxyWeakPtr()));
|
| +}
|
| +
|
| +ThreadedObjectProxyBase::ThreadedObjectProxyBase(
|
| + ParentFrameTaskRunners* parentFrameTaskRunners)
|
| + : m_parentFrameTaskRunners(parentFrameTaskRunners) {}
|
| +
|
| +} // namespace blink
|
|
|