blob: f74e8114b940c4f198e632705b4e6f3c58a8b760 [file] [log] [blame]
// 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::countFeature(UseCounter::Feature feature) {
getParentFrameTaskRunners()
->get(TaskType::UnspecedTimer)
->postTask(BLINK_FROM_HERE,
crossThreadBind(&ThreadedMessagingProxyBase::countFeature,
messagingProxyWeakPtr(), feature));
}
void ThreadedObjectProxyBase::countDeprecation(UseCounter::Feature feature) {
getParentFrameTaskRunners()
->get(TaskType::UnspecedTimer)
->postTask(BLINK_FROM_HERE,
crossThreadBind(&ThreadedMessagingProxyBase::countDeprecation,
messagingProxyWeakPtr(), feature));
}
void ThreadedObjectProxyBase::reportConsoleMessage(MessageSource source,
MessageLevel level,
const String& message,
SourceLocation* location) {
getParentFrameTaskRunners()
->get(TaskType::UnspecedTimer)
->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));
}
void ThreadedObjectProxyBase::didCloseWorkerGlobalScope() {
getParentFrameTaskRunners()
->get(TaskType::UnspecedTimer)
->postTask(
BLINK_FROM_HERE,
crossThreadBind(&ThreadedMessagingProxyBase::terminateGlobalScope,
messagingProxyWeakPtr()));
}
void ThreadedObjectProxyBase::didTerminateWorkerThread() {
// This will terminate the MessagingProxy.
getParentFrameTaskRunners()
->get(TaskType::UnspecedTimer)
->postTask(
BLINK_FROM_HERE,
crossThreadBind(&ThreadedMessagingProxyBase::workerThreadTerminated,
messagingProxyWeakPtr()));
}
ParentFrameTaskRunners* ThreadedObjectProxyBase::getParentFrameTaskRunners() {
return m_parentFrameTaskRunners.get();
}
ThreadedObjectProxyBase::ThreadedObjectProxyBase(
ParentFrameTaskRunners* parentFrameTaskRunners)
: m_parentFrameTaskRunners(parentFrameTaskRunners) {}
} // namespace blink