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 0dff1a2d6b38baccd3a8f9aa57ad7765673fa251..03d872381339a16661f784cefdc4ece9e00431b3 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 |
@@ -27,7 +27,8 @@ WebViewSchedulerImpl::WebViewSchedulerImpl( |
disable_background_timer_throttling_(disable_background_timer_throttling), |
allow_virtual_time_to_advance_(true), |
have_seen_loading_task_(false), |
- virtual_time_(false) { |
+ virtual_time_(false), |
+ is_audio_playing_(false) { |
renderer_scheduler->AddWebViewScheduler(this); |
} |
@@ -141,6 +142,18 @@ void WebViewSchedulerImpl::setVirtualTimePolicy(VirtualTimePolicy policy) { |
} |
} |
+void WebViewSchedulerImpl::OnAudioStateChangedInFrame() { |
+ bool is_audio_playing = false; |
+ for (WebFrameSchedulerImpl* frame_scheduler : frame_schedulers_) { |
+ is_audio_playing = is_audio_playing || frame_scheduler->IsAudioPlaying(); |
+ } |
+ |
+ if (is_audio_playing_ != is_audio_playing) { |
+ is_audio_playing_ = is_audio_playing; |
+ renderer_scheduler_->OnAudioStateChanged(); |
+ } |
+} |
+ |
void WebViewSchedulerImpl::ApplyVirtualTimePolicy() { |
if (virtual_time_policy_ != VirtualTimePolicy::DETERMINISTIC_LOADING) { |
return; |
@@ -154,5 +167,9 @@ void WebViewSchedulerImpl::ApplyVirtualTimePolicy() { |
have_seen_loading_task_); |
} |
+bool WebViewSchedulerImpl::IsAudioPlaying() const { |
+ return is_audio_playing_; |
+} |
+ |
} // namespace scheduler |
} // namespace blink |