| Index: third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
 | 
| diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
 | 
| index 36fb95f9c0855dd395796582acb2fb2a6db685a6..500c89a5ab96c5d9bc8bfdef2f391d834e7d20f3 100644
 | 
| --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
 | 
| +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
 | 
| @@ -179,6 +179,8 @@ void WebViewSchedulerImpl::EnableVirtualTime() {
 | 
|        allow_virtual_time_to_advance_);
 | 
|  
 | 
|    renderer_scheduler_->EnableVirtualTime();
 | 
| +  virtual_time_control_task_queue_ = WebTaskRunnerImpl::Create(
 | 
| +      renderer_scheduler_->VirtualTimeControlTaskQueue());
 | 
|    ApplyVirtualTimePolicyToTimers();
 | 
|  }
 | 
|  
 | 
| @@ -187,6 +189,7 @@ void WebViewSchedulerImpl::DisableVirtualTimeForTesting() {
 | 
|      return;
 | 
|    virtual_time_ = false;
 | 
|    renderer_scheduler_->DisableVirtualTimeForTesting();
 | 
| +  virtual_time_control_task_queue_ = nullptr;
 | 
|    ApplyVirtualTimePolicyToTimers();
 | 
|  }
 | 
|  
 | 
| @@ -260,6 +263,15 @@ void WebViewSchedulerImpl::SetVirtualTimePolicy(VirtualTimePolicy policy) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +void WebViewSchedulerImpl::GrantVirtualTimeBudget(
 | 
| +    base::TimeDelta budget,
 | 
| +    std::unique_ptr<WTF::Closure> budget_exhausted_callback) {
 | 
| +  virtual_time_budget_expired_task_handle_ =
 | 
| +      virtual_time_control_task_queue_->PostDelayedCancellableTask(
 | 
| +          BLINK_FROM_HERE, std::move(budget_exhausted_callback),
 | 
| +          budget.InMilliseconds());
 | 
| +}
 | 
| +
 | 
|  void WebViewSchedulerImpl::AudioStateChanged(bool is_audio_playing) {
 | 
|    is_audio_playing_ = is_audio_playing;
 | 
|    renderer_scheduler_->OnAudioStateChanged();
 | 
| 
 |