1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h"
#include <utility>
#include "base/feature_list.h"
#include "base/message_loop/message_pump_type.h"
#include "base/task/single_thread_task_runner.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "third_party/blink/public/common/input/web_input_event_attribution.h"
#include "third_party/blink/renderer/platform/scheduler/common/features.h"
#include "third_party/blink/renderer/platform/scheduler/common/task_priority.h"
#include "third_party/blink/renderer/platform/scheduler/common/tracing_helper.h"
#include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h"
#include "third_party/blink/renderer/platform/scheduler/public/main_thread.h"
namespace blink {
namespace scheduler {
WebThreadScheduler::~WebThreadScheduler() = default;
// static
std::unique_ptr<WebThreadScheduler>
WebThreadScheduler::CreateMainThreadScheduler(
std::unique_ptr<base::MessagePump> message_pump) {
auto settings = base::sequence_manager::SequenceManager::Settings::Builder()
.SetMessagePumpType(base::MessagePumpType::DEFAULT)
.SetShouldSampleCPUTime(true)
.SetAddQueueTimeToTasks(true)
.SetPrioritySettings(CreatePrioritySettings())
.Build();
auto sequence_manager =
message_pump
? base::sequence_manager::
CreateSequenceManagerOnCurrentThreadWithPump(
std::move(message_pump), std::move(settings))
: base::sequence_manager::CreateSequenceManagerOnCurrentThread(
std::move(settings));
return std::make_unique<MainThreadSchedulerImpl>(std::move(sequence_manager));
}
// Stubs for main thread only virtual functions.
scoped_refptr<base::SingleThreadTaskRunner>
WebThreadScheduler::DeprecatedDefaultTaskRunner() {
NOTREACHED();
}
std::unique_ptr<MainThread> WebThreadScheduler::CreateMainThread() {
NOTREACHED();
}
void WebThreadScheduler::SetRendererHidden(bool hidden) {
NOTREACHED();
}
void WebThreadScheduler::SetRendererBackgrounded(bool backgrounded) {
NOTREACHED();
}
#if BUILDFLAG(IS_ANDROID)
void WebThreadScheduler::PauseTimersForAndroidWebView() {
NOTREACHED();
}
void WebThreadScheduler::ResumeTimersForAndroidWebView() {
NOTREACHED();
}
#endif // BUILDFLAG(IS_ANDROID)
void WebThreadScheduler::OnUrgentMessageReceived() {
NOTREACHED();
}
void WebThreadScheduler::OnUrgentMessageProcessed() {
NOTREACHED();
}
} // namespace scheduler
} // namespace blink
|