Index: components/scheduler/renderer/renderer_scheduler.cc |
diff --git a/components/scheduler/renderer/renderer_scheduler.cc b/components/scheduler/renderer/renderer_scheduler.cc |
index aedc3c6f40bf0c7ba8c43fcf5b13f304a6980503..19a7e00b59644ada27456a9c35df6a4f2cd2202c 100644 |
--- a/components/scheduler/renderer/renderer_scheduler.cc |
+++ b/components/scheduler/renderer/renderer_scheduler.cc |
@@ -5,6 +5,7 @@ |
#include "components/scheduler/renderer/renderer_scheduler.h" |
#include "base/command_line.h" |
+#include "base/feature_list.h" |
#include "base/message_loop/message_loop.h" |
#include "base/time/default_tick_clock.h" |
#include "base/trace_event/trace_event.h" |
@@ -15,6 +16,10 @@ |
#include "components/scheduler/renderer/renderer_scheduler_impl.h" |
namespace scheduler { |
+namespace { |
+const base::Feature kExpensiveTaskBlockingPolicyFeature{ |
+ "SchedulerExpensiveTaskBlocking", base::FEATURE_DISABLED_BY_DEFAULT}; |
+} |
RendererScheduler::RendererScheduler() { |
} |
@@ -33,16 +38,23 @@ scoped_ptr<RendererScheduler> RendererScheduler::Create() { |
base::trace_event::TraceLog::GetCategoryGroupEnabled( |
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.debug")); |
+ scoped_ptr<RendererSchedulerImpl> scheduler; |
base::MessageLoop* message_loop = base::MessageLoop::current(); |
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
if (command_line->HasSwitch(switches::kEnableVirtualizedTime)) { |
- return make_scoped_ptr(new RendererSchedulerImpl( |
+ scheduler.reset(new RendererSchedulerImpl( |
VirtualTimeTqmDelegate::Create(message_loop, base::TimeTicks::Now()))); |
} else { |
- return make_scoped_ptr( |
- new RendererSchedulerImpl(SchedulerTqmDelegateImpl::Create( |
- message_loop, make_scoped_ptr(new base::DefaultTickClock())))); |
+ scheduler.reset(new RendererSchedulerImpl(SchedulerTqmDelegateImpl::Create( |
+ message_loop, make_scoped_ptr(new base::DefaultTickClock())))); |
+ } |
+ |
+ // Runtime features are not currently available in html_viewer. |
+ if (base::FeatureList::GetInstance()) { |
+ scheduler->SetExpensiveTaskBlockingAllowed( |
+ base::FeatureList::IsEnabled(kExpensiveTaskBlockingPolicyFeature)); |
} |
+ return make_scoped_ptr<RendererScheduler>(scheduler.release()); |
} |
// static |