Commit fd7faf13 authored by Hajime Hoshi's avatar Hajime Hoshi Committed by Commit Bot

Introduce blink::TaskType::kInternalTest

We plan to deprecate kUnspecedTimer / kUnspecedLoading / kUnthrottled
and introduce kInternal* for internal usages.

This CL introduces kInternalTest for tests or mock objects and replaces
the current task types with kInternalTest.

Doc: https://docs.google.com/document/d/1n9qNbP0H28J4DIzorydemc36b1xy-8-5zEADsoJfMxU/edit#

Bug: 794123
Change-Id: If4e616d9b770ff0e5be88261e68c3fd572d05783
Reviewed-on: https://chromium-review.googlesource.com/822792
Commit-Queue: Hajime Hoshi <hajimehoshi@chromium.org>
Reviewed-by: default avatarMike West <mkwst@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524024}
parent 9e486538
......@@ -153,7 +153,7 @@ void PrintFrameAsync(blink::WebLocalFrame* web_frame,
base::OnceCallback<void(const SkBitmap&)> callback) {
DCHECK(web_frame);
DCHECK(!callback.is_null());
web_frame->GetTaskRunner(blink::TaskType::kUnthrottled)
web_frame->GetTaskRunner(blink::TaskType::kInternalTest)
->PostTask(FROM_HERE, base::BindOnce(&CapturePixelsForPrinting,
base::Unretained(web_frame),
base::Passed(std::move(callback))));
......
......@@ -244,7 +244,7 @@ class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper {
parent_frame_task_runners_.Get());
worker_thread_->WaitForInit();
worker_loading_task_runner_ =
worker_thread_->GetTaskRunner(TaskType::kUnspecedLoading);
worker_thread_->GetTaskRunner(TaskType::kInternalTest);
}
void OnServeRequests() override { testing::RunPendingTasks(); }
......
......@@ -193,8 +193,8 @@ void ModuleScriptLoaderTest::InitializeForWorklet() {
global_scope_->SetModuleResponsesMapProxyForTesting(
WorkletModuleResponsesMapProxy::Create(
new WorkletModuleResponsesMap(modulator_->Fetcher()),
GetDocument().GetTaskRunner(TaskType::kUnspecedLoading),
global_scope_->GetTaskRunner(TaskType::kUnspecedLoading)));
GetDocument().GetTaskRunner(TaskType::kInternalTest),
global_scope_->GetTaskRunner(TaskType::kInternalTest)));
}
void ModuleScriptLoaderTest::TestFetchDataURL(
......
......@@ -49,7 +49,7 @@ class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread {
EXPECT_TRUE(IsCurrentThread());
GlobalScope()->CountFeature(feature);
GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
}
......@@ -64,17 +64,17 @@ class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread {
EXPECT_TRUE(console_message.Contains("deprecated"));
GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
}
void TestTaskRunner() {
EXPECT_TRUE(IsCurrentThread());
scoped_refptr<WebTaskRunner> task_runner =
GlobalScope()->GetTaskRunner(TaskType::kUnspecedTimer);
GlobalScope()->GetTaskRunner(TaskType::kInternalTest);
EXPECT_TRUE(task_runner->RunsTasksInCurrentSequence());
GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
}
};
......@@ -223,7 +223,7 @@ TEST_F(DedicatedWorkerTest, UseCounter) {
// on the Document.
EXPECT_FALSE(UseCounter::IsCounted(GetDocument(), kFeature1));
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&DedicatedWorkerThreadForTest::CountFeature,
......@@ -234,7 +234,7 @@ TEST_F(DedicatedWorkerTest, UseCounter) {
// API use should be reported to the Document only one time. See comments in
// DedicatedWorkerObjectProxyForTest::CountFeature.
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&DedicatedWorkerThreadForTest::CountFeature,
......@@ -248,7 +248,7 @@ TEST_F(DedicatedWorkerTest, UseCounter) {
// UseCounter on the Document.
EXPECT_FALSE(UseCounter::IsCounted(GetDocument(), kFeature2));
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&DedicatedWorkerThreadForTest::CountDeprecation,
......@@ -259,7 +259,7 @@ TEST_F(DedicatedWorkerTest, UseCounter) {
// API use should be reported to the Document only one time. See comments in
// DedicatedWorkerObjectProxyForTest::CountDeprecation.
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&DedicatedWorkerThreadForTest::CountDeprecation,
......@@ -272,7 +272,7 @@ TEST_F(DedicatedWorkerTest, TaskRunner) {
WorkerMessagingProxy()->StartWithSourceCode(source_code);
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE,
CrossThreadBind(&DedicatedWorkerThreadForTest::TestTaskRunner,
CrossThreadUnretained(GetWorkerThread())));
......
......@@ -135,7 +135,7 @@ TEST_F(MainThreadWorkletTest, UseCounter) {
TEST_F(MainThreadWorkletTest, TaskRunner) {
scoped_refptr<WebTaskRunner> task_runner =
global_scope_->GetTaskRunner(TaskType::kUnthrottled);
global_scope_->GetTaskRunner(TaskType::kInternalTest);
EXPECT_TRUE(task_runner->RunsTasksInCurrentSequence());
}
......
......@@ -27,10 +27,10 @@ ParentFrameTaskRunners* ParentFrameTaskRunners::Create() {
ParentFrameTaskRunners::ParentFrameTaskRunners(LocalFrame* frame)
: ContextLifecycleObserver(frame ? frame->GetDocument() : nullptr) {
// For now we only support very limited task types.
for (auto type :
{TaskType::kUnspecedTimer, TaskType::kUnspecedLoading,
TaskType::kNetworking, TaskType::kPostedMessage,
TaskType::kCanvasBlobSerialization, TaskType::kUnthrottled}) {
for (auto type : {TaskType::kUnspecedTimer, TaskType::kUnspecedLoading,
TaskType::kNetworking, TaskType::kPostedMessage,
TaskType::kCanvasBlobSerialization, TaskType::kUnthrottled,
TaskType::kInternalTest}) {
auto task_runner =
frame ? frame->GetTaskRunner(type)
: Platform::Current()->MainThread()->GetWebTaskRunner();
......
......@@ -84,7 +84,7 @@ class ThreadedWorkletThreadForTest : public WorkerThread {
EXPECT_TRUE(global_scope->GetSecurityOrigin()->IsUnique());
EXPECT_FALSE(global_scope->DocumentSecurityOrigin()->IsUnique());
GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
}
......@@ -108,7 +108,7 @@ class ThreadedWorkletThreadForTest : public WorkerThread {
IntegrityMetadataSet(), kParserInserted));
GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
}
......@@ -117,7 +117,7 @@ class ThreadedWorkletThreadForTest : public WorkerThread {
EXPECT_TRUE(IsCurrentThread());
GlobalScope()->CountFeature(feature);
GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
}
......@@ -132,17 +132,17 @@ class ThreadedWorkletThreadForTest : public WorkerThread {
EXPECT_TRUE(console_message.Contains("deprecated"));
GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
}
void TestTaskRunner() {
EXPECT_TRUE(IsCurrentThread());
scoped_refptr<WebTaskRunner> task_runner =
GlobalScope()->GetTaskRunner(TaskType::kUnspecedTimer);
GlobalScope()->GetTaskRunner(TaskType::kInternalTest);
EXPECT_TRUE(task_runner->RunsTasksInCurrentSequence());
GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
}
......@@ -232,7 +232,7 @@ TEST_F(ThreadedWorkletTest, SecurityOrigin) {
MessagingProxy()->Start();
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&ThreadedWorkletThreadForTest::TestSecurityOrigin,
......@@ -252,7 +252,7 @@ TEST_F(ThreadedWorkletTest, ContentSecurityPolicy) {
MessagingProxy()->Start();
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE,
CrossThreadBind(
&ThreadedWorkletThreadForTest::TestContentSecurityPolicy,
......@@ -270,7 +270,7 @@ TEST_F(ThreadedWorkletTest, UseCounter) {
// on the Document.
EXPECT_FALSE(UseCounter::IsCounted(GetDocument(), kFeature1));
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&ThreadedWorkletThreadForTest::CountFeature,
......@@ -281,7 +281,7 @@ TEST_F(ThreadedWorkletTest, UseCounter) {
// API use should be reported to the Document only one time. See comments in
// ThreadedWorkletGlobalScopeForTest::CountFeature.
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&ThreadedWorkletThreadForTest::CountFeature,
......@@ -295,7 +295,7 @@ TEST_F(ThreadedWorkletTest, UseCounter) {
// UseCounter on the Document.
EXPECT_FALSE(UseCounter::IsCounted(GetDocument(), kFeature2));
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&ThreadedWorkletThreadForTest::CountDeprecation,
......@@ -306,7 +306,7 @@ TEST_F(ThreadedWorkletTest, UseCounter) {
// API use should be reported to the Document only one time. See comments in
// ThreadedWorkletGlobalScopeForTest::CountDeprecation.
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(&ThreadedWorkletThreadForTest::CountDeprecation,
......@@ -318,7 +318,7 @@ TEST_F(ThreadedWorkletTest, TaskRunner) {
MessagingProxy()->Start();
GetWorkerThread()
->GetTaskRunner(TaskType::kUnspecedTimer)
->GetTaskRunner(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE,
CrossThreadBind(&ThreadedWorkletThreadForTest::TestTaskRunner,
CrossThreadUnretained(GetWorkerThread())));
......
......@@ -58,7 +58,7 @@ void WaitForSignalTask(WorkerThread* worker_thread,
// Notify the main thread that the debugger task is waiting for the signal.
worker_thread->GetParentFrameTaskRunners()
->Get(TaskType::kUnspecedTimer)
->Get(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop));
waitable_event->Wait();
}
......
......@@ -78,7 +78,7 @@ class AnimationWorkletGlobalScopeTest : public ::testing::Test {
void RunTestOnWorkletThread(TestCalback callback) {
std::unique_ptr<WorkerThread> worklet = CreateAnimationWorkletThread();
WaitableEvent waitable_event;
worklet->GetTaskRunner(TaskType::kUnthrottled)
worklet->GetTaskRunner(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE,
CrossThreadBind(callback, CrossThreadUnretained(this),
CrossThreadUnretained(worklet.get()),
......
......@@ -46,11 +46,11 @@ PlatformSpeechSynthesizerMock::PlatformSpeechSynthesizerMock(
ExecutionContext* context)
: PlatformSpeechSynthesizer(client),
speaking_error_occurred_timer_(
context->GetTaskRunner(TaskType::kUnspecedTimer),
context->GetTaskRunner(TaskType::kInternalTest),
this,
&PlatformSpeechSynthesizerMock::SpeakingErrorOccurred),
speaking_finished_timer_(
context->GetTaskRunner(TaskType::kUnspecedTimer),
context->GetTaskRunner(TaskType::kInternalTest),
this,
&PlatformSpeechSynthesizerMock::SpeakingFinished) {}
......
......@@ -84,7 +84,7 @@ class AudioWorkletGlobalScopeTest : public ::testing::Test {
void RunBasicTest(WorkerThread* thread) {
WaitableEvent waitable_event;
thread->GetTaskRunner(TaskType::kUnthrottled)
thread->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(
......@@ -96,7 +96,7 @@ class AudioWorkletGlobalScopeTest : public ::testing::Test {
void RunSimpleProcessTest(WorkerThread* thread) {
WaitableEvent waitable_event;
thread->GetTaskRunner(TaskType::kUnthrottled)
thread->GetTaskRunner(TaskType::kInternalTest)
->PostTask(BLINK_FROM_HERE,
CrossThreadBind(&AudioWorkletGlobalScopeTest::
RunSimpleProcessTestOnWorkletThread,
......@@ -108,7 +108,7 @@ class AudioWorkletGlobalScopeTest : public ::testing::Test {
void RunParsingTest(WorkerThread* thread) {
WaitableEvent waitable_event;
thread->GetTaskRunner(TaskType::kUnthrottled)
thread->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(
......@@ -120,7 +120,7 @@ class AudioWorkletGlobalScopeTest : public ::testing::Test {
void RunParsingParameterDescriptorTest(WorkerThread* thread) {
WaitableEvent waitable_event;
thread->GetTaskRunner(TaskType::kUnthrottled)
thread->GetTaskRunner(TaskType::kInternalTest)
->PostTask(
BLINK_FROM_HERE,
CrossThreadBind(
......
......@@ -106,7 +106,7 @@ class MockFetchContext : public FetchContext {
}
scoped_refptr<WebTaskRunner> GetLoadingTaskRunner() override {
return frame_scheduler_->GetTaskRunner(TaskType::kUnspecedLoading);
return frame_scheduler_->GetTaskRunner(TaskType::kInternalTest);
}
private:
......
......@@ -56,6 +56,7 @@ scoped_refptr<WebTaskRunner> WorkerGlobalScopeScheduler::GetTaskRunner(
case TaskType::kUnspecedTimer:
case TaskType::kUnspecedLoading:
case TaskType::kUnthrottled:
case TaskType::kInternalTest:
// UnthrottledTaskRunner is generally discouraged in future.
// TODO(nhiroki): Identify which tasks can be throttled / suspendable and
// move them into other task runners. See also comments in
......
......@@ -51,7 +51,7 @@ class WorkerGlobalScopeSchedulerTest : public ::testing::Test {
// Helper for posting a task.
void PostTestTask(std::vector<std::string>* run_order,
const std::string& task_descriptor) {
global_scope_scheduler_->GetTaskRunner(TaskType::kUnthrottled)
global_scope_scheduler_->GetTaskRunner(TaskType::kInternalTest)
->PostTask(FROM_HERE,
WTF::Bind(&AppendToVectorTestTask,
WTF::Unretained(run_order), task_descriptor));
......
......@@ -260,6 +260,7 @@ scoped_refptr<blink::WebTaskRunner> WebFrameSchedulerImpl::GetTaskRunner(
case TaskType::kMediaElementEvent:
return WebTaskRunnerImpl::Create(PausableTaskQueue(), type);
case TaskType::kUnthrottled:
case TaskType::kInternalTest:
return WebTaskRunnerImpl::Create(UnpausableTaskQueue(), type);
case TaskType::kCount:
NOTREACHED();
......
......@@ -10,6 +10,10 @@ namespace blink {
// A list of task sources known to Blink according to the spec.
// This enum is used for a histogram and it should not be re-numbered.
enum class TaskType : unsigned {
///////////////////////////////////////
// Speced tasks should use one of the following task types
///////////////////////////////////////
// Speced tasks and related internal tasks should be posted to one of
// the following task runners. These task runners may be throttled.
......@@ -108,6 +112,10 @@ enum class TaskType : unsigned {
// The task runner may be throttled.
kMiscPlatformAPI = 22,
///////////////////////////////////////
// The following task types are DEPRECATED! Use kInternal* instead.
///////////////////////////////////////
// Other internal tasks that cannot fit any of the above task runners
// can be posted here, but the usage is not encouraged. The task runner
// may be throttled.
......@@ -121,7 +129,14 @@ enum class TaskType : unsigned {
// should be very limited.
kUnthrottled = 25,
kCount = 26,
///////////////////////////////////////
// Not-speced tasks should use one of the following task types
///////////////////////////////////////
// Tasks for tests or mock objects.
kInternalTest = 26,
kCount = 27,
};
} // namespace blink
......
......@@ -36140,6 +36140,7 @@ Called by update_net_trust_anchors.py.-->
<int value="23" label="UnspecedTimer"/>
<int value="24" label="UnspecedLoading"/>
<int value="25" label="Unthrottled"/>
<int value="26" label="InternalTest"/>
</enum>
<enum name="RendererSchedulerThreadType">
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