| Index: components/scheduler/renderer/web_view_scheduler_impl.cc
|
| diff --git a/components/scheduler/renderer/web_view_scheduler_impl.cc b/components/scheduler/renderer/web_view_scheduler_impl.cc
|
| index 4ab4c11c570b329381533f53069073ab19c9eb29..48f565c02f6d4df15209c2cf8034ecd53850a7e3 100644
|
| --- a/components/scheduler/renderer/web_view_scheduler_impl.cc
|
| +++ b/components/scheduler/renderer/web_view_scheduler_impl.cc
|
| @@ -24,6 +24,8 @@ WebViewSchedulerImpl::WebViewSchedulerImpl(
|
| : virtual_time_pump_policy_(TaskQueue::PumpPolicy::AUTO),
|
| web_view_(web_view),
|
| renderer_scheduler_(renderer_scheduler),
|
| + pending_resource_load_count_(0),
|
| + virtual_time_policy_(VirtualTimePolicy::ADVANCE),
|
| page_visible_(true),
|
| disable_background_timer_throttling_(disable_background_timer_throttling),
|
| allow_virtual_time_to_advance_(true) {
|
| @@ -112,4 +114,51 @@ void WebViewSchedulerImpl::setAllowVirtualTimeToAdvance(
|
| }
|
| }
|
|
|
| +bool WebViewSchedulerImpl::virtualTimeAllowedToAdvance() const {
|
| + return allow_virtual_time_to_advance_;
|
| +}
|
| +
|
| +void WebViewSchedulerImpl::incrementPendingResourceLoadCount() {
|
| + pending_resource_load_count_++;
|
| +
|
| + if (virtual_time_policy_ !=
|
| + VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING) {
|
| + return;
|
| + }
|
| +
|
| + if (pending_resource_load_count_ == 1)
|
| + setAllowVirtualTimeToAdvance(false);
|
| +}
|
| +
|
| +void WebViewSchedulerImpl::decrementPendingResourceLoadCount() {
|
| + pending_resource_load_count_--;
|
| + DCHECK_GE(pending_resource_load_count_, 0);
|
| +
|
| + if (virtual_time_policy_ !=
|
| + VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING) {
|
| + return;
|
| + }
|
| +
|
| + if (pending_resource_load_count_ == 0)
|
| + setAllowVirtualTimeToAdvance(true);
|
| +}
|
| +
|
| +void WebViewSchedulerImpl::setVirtualTimePolicy(VirtualTimePolicy policy) {
|
| + virtual_time_policy_ = policy;
|
| +
|
| + switch (virtual_time_policy_) {
|
| + case VirtualTimePolicy::ADVANCE:
|
| + setAllowVirtualTimeToAdvance(true);
|
| + break;
|
| +
|
| + case VirtualTimePolicy::PAUSE:
|
| + setAllowVirtualTimeToAdvance(false);
|
| + break;
|
| +
|
| + case VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING:
|
| + setAllowVirtualTimeToAdvance(pending_resource_load_count_ == 0);
|
| + break;
|
| + }
|
| +}
|
| +
|
| } // namespace scheduler
|
|
|