OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/scheduler/renderer/renderer_scheduler_impl.h" | 5 #include "components/scheduler/renderer/renderer_scheduler_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/debug/stack_trace.h" | 8 #include "base/debug/stack_trace.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
112 idle_time_estimator(compositor_task_runner, | 112 idle_time_estimator(compositor_task_runner, |
113 time_source, | 113 time_source, |
114 kShortIdlePeriodDurationSampleCount, | 114 kShortIdlePeriodDurationSampleCount, |
115 kShortIdlePeriodDurationPercentile), | 115 kShortIdlePeriodDurationPercentile), |
116 current_use_case(UseCase::NONE), | 116 current_use_case(UseCase::NONE), |
117 timer_queue_suspend_count(0), | 117 timer_queue_suspend_count(0), |
118 navigation_task_expected_count(0), | 118 navigation_task_expected_count(0), |
119 expensive_task_policy(ExpensiveTaskPolicy::RUN), | 119 expensive_task_policy(ExpensiveTaskPolicy::RUN), |
120 renderer_hidden(false), | 120 renderer_hidden(false), |
121 renderer_backgrounded(false), | 121 renderer_backgrounded(false), |
122 renderer_suspended(false), | |
122 timer_queue_suspension_when_backgrounded_enabled(false), | 123 timer_queue_suspension_when_backgrounded_enabled(false), |
123 timer_queue_suspended_when_backgrounded(false), | 124 timer_queue_suspended_when_backgrounded(false), |
124 was_shutdown(false), | 125 was_shutdown(false), |
125 loading_tasks_seem_expensive(false), | 126 loading_tasks_seem_expensive(false), |
126 timer_tasks_seem_expensive(false), | 127 timer_tasks_seem_expensive(false), |
127 touchstart_expected_soon(false), | 128 touchstart_expected_soon(false), |
128 have_seen_a_begin_main_frame(false), | 129 have_seen_a_begin_main_frame(false), |
129 have_reported_blocking_intervention_in_current_policy(false), | 130 have_reported_blocking_intervention_in_current_policy(false), |
130 have_reported_blocking_intervention_since_navigation(false), | 131 have_reported_blocking_intervention_since_navigation(false), |
131 has_visible_render_widget_with_touch_handler(false), | 132 has_visible_render_widget_with_touch_handler(false), |
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
825 break; | 826 break; |
826 } | 827 } |
827 | 828 |
828 MainThreadOnly().expensive_task_policy = expensive_task_policy; | 829 MainThreadOnly().expensive_task_policy = expensive_task_policy; |
829 | 830 |
830 if (MainThreadOnly().timer_queue_suspend_count != 0 || | 831 if (MainThreadOnly().timer_queue_suspend_count != 0 || |
831 MainThreadOnly().timer_queue_suspended_when_backgrounded) { | 832 MainThreadOnly().timer_queue_suspended_when_backgrounded) { |
832 new_policy.timer_queue_policy.is_enabled = false; | 833 new_policy.timer_queue_policy.is_enabled = false; |
833 } | 834 } |
834 | 835 |
836 if (MainThreadOnly().renderer_suspended) { | |
837 new_policy.loading_queue_policy.is_enabled = false; | |
838 DCHECK(!new_policy.timer_queue_policy.is_enabled); | |
839 } | |
840 | |
835 // Tracing is done before the early out check, because it's quite possible we | 841 // Tracing is done before the early out check, because it's quite possible we |
836 // will otherwise miss this information in traces. | 842 // will otherwise miss this information in traces. |
837 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID( | 843 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID( |
838 TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler", | 844 TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "RendererScheduler", |
839 this, AsValueLocked(now)); | 845 this, AsValueLocked(now)); |
840 TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "use_case", | 846 TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "use_case", |
841 use_case); | 847 use_case); |
842 TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), | 848 TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
843 "touchstart_expected_soon", | 849 "touchstart_expected_soon", |
844 MainThreadOnly().touchstart_expected_soon); | 850 MainThreadOnly().touchstart_expected_soon); |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1207 base::TimeDelta::FromMilliseconds( | 1213 base::TimeDelta::FromMilliseconds( |
1208 kIdlePeriodStarvationThresholdMillis); | 1214 kIdlePeriodStarvationThresholdMillis); |
1209 } | 1215 } |
1210 | 1216 |
1211 void RendererSchedulerImpl::SuspendTimerQueueWhenBackgrounded() { | 1217 void RendererSchedulerImpl::SuspendTimerQueueWhenBackgrounded() { |
1212 DCHECK(MainThreadOnly().renderer_backgrounded); | 1218 DCHECK(MainThreadOnly().renderer_backgrounded); |
1213 if (MainThreadOnly().timer_queue_suspended_when_backgrounded) | 1219 if (MainThreadOnly().timer_queue_suspended_when_backgrounded) |
1214 return; | 1220 return; |
1215 | 1221 |
1216 MainThreadOnly().timer_queue_suspended_when_backgrounded = true; | 1222 MainThreadOnly().timer_queue_suspended_when_backgrounded = true; |
1223 MainThreadOnly().renderer_suspended = true; | |
Sami
2016/05/31 10:11:21
I guess this is just for testing, but ultimately y
hajimehoshi
2016/05/31 11:10:07
Ah, this was my mistake: Setting this variable sho
| |
1217 ForceUpdatePolicy(); | 1224 ForceUpdatePolicy(); |
1218 } | 1225 } |
1219 | 1226 |
1220 void RendererSchedulerImpl::ResumeTimerQueueWhenForegrounded() { | 1227 void RendererSchedulerImpl::ResumeTimerQueueWhenForegrounded() { |
1221 DCHECK(!MainThreadOnly().renderer_backgrounded); | 1228 DCHECK(!MainThreadOnly().renderer_backgrounded); |
1222 if (!MainThreadOnly().timer_queue_suspended_when_backgrounded) | 1229 if (!MainThreadOnly().timer_queue_suspended_when_backgrounded) |
1223 return; | 1230 return; |
1224 | 1231 |
1225 MainThreadOnly().timer_queue_suspended_when_backgrounded = false; | 1232 MainThreadOnly().timer_queue_suspended_when_backgrounded = false; |
1233 MainThreadOnly().renderer_suspended = false; | |
1226 ForceUpdatePolicy(); | 1234 ForceUpdatePolicy(); |
1227 } | 1235 } |
1228 | 1236 |
1229 void RendererSchedulerImpl::ResetForNavigationLocked() { | 1237 void RendererSchedulerImpl::ResetForNavigationLocked() { |
1230 helper_.CheckOnValidThread(); | 1238 helper_.CheckOnValidThread(); |
1231 any_thread_lock_.AssertAcquired(); | 1239 any_thread_lock_.AssertAcquired(); |
1232 AnyThread().user_model.Reset(helper_.scheduler_tqm_delegate()->NowTicks()); | 1240 AnyThread().user_model.Reset(helper_.scheduler_tqm_delegate()->NowTicks()); |
1233 AnyThread().have_seen_touchstart = false; | 1241 AnyThread().have_seen_touchstart = false; |
1234 MainThreadOnly().loading_task_cost_estimator.Clear(); | 1242 MainThreadOnly().loading_task_cost_estimator.Clear(); |
1235 MainThreadOnly().timer_task_cost_estimator.Clear(); | 1243 MainThreadOnly().timer_task_cost_estimator.Clear(); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1324 BroadcastConsoleWarning( | 1332 BroadcastConsoleWarning( |
1325 "Blink deferred a task in order to make scrolling smoother. " | 1333 "Blink deferred a task in order to make scrolling smoother. " |
1326 "Your timer and network tasks should take less than 50ms to run " | 1334 "Your timer and network tasks should take less than 50ms to run " |
1327 "to avoid this. Please see " | 1335 "to avoid this. Please see " |
1328 "https://developers.google.com/web/tools/chrome-devtools/profile/evaluat e-performance/rail" | 1336 "https://developers.google.com/web/tools/chrome-devtools/profile/evaluat e-performance/rail" |
1329 " and https://crbug.com/574343#c40 for more information."); | 1337 " and https://crbug.com/574343#c40 for more information."); |
1330 } | 1338 } |
1331 } | 1339 } |
1332 | 1340 |
1333 } // namespace scheduler | 1341 } // namespace scheduler |
OLD | NEW |