Commit 4b465cae authored by Dan Elphick's avatar Dan Elphick Committed by Commit Bot

Use a unique ID for each Renderer Scheduler trace event

Renderer Scheduler trace events now use the location of the
TraceableState/TraceableCounter to generate the local ID instead of all
using the address of the MainThreadSchedulerImpl. This is done by
removing the object_ field from TraceableState/TraceableCounter and just
using "this" to generate the ID.

Change-Id: I33f126b23e1f4f149d939e08c09843b695a2073a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2324121Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#793588}
parent 655628a0
...@@ -23,7 +23,6 @@ CPUTimeBudgetPool::CPUTimeBudgetPool( ...@@ -23,7 +23,6 @@ CPUTimeBudgetPool::CPUTimeBudgetPool(
: BudgetPool(name, budget_pool_controller), : BudgetPool(name, budget_pool_controller),
current_budget_level_(base::TimeDelta(), current_budget_level_(base::TimeDelta(),
"RendererScheduler.BackgroundBudgetMs", "RendererScheduler.BackgroundBudgetMs",
budget_pool_controller,
tracing_controller, tracing_controller,
TimeDeltaToMilliseconds), TimeDeltaToMilliseconds),
last_checkpoint_(now), last_checkpoint_(now),
......
...@@ -93,14 +93,13 @@ class StateTracer { ...@@ -93,14 +93,13 @@ class StateTracer {
DISALLOW_NEW(); DISALLOW_NEW();
public: public:
StateTracer(const char* name, const void* object) explicit StateTracer(const char* name) : name_(name), slice_is_open_(false) {
: name_(name), object_(object), slice_is_open_(false) {
internal::ValidateTracingCategory(category); internal::ValidateTracingCategory(category);
} }
~StateTracer() { ~StateTracer() {
if (slice_is_open_) if (slice_is_open_)
TRACE_EVENT_NESTABLE_ASYNC_END0(category, name_, TRACE_ID_LOCAL(object_)); TRACE_EVENT_NESTABLE_ASYNC_END0(category, name_, TRACE_ID_LOCAL(this));
} }
// String will be copied before leaving this function. // String will be copied before leaving this function.
...@@ -122,25 +121,23 @@ class StateTracer { ...@@ -122,25 +121,23 @@ class StateTracer {
private: private:
void TraceImpl(const char* state, bool need_copy) { void TraceImpl(const char* state, bool need_copy) {
if (slice_is_open_) { if (slice_is_open_) {
TRACE_EVENT_NESTABLE_ASYNC_END0(category, name_, TRACE_ID_LOCAL(object_)); TRACE_EVENT_NESTABLE_ASYNC_END0(category, name_, TRACE_ID_LOCAL(this));
slice_is_open_ = false; slice_is_open_ = false;
} }
if (!state || !is_enabled()) if (!state || !is_enabled())
return; return;
if (need_copy) { if (need_copy) {
TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(category, name_, TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(category, name_, TRACE_ID_LOCAL(this),
TRACE_ID_LOCAL(object_), "state", "state", TRACE_STR_COPY(state));
TRACE_STR_COPY(state));
} else { } else {
TRACE_EVENT_NESTABLE_ASYNC_BEGIN1( TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(category, name_, TRACE_ID_LOCAL(this),
category, name_, TRACE_ID_LOCAL(object_), "state", state); "state", state);
} }
slice_is_open_ = true; slice_is_open_ = true;
} }
const char* const name_; // Not owned. const char* const name_; // Not owned.
const void* const object_; // Not owned.
// We have to track whether slice is open to avoid confusion since assignment, // We have to track whether slice is open to avoid confusion since assignment,
// "absent" state and OnTraceLogEnabled can happen anytime. // "absent" state and OnTraceLogEnabled can happen anytime.
...@@ -160,11 +157,10 @@ class TraceableState : public TraceableVariable, private StateTracer<category> { ...@@ -160,11 +157,10 @@ class TraceableState : public TraceableVariable, private StateTracer<category> {
TraceableState(T initial_state, TraceableState(T initial_state,
const char* name, const char* name,
const void* object,
TraceableVariableController* controller, TraceableVariableController* controller,
ConverterFuncPtr converter) ConverterFuncPtr converter)
: TraceableVariable(controller), : TraceableVariable(controller),
StateTracer<category>(name, object), StateTracer<category>(name),
converter_(converter), converter_(converter),
state_(initial_state) { state_(initial_state) {
Trace(); Trace();
...@@ -227,12 +223,10 @@ class TraceableCounter : public TraceableVariable { ...@@ -227,12 +223,10 @@ class TraceableCounter : public TraceableVariable {
TraceableCounter(T initial_value, TraceableCounter(T initial_value,
const char* name, const char* name,
const void* object,
TraceableVariableController* controller, TraceableVariableController* controller,
ConverterFuncPtr converter) ConverterFuncPtr converter)
: TraceableVariable(controller), : TraceableVariable(controller),
name_(name), name_(name),
object_(object),
converter_(converter), converter_(converter),
value_(initial_value) { value_(initial_value) {
internal::ValidateTracingCategory(category); internal::ValidateTracingCategory(category);
...@@ -241,16 +235,10 @@ class TraceableCounter : public TraceableVariable { ...@@ -241,16 +235,10 @@ class TraceableCounter : public TraceableVariable {
TraceableCounter(T initial_value, TraceableCounter(T initial_value,
const char* name, const char* name,
const void* object,
TraceableVariableController* controller) TraceableVariableController* controller)
: TraceableVariable(controller), : TraceableCounter(initial_value, name, controller, [](const T& value) {
name_(name), return static_cast<double>(value);
object_(object), }) {}
converter_([](const T& value) { return static_cast<double>(value); }),
value_(initial_value) {
internal::ValidateTracingCategory(category);
Trace();
}
TraceableCounter& operator=(const T& value) { TraceableCounter& operator=(const T& value) {
value_ = value; value_ = value;
...@@ -281,12 +269,11 @@ class TraceableCounter : public TraceableVariable { ...@@ -281,12 +269,11 @@ class TraceableCounter : public TraceableVariable {
void OnTraceLogEnabled() final { Trace(); } void OnTraceLogEnabled() final { Trace(); }
void Trace() const { void Trace() const {
TRACE_COUNTER_ID1(category, name_, object_, converter_(value_)); TRACE_COUNTER_ID1(category, name_, this, converter_(value_));
} }
private: private:
const char* const name_; // Not owned. const char* const name_; // Not owned.
const void* const object_; // Not owned.
const ConverterFuncPtr converter_; const ConverterFuncPtr converter_;
T value_; T value_;
......
...@@ -36,7 +36,7 @@ class TraceableStateForTest ...@@ -36,7 +36,7 @@ class TraceableStateForTest
: public TraceableState<int, TracingCategoryName::kDefault> { : public TraceableState<int, TracingCategoryName::kDefault> {
public: public:
TraceableStateForTest(TraceableVariableController* controller) TraceableStateForTest(TraceableVariableController* controller)
: TraceableState(0, "State", controller, controller, SignOfInt) { : TraceableState(0, "State", controller, SignOfInt) {
// We shouldn't expect trace in constructor here because mock isn't set yet. // We shouldn't expect trace in constructor here because mock isn't set yet.
mock_trace_for_test_ = &MockTrace; mock_trace_for_test_ = &MockTrace;
} }
...@@ -73,9 +73,9 @@ TEST(TracingHelperTest, TraceableState) { ...@@ -73,9 +73,9 @@ TEST(TracingHelperTest, TraceableState) {
TEST(TracingHelperTest, TraceableStateOperators) { TEST(TracingHelperTest, TraceableStateOperators) {
TraceableVariableController controller; TraceableVariableController controller;
TraceableState<int, TracingCategoryName::kDebug> x(-1, "X", &controller, TraceableState<int, TracingCategoryName::kDebug> x(-1, "X", &controller,
&controller, SignOfInt); SignOfInt);
TraceableState<int, TracingCategoryName::kDebug> y(1, "Y", &controller, TraceableState<int, TracingCategoryName::kDebug> y(1, "Y", &controller,
&controller, SignOfInt); SignOfInt);
EXPECT_EQ(0, x + y); EXPECT_EQ(0, x + y);
EXPECT_FALSE(x == y); EXPECT_FALSE(x == y);
EXPECT_TRUE(x != y); EXPECT_TRUE(x != y);
......
...@@ -123,62 +123,52 @@ FrameSchedulerImpl::FrameSchedulerImpl( ...@@ -123,62 +123,52 @@ FrameSchedulerImpl::FrameSchedulerImpl(
throttling_state_(SchedulingLifecycleState::kNotThrottled), throttling_state_(SchedulingLifecycleState::kNotThrottled),
frame_visible_(true, frame_visible_(true,
"FrameScheduler.FrameVisible", "FrameScheduler.FrameVisible",
this,
&tracing_controller_, &tracing_controller_,
VisibilityStateToString), VisibilityStateToString),
frame_paused_(false, frame_paused_(false,
"FrameScheduler.FramePaused", "FrameScheduler.FramePaused",
this,
&tracing_controller_, &tracing_controller_,
PausedStateToString), PausedStateToString),
frame_origin_type_(frame_type == FrameType::kMainFrame frame_origin_type_(frame_type == FrameType::kMainFrame
? FrameOriginType::kMainFrame ? FrameOriginType::kMainFrame
: FrameOriginType::kSameOriginToMainFrame, : FrameOriginType::kSameOriginToMainFrame,
"FrameScheduler.Origin", "FrameScheduler.Origin",
this,
&tracing_controller_, &tracing_controller_,
FrameOriginTypeToString), FrameOriginTypeToString),
subresource_loading_paused_(false, subresource_loading_paused_(false,
"FrameScheduler.SubResourceLoadingPaused", "FrameScheduler.SubResourceLoadingPaused",
this,
&tracing_controller_, &tracing_controller_,
PausedStateToString), PausedStateToString),
url_tracer_("FrameScheduler.URL", this), url_tracer_("FrameScheduler.URL"),
task_queues_throttled_(false, task_queues_throttled_(false,
"FrameScheduler.TaskQueuesThrottled", "FrameScheduler.TaskQueuesThrottled",
this,
&tracing_controller_, &tracing_controller_,
YesNoStateToString), YesNoStateToString),
preempted_for_cooperative_scheduling_( preempted_for_cooperative_scheduling_(
false, false,
"FrameScheduler.PreemptedForCooperativeScheduling", "FrameScheduler.PreemptedForCooperativeScheduling",
this,
&tracing_controller_, &tracing_controller_,
YesNoStateToString), YesNoStateToString),
all_throttling_opt_out_count_(0), all_throttling_opt_out_count_(0),
aggressive_throttling_opt_out_count_(0), aggressive_throttling_opt_out_count_(0),
opted_out_from_all_throttling_(false, opted_out_from_all_throttling_(false,
"FrameScheduler.AllThrottlingDisabled", "FrameScheduler.AllThrottlingDisabled",
this,
&tracing_controller_, &tracing_controller_,
YesNoStateToString), YesNoStateToString),
opted_out_from_aggressive_throttling_( opted_out_from_aggressive_throttling_(
false, false,
"FrameScheduler.AggressiveThrottlingDisabled", "FrameScheduler.AggressiveThrottlingDisabled",
this,
&tracing_controller_, &tracing_controller_,
YesNoStateToString), YesNoStateToString),
subresource_loading_pause_count_(0u), subresource_loading_pause_count_(0u),
opted_out_from_back_forward_cache_( opted_out_from_back_forward_cache_(
false, false,
"FrameScheduler.OptedOutFromBackForwardCache", "FrameScheduler.OptedOutFromBackForwardCache",
this,
&tracing_controller_, &tracing_controller_,
YesNoStateToString), YesNoStateToString),
page_frozen_for_tracing_( page_frozen_for_tracing_(
parent_page_scheduler_ ? parent_page_scheduler_->IsFrozen() : true, parent_page_scheduler_ ? parent_page_scheduler_->IsFrozen() : true,
"FrameScheduler.PageFrozen", "FrameScheduler.PageFrozen",
this,
&tracing_controller_, &tracing_controller_,
FrozenStateToString), FrozenStateToString),
page_visibility_for_tracing_( page_visibility_for_tracing_(
...@@ -186,23 +176,19 @@ FrameSchedulerImpl::FrameSchedulerImpl( ...@@ -186,23 +176,19 @@ FrameSchedulerImpl::FrameSchedulerImpl(
? PageVisibilityState::kVisible ? PageVisibilityState::kVisible
: PageVisibilityState::kHidden, : PageVisibilityState::kHidden,
"FrameScheduler.PageVisibility", "FrameScheduler.PageVisibility",
this,
&tracing_controller_, &tracing_controller_,
PageVisibilityStateToString), PageVisibilityStateToString),
page_keep_active_for_tracing_( page_keep_active_for_tracing_(
parent_page_scheduler_ ? parent_page_scheduler_->KeepActive() : false, parent_page_scheduler_ ? parent_page_scheduler_->KeepActive() : false,
"FrameScheduler.KeepActive", "FrameScheduler.KeepActive",
this,
&tracing_controller_, &tracing_controller_,
KeepActiveStateToString), KeepActiveStateToString),
waiting_for_contentful_paint_(true, waiting_for_contentful_paint_(true,
"FrameScheduler.WaitingForContentfulPaint", "FrameScheduler.WaitingForContentfulPaint",
this,
&tracing_controller_, &tracing_controller_,
YesNoStateToString), YesNoStateToString),
waiting_for_meaningful_paint_(true, waiting_for_meaningful_paint_(true,
"FrameScheduler.WaitingForMeaningfulPaint", "FrameScheduler.WaitingForMeaningfulPaint",
this,
&tracing_controller_, &tracing_controller_,
YesNoStateToString) { YesNoStateToString) {
frame_task_queue_controller_.reset( frame_task_queue_controller_.reset(
......
...@@ -348,94 +348,77 @@ MainThreadSchedulerImpl::MainThreadOnly::MainThreadOnly( ...@@ -348,94 +348,77 @@ MainThreadSchedulerImpl::MainThreadOnly::MainThreadOnly(
kShortIdlePeriodDurationPercentile), kShortIdlePeriodDurationPercentile),
current_use_case(UseCase::kNone, current_use_case(UseCase::kNone,
"Scheduler.UseCase", "Scheduler.UseCase",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
UseCaseToString), UseCaseToString),
longest_jank_free_task_duration( longest_jank_free_task_duration(
base::TimeDelta(), base::TimeDelta(),
"Scheduler.LongestJankFreeTaskDuration", "Scheduler.LongestJankFreeTaskDuration",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
TimeDeltaToMilliseconds), TimeDeltaToMilliseconds),
renderer_pause_count(0, renderer_pause_count(0,
"Scheduler.PauseCount", "Scheduler.PauseCount",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_), &main_thread_scheduler_impl->tracing_controller_),
rail_mode_for_tracing(current_policy.rail_mode(), rail_mode_for_tracing(current_policy.rail_mode(),
"Scheduler.RAILMode", "Scheduler.RAILMode",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
RAILModeToString), RAILModeToString),
renderer_hidden(false, renderer_hidden(false,
"RendererVisibility", "RendererVisibility",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
HiddenStateToString), HiddenStateToString),
renderer_backgrounded(kLaunchingProcessIsBackgrounded, renderer_backgrounded(kLaunchingProcessIsBackgrounded,
"RendererPriority", "RendererPriority",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
BackgroundStateToString), BackgroundStateToString),
keep_active_fetch_or_worker( keep_active_fetch_or_worker(
false, false,
"Scheduler.KeepRendererActive", "Scheduler.KeepRendererActive",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
blocking_input_expected_soon( blocking_input_expected_soon(
false, false,
"Scheduler.BlockingInputExpectedSoon", "Scheduler.BlockingInputExpectedSoon",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
have_reported_blocking_intervention_in_current_policy( have_reported_blocking_intervention_in_current_policy(
false, false,
"Scheduler.HasReportedBlockingInterventionInCurrentPolicy", "Scheduler.HasReportedBlockingInterventionInCurrentPolicy",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
have_reported_blocking_intervention_since_navigation( have_reported_blocking_intervention_since_navigation(
false, false,
"Scheduler.HasReportedBlockingInterventionSinceNavigation", "Scheduler.HasReportedBlockingInterventionSinceNavigation",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
has_visible_render_widget_with_touch_handler( has_visible_render_widget_with_touch_handler(
false, false,
"Scheduler.HasVisibleRenderWidgetWithTouchHandler", "Scheduler.HasVisibleRenderWidgetWithTouchHandler",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
in_idle_period_for_testing( in_idle_period_for_testing(
false, false,
"Scheduler.InIdlePeriod", "Scheduler.InIdlePeriod",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
use_virtual_time(false, use_virtual_time(false,
"Scheduler.UseVirtualTime", "Scheduler.UseVirtualTime",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
is_audio_playing(false, is_audio_playing(false,
"RendererAudioState", "RendererAudioState",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
AudioPlayingStateToString), AudioPlayingStateToString),
compositor_will_send_main_frame_not_expected( compositor_will_send_main_frame_not_expected(
false, false,
"Scheduler.CompositorWillSendMainFrameNotExpected", "Scheduler.CompositorWillSendMainFrameNotExpected",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
has_navigated(false, has_navigated(false,
"Scheduler.HasNavigated", "Scheduler.HasNavigated",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
pause_timers_for_webview(false, pause_timers_for_webview(false,
"Scheduler.PauseTimersForWebview", "Scheduler.PauseTimersForWebview",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
background_status_changed_at(now), background_status_changed_at(now),
...@@ -446,19 +429,16 @@ MainThreadSchedulerImpl::MainThreadOnly::MainThreadOnly( ...@@ -446,19 +429,16 @@ MainThreadSchedulerImpl::MainThreadOnly::MainThreadOnly(
renderer_backgrounded), renderer_backgrounded),
process_type(WebRendererProcessType::kRenderer, process_type(WebRendererProcessType::kRenderer,
"RendererProcessType", "RendererProcessType",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
RendererProcessTypeToString), RendererProcessTypeToString),
task_description_for_tracing( task_description_for_tracing(
base::nullopt, base::nullopt,
"Scheduler.MainThreadTask", "Scheduler.MainThreadTask",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
OptionalTaskDescriptionToString), OptionalTaskDescriptionToString),
task_priority_for_tracing( task_priority_for_tracing(
base::nullopt, base::nullopt,
"Scheduler.TaskPriority", "Scheduler.TaskPriority",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
OptionalTaskPriorityToString), OptionalTaskPriorityToString),
virtual_time_policy(VirtualTimePolicy::kAdvance), virtual_time_policy(VirtualTimePolicy::kAdvance),
...@@ -469,7 +449,6 @@ MainThreadSchedulerImpl::MainThreadOnly::MainThreadOnly( ...@@ -469,7 +449,6 @@ MainThreadSchedulerImpl::MainThreadOnly::MainThreadOnly(
prioritize_compositing_after_input( prioritize_compositing_after_input(
false, false,
"Scheduler.PrioritizeCompositingAfterInput", "Scheduler.PrioritizeCompositingAfterInput",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
compositor_priority_experiments(main_thread_scheduler_impl), compositor_priority_experiments(main_thread_scheduler_impl),
...@@ -482,60 +461,50 @@ MainThreadSchedulerImpl::AnyThread::AnyThread( ...@@ -482,60 +461,50 @@ MainThreadSchedulerImpl::AnyThread::AnyThread(
: awaiting_touch_start_response( : awaiting_touch_start_response(
false, false,
"Scheduler.AwaitingTouchstartResponse", "Scheduler.AwaitingTouchstartResponse",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
in_idle_period(false, in_idle_period(false,
"Scheduler.InIdlePeriod", "Scheduler.InIdlePeriod",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
begin_main_frame_on_critical_path( begin_main_frame_on_critical_path(
false, false,
"Scheduler.BeginMainFrameOnCriticalPath", "Scheduler.BeginMainFrameOnCriticalPath",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
last_gesture_was_compositor_driven( last_gesture_was_compositor_driven(
false, false,
"Scheduler.LastGestureWasCompositorDriven", "Scheduler.LastGestureWasCompositorDriven",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
default_gesture_prevented( default_gesture_prevented(
true, true,
"Scheduler.DefaultGesturePrevented", "Scheduler.DefaultGesturePrevented",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
have_seen_a_blocking_gesture( have_seen_a_blocking_gesture(
false, false,
"Scheduler.HaveSeenBlockingGesture", "Scheduler.HaveSeenBlockingGesture",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
waiting_for_any_main_frame_contentful_paint( waiting_for_any_main_frame_contentful_paint(
false, false,
"Scheduler.WaitingForMainFrameContentfulPaint", "Scheduler.WaitingForMainFrameContentfulPaint",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
waiting_for_any_main_frame_meaningful_paint( waiting_for_any_main_frame_meaningful_paint(
false, false,
"Scheduler.WaitingForMeaningfulPaint", "Scheduler.WaitingForMeaningfulPaint",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
have_seen_input_since_navigation( have_seen_input_since_navigation(
false, false,
"Scheduler.HaveSeenInputSinceNavigation", "Scheduler.HaveSeenInputSinceNavigation",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
YesNoStateToString), YesNoStateToString),
begin_main_frame_scheduled_count( begin_main_frame_scheduled_count(
0, 0,
"Scheduler.BeginMainFrameScheduledCount", "Scheduler.BeginMainFrameScheduledCount",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_) {} &main_thread_scheduler_impl->tracing_controller_) {}
MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() { MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment