Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: components/scheduler/renderer/renderer_scheduler.cc

Issue 2118903002: scheduler: Move the Blink scheduler into Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/scheduler/renderer/renderer_scheduler.h"
6
7 #include "base/command_line.h"
8 #include "base/feature_list.h"
9 #include "base/memory/ptr_util.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/metrics/field_trial.h"
12 #include "base/time/default_tick_clock.h"
13 #include "base/trace_event/trace_event.h"
14 #include "base/trace_event/trace_event_impl.h"
15 #include "components/scheduler/child/scheduler_tqm_delegate_impl.h"
16 #include "components/scheduler/common/scheduler_switches.h"
17 #include "components/scheduler/renderer/renderer_scheduler_impl.h"
18
19 namespace scheduler {
20 namespace {
21 const base::Feature kExpensiveTaskBlockingPolicyFeature{
22 "SchedulerExpensiveTaskBlocking", base::FEATURE_ENABLED_BY_DEFAULT};
23 }
24
25 RendererScheduler::RendererScheduler() {
26 }
27
28 RendererScheduler::~RendererScheduler() {
29 }
30
31 RendererScheduler::RAILModeObserver::~RAILModeObserver() = default;
32
33 // static
34 std::unique_ptr<RendererScheduler> RendererScheduler::Create() {
35 // Ensure worker.scheduler, worker.scheduler.debug and
36 // renderer.scheduler.debug appear as an option in about://tracing
37 base::trace_event::TraceLog::GetCategoryGroupEnabled(
38 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"));
39 base::trace_event::TraceLog::GetCategoryGroupEnabled(
40 TRACE_DISABLED_BY_DEFAULT("worker.scheduler.debug"));
41 base::trace_event::TraceLog::GetCategoryGroupEnabled(
42 TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.debug"));
43
44 base::MessageLoop* message_loop = base::MessageLoop::current();
45 std::unique_ptr<RendererSchedulerImpl> scheduler(
46 new RendererSchedulerImpl(SchedulerTqmDelegateImpl::Create(
47 message_loop, base::WrapUnique(new base::DefaultTickClock()))));
48
49 // Runtime features are not currently available in html_viewer.
50 if (base::FeatureList::GetInstance()) {
51 bool blocking_allowed =
52 base::FeatureList::IsEnabled(kExpensiveTaskBlockingPolicyFeature);
53 // Also check the old style FieldTrial API for perf waterfall compatibility.
54 const std::string group_name = base::FieldTrialList::FindFullName(
55 kExpensiveTaskBlockingPolicyFeature.name);
56 blocking_allowed |= base::StartsWith(group_name, "Enabled",
57 base::CompareCase::INSENSITIVE_ASCII);
58 scheduler->SetExpensiveTaskBlockingAllowed(blocking_allowed);
59 }
60 return base::WrapUnique<RendererScheduler>(scheduler.release());
61 }
62
63 // static
64 const char* RendererScheduler::InputEventStateToString(
65 InputEventState input_event_state) {
66 switch (input_event_state) {
67 case InputEventState::EVENT_CONSUMED_BY_COMPOSITOR:
68 return "event_consumed_by_compositor";
69 case InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD:
70 return "event_forwarded_to_main_thread";
71 default:
72 NOTREACHED();
73 return nullptr;
74 }
75 }
76
77 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler.h ('k') | components/scheduler/renderer/renderer_scheduler_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698