| 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 "platform/scheduler/renderer/renderer_scheduler_impl.h" | 5 #include "platform/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 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 | 542 |
| 543 MainThreadOnly().last_audio_state_change = | 543 MainThreadOnly().last_audio_state_change = |
| 544 helper_.scheduler_tqm_delegate()->NowTicks(); | 544 helper_.scheduler_tqm_delegate()->NowTicks(); |
| 545 MainThreadOnly().is_audio_playing = is_audio_playing; | 545 MainThreadOnly().is_audio_playing = is_audio_playing; |
| 546 | 546 |
| 547 UpdatePolicy(); | 547 UpdatePolicy(); |
| 548 } | 548 } |
| 549 | 549 |
| 550 void RendererSchedulerImpl::SuspendRenderer() { | 550 void RendererSchedulerImpl::SuspendRenderer() { |
| 551 helper_.CheckOnValidThread(); | 551 helper_.CheckOnValidThread(); |
| 552 DCHECK(MainThreadOnly().renderer_backgrounded); | |
| 553 if (helper_.IsShutdown()) | 552 if (helper_.IsShutdown()) |
| 554 return; | 553 return; |
| 554 if (!MainThreadOnly().renderer_backgrounded) |
| 555 return; |
| 555 suspend_timers_when_backgrounded_closure_.Cancel(); | 556 suspend_timers_when_backgrounded_closure_.Cancel(); |
| 556 | 557 |
| 557 UMA_HISTOGRAM_COUNTS("PurgeAndSuspend.PendingTaskCount", | 558 UMA_HISTOGRAM_COUNTS("PurgeAndSuspend.PendingTaskCount", |
| 558 helper_.GetNumberOfPendingTasks()); | 559 helper_.GetNumberOfPendingTasks()); |
| 559 | 560 |
| 560 // TODO(hajimehoshi): We might need to suspend not only timer queue but also | 561 // TODO(hajimehoshi): We might need to suspend not only timer queue but also |
| 561 // e.g. loading tasks or postMessage. | 562 // e.g. loading tasks or postMessage. |
| 562 MainThreadOnly().renderer_suspended = true; | 563 MainThreadOnly().renderer_suspended = true; |
| 563 SuspendTimerQueueWhenBackgrounded(); | 564 SuspendTimerQueueWhenBackgrounded(); |
| 564 } | 565 } |
| 565 | 566 |
| 566 void RendererSchedulerImpl::ResumeRenderer() { | 567 void RendererSchedulerImpl::ResumeRenderer() { |
| 567 helper_.CheckOnValidThread(); | 568 helper_.CheckOnValidThread(); |
| 568 DCHECK(MainThreadOnly().renderer_backgrounded); | |
| 569 if (helper_.IsShutdown()) | 569 if (helper_.IsShutdown()) |
| 570 return; | 570 return; |
| 571 if (!MainThreadOnly().renderer_backgrounded) |
| 572 return; |
| 571 suspend_timers_when_backgrounded_closure_.Cancel(); | 573 suspend_timers_when_backgrounded_closure_.Cancel(); |
| 572 MainThreadOnly().renderer_suspended = false; | 574 MainThreadOnly().renderer_suspended = false; |
| 573 ResumeTimerQueueWhenForegroundedOrResumed(); | 575 ResumeTimerQueueWhenForegroundedOrResumed(); |
| 574 } | 576 } |
| 575 | 577 |
| 576 void RendererSchedulerImpl::EndIdlePeriod() { | 578 void RendererSchedulerImpl::EndIdlePeriod() { |
| 577 if (MainThreadOnly().in_idle_period_for_testing) | 579 if (MainThreadOnly().in_idle_period_for_testing) |
| 578 return; | 580 return; |
| 579 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), | 581 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
| 580 "RendererSchedulerImpl::EndIdlePeriod"); | 582 "RendererSchedulerImpl::EndIdlePeriod"); |
| (...skipping 1288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1869 case TimeDomainType::VIRTUAL: | 1871 case TimeDomainType::VIRTUAL: |
| 1870 return "virtual"; | 1872 return "virtual"; |
| 1871 default: | 1873 default: |
| 1872 NOTREACHED(); | 1874 NOTREACHED(); |
| 1873 return nullptr; | 1875 return nullptr; |
| 1874 } | 1876 } |
| 1875 } | 1877 } |
| 1876 | 1878 |
| 1877 } // namespace scheduler | 1879 } // namespace scheduler |
| 1878 } // namespace blink | 1880 } // namespace blink |
| OLD | NEW |