| 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 da4e80b30b6fdcd2655f330e39d74d0bfb386137..0a9122f5502064f94b66d6ac0463b176c9590c15 100644 | 
| --- a/components/scheduler/renderer/web_view_scheduler_impl.cc | 
| +++ b/components/scheduler/renderer/web_view_scheduler_impl.cc | 
| @@ -25,6 +25,7 @@ WebViewSchedulerImpl::WebViewSchedulerImpl( | 
| web_view_(web_view), | 
| renderer_scheduler_(renderer_scheduler), | 
| virtual_time_policy_(VirtualTimePolicy::ADVANCE), | 
| +      background_parser_count_(0), | 
| page_visible_(true), | 
| disable_background_timer_throttling_(disable_background_timer_throttling), | 
| allow_virtual_time_to_advance_(true) { | 
| @@ -119,26 +120,23 @@ bool WebViewSchedulerImpl::virtualTimeAllowedToAdvance() const { | 
|  | 
| void WebViewSchedulerImpl::DidStartLoading(unsigned long identifier) { | 
| pending_loads_.insert(identifier); | 
| - | 
| -  if (virtual_time_policy_ != | 
| -      VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING) { | 
| -    return; | 
| -  } | 
| - | 
| -  if (pending_loads_.size() == 1u) | 
| -    setAllowVirtualTimeToAdvance(false); | 
| +  ApplyVirtualTimePolicy(); | 
| } | 
|  | 
| void WebViewSchedulerImpl::DidStopLoading(unsigned long identifier) { | 
| pending_loads_.erase(identifier); | 
| +  ApplyVirtualTimePolicy(); | 
| +} | 
|  | 
| -  if (virtual_time_policy_ != | 
| -      VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING) { | 
| -      return; | 
| -  } | 
| +void WebViewSchedulerImpl::IncrementBackgroundParserCount() { | 
| +  background_parser_count_++; | 
| +  ApplyVirtualTimePolicy(); | 
| +} | 
|  | 
| -  if (pending_loads_.size() == 0) | 
| -      setAllowVirtualTimeToAdvance(true); | 
| +void WebViewSchedulerImpl::DecrementBackgroundParserCount() { | 
| +  background_parser_count_--; | 
| +  DCHECK_GE(background_parser_count_, 0); | 
| +  ApplyVirtualTimePolicy(); | 
| } | 
|  | 
| void WebViewSchedulerImpl::setVirtualTimePolicy(VirtualTimePolicy policy) { | 
| @@ -153,10 +151,19 @@ void WebViewSchedulerImpl::setVirtualTimePolicy(VirtualTimePolicy policy) { | 
| setAllowVirtualTimeToAdvance(false); | 
| break; | 
|  | 
| -    case VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING: | 
| -      setAllowVirtualTimeToAdvance(pending_loads_.size() == 0); | 
| +    case VirtualTimePolicy::DETERMINISTIC_LOADING: | 
| +      ApplyVirtualTimePolicy(); | 
| break; | 
| } | 
| } | 
|  | 
| +void WebViewSchedulerImpl::ApplyVirtualTimePolicy() { | 
| +  if (virtual_time_policy_ != VirtualTimePolicy::DETERMINISTIC_LOADING) { | 
| +    return; | 
| +  } | 
| + | 
| +  setAllowVirtualTimeToAdvance(pending_loads_.size() == 0 && | 
| +                               background_parser_count_ == 0); | 
| +} | 
| + | 
| }  // namespace scheduler | 
|  |