Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h |
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h |
index 8ed9ef5107adadf6326f3be80f67021692e64fe7..ed22c4c1f3a6f2aa8f5d3e3a764d3b8cd04102c8 100644 |
--- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h |
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h |
@@ -101,6 +101,7 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
void DidAnimateForInputOnCompositorThread() override; |
void OnRendererBackgrounded() override; |
void OnRendererForegrounded() override; |
+ void OnAudioStateChanged(bool is_audio_playing) override; |
void SuspendRenderer() override; |
void AddPendingNavigation(WebScheduler::NavigatingFrameType type) override; |
void RemovePendingNavigation(WebScheduler::NavigatingFrameType type) override; |
@@ -174,6 +175,8 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
AutoAdvancingVirtualTimeDomain* GetVirtualTimeDomain(); |
+ TimeDomain* GetActiveTimeDomain(); |
+ |
TaskQueueThrottler* task_queue_throttler() const { |
return task_queue_throttler_.get(); |
} |
@@ -213,13 +216,15 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
TaskQueuePolicy timer_queue_policy; |
TaskQueuePolicy default_queue_policy; |
v8::RAILMode rail_mode = v8::PERFORMANCE_ANIMATION; |
+ bool should_disable_throttling = false; |
bool operator==(const Policy& other) const { |
return compositor_queue_policy == other.compositor_queue_policy && |
loading_queue_policy == other.loading_queue_policy && |
timer_queue_policy == other.timer_queue_policy && |
default_queue_policy == other.default_queue_policy && |
- rail_mode == other.rail_mode; |
+ rail_mode == other.rail_mode && |
+ should_disable_throttling == other.should_disable_throttling; |
} |
}; |
@@ -343,6 +348,8 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
static const char* ExpensiveTaskPolicyToString( |
ExpensiveTaskPolicy expensive_task_policy); |
+ bool ShouldDisableThrottlingBecauseOfAudio(base::TimeTicks now); |
+ |
SchedulerHelper helper_; |
IdleHelper idle_helper_; |
std::unique_ptr<TaskQueueThrottler> task_queue_throttler_; |
@@ -386,6 +393,8 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
base::TimeTicks estimated_next_frame_begin; |
base::TimeDelta compositor_frame_interval; |
base::TimeDelta longest_jank_free_task_duration; |
+ base::Optional<base::TimeTicks> last_audio_state_change; |
+ base::TimeDelta throttling_delay_after_audio_is_played; |
int timer_queue_suspend_count; // TIMER_TASK_QUEUE suspended if non-zero. |
int navigation_task_expected_count; |
ExpensiveTaskPolicy expensive_task_policy; |
@@ -405,6 +414,7 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl |
bool begin_frame_not_expected_soon; |
bool in_idle_period_for_testing; |
bool use_virtual_time; |
+ bool is_audio_playing; |
std::set<WebViewSchedulerImpl*> web_view_schedulers; // Not owned. |
RAILModeObserver* rail_mode_observer; // Not owned. |
}; |