Commit 34077ec2 authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Add first_input_delay to DRP pingback metrics

Bug: 830949
Change-Id: I28e7a998ad712181b358cfc121517e5b43b384ce
Reviewed-on: https://chromium-review.googlesource.com/1044525
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Reviewed-by: default avatarTimothy Dresser <tdresser@chromium.org>
Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556137}
parent 83d0e4f0
...@@ -308,6 +308,7 @@ void DataReductionProxyMetricsObserver::SendPingback( ...@@ -308,6 +308,7 @@ void DataReductionProxyMetricsObserver::SendPingback(
base::Optional<base::TimeDelta> first_image_paint; base::Optional<base::TimeDelta> first_image_paint;
base::Optional<base::TimeDelta> first_contentful_paint; base::Optional<base::TimeDelta> first_contentful_paint;
base::Optional<base::TimeDelta> experimental_first_meaningful_paint; base::Optional<base::TimeDelta> experimental_first_meaningful_paint;
base::Optional<base::TimeDelta> first_input_delay;
base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration; base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration;
base::Optional<base::TimeDelta> parse_stop; base::Optional<base::TimeDelta> parse_stop;
if (WasStartedInForegroundOptionalEventInForeground(timing.response_start, if (WasStartedInForegroundOptionalEventInForeground(timing.response_start,
...@@ -331,6 +332,10 @@ void DataReductionProxyMetricsObserver::SendPingback( ...@@ -331,6 +332,10 @@ void DataReductionProxyMetricsObserver::SendPingback(
experimental_first_meaningful_paint = experimental_first_meaningful_paint =
timing.paint_timing->first_meaningful_paint; timing.paint_timing->first_meaningful_paint;
} }
if (WasStartedInForegroundOptionalEventInForeground(
timing.interactive_timing->first_input_delay, info)) {
first_input_delay = timing.interactive_timing->first_input_delay;
}
if (WasStartedInForegroundOptionalEventInForeground( if (WasStartedInForegroundOptionalEventInForeground(
timing.parse_timing->parse_blocked_on_script_load_duration, info)) { timing.parse_timing->parse_blocked_on_script_load_duration, info)) {
parse_blocked_on_script_load_duration = parse_blocked_on_script_load_duration =
...@@ -379,7 +384,7 @@ void DataReductionProxyMetricsObserver::SendPingback( ...@@ -379,7 +384,7 @@ void DataReductionProxyMetricsObserver::SendPingback(
DataReductionProxyPageLoadTiming data_reduction_proxy_timing( DataReductionProxyPageLoadTiming data_reduction_proxy_timing(
timing.navigation_start, response_start, load_event_start, timing.navigation_start, response_start, load_event_start,
first_image_paint, first_contentful_paint, first_image_paint, first_contentful_paint,
experimental_first_meaningful_paint, experimental_first_meaningful_paint, first_input_delay,
parse_blocked_on_script_load_duration, parse_stop, network_bytes, parse_blocked_on_script_load_duration, parse_stop, network_bytes,
original_network_bytes, total_page_size_bytes, cached_fraction, original_network_bytes, total_page_size_bytes, cached_fraction,
app_background_occurred, opted_out_, renderer_memory_usage_kb_, host_id); app_background_occurred, opted_out_, renderer_memory_usage_kb_, host_id);
......
...@@ -106,6 +106,12 @@ void AddDataToPageloadMetrics(const DataReductionProxyData& request_data, ...@@ -106,6 +106,12 @@ void AddDataToPageloadMetrics(const DataReductionProxyData& request_data,
timing.load_event_start.value()) timing.load_event_start.value())
.release()); .release());
} }
if (timing.first_input_delay) {
request->set_allocated_first_input_delay(
protobuf_parser::CreateDurationFromTimeDelta(
timing.first_input_delay.value())
.release());
}
if (timing.parse_blocked_on_script_load_duration) { if (timing.parse_blocked_on_script_load_duration) {
request->set_allocated_parse_blocked_on_script_load_duration( request->set_allocated_parse_blocked_on_script_load_duration(
protobuf_parser::CreateDurationFromTimeDelta( protobuf_parser::CreateDurationFromTimeDelta(
......
...@@ -136,6 +136,8 @@ class DataReductionProxyPingbackClientImplTest : public testing::Test { ...@@ -136,6 +136,8 @@ class DataReductionProxyPingbackClientImplTest : public testing::Test {
1900)) /* first_contentful_paint */, 1900)) /* first_contentful_paint */,
base::Optional<base::TimeDelta>(base::TimeDelta::FromMilliseconds( base::Optional<base::TimeDelta>(base::TimeDelta::FromMilliseconds(
2000)) /* experimental_first_meaningful_paint */, 2000)) /* experimental_first_meaningful_paint */,
base::Optional<base::TimeDelta>(
base::TimeDelta::FromMilliseconds(3000)) /* first_input_delay */,
base::Optional<base::TimeDelta>(base::TimeDelta::FromMilliseconds( base::Optional<base::TimeDelta>(base::TimeDelta::FromMilliseconds(
100)) /* parse_blocked_on_script_load_duration */, 100)) /* parse_blocked_on_script_load_duration */,
base::Optional<base::TimeDelta>( base::Optional<base::TimeDelta>(
...@@ -237,6 +239,9 @@ TEST_F(DataReductionProxyPingbackClientImplTest, VerifyPingbackContent) { ...@@ -237,6 +239,9 @@ TEST_F(DataReductionProxyPingbackClientImplTest, VerifyPingbackContent) {
timing().experimental_first_meaningful_paint.value(), timing().experimental_first_meaningful_paint.value(),
protobuf_parser::DurationToTimeDelta( protobuf_parser::DurationToTimeDelta(
pageload_metrics.experimental_time_to_first_meaningful_paint())); pageload_metrics.experimental_time_to_first_meaningful_paint()));
EXPECT_EQ(timing().first_input_delay.value(),
protobuf_parser::DurationToTimeDelta(
pageload_metrics.first_input_delay()));
EXPECT_EQ(timing().parse_blocked_on_script_load_duration.value(), EXPECT_EQ(timing().parse_blocked_on_script_load_duration.value(),
protobuf_parser::DurationToTimeDelta( protobuf_parser::DurationToTimeDelta(
pageload_metrics.parse_blocked_on_script_load_duration())); pageload_metrics.parse_blocked_on_script_load_duration()));
...@@ -370,6 +375,9 @@ TEST_F(DataReductionProxyPingbackClientImplTest, ...@@ -370,6 +375,9 @@ TEST_F(DataReductionProxyPingbackClientImplTest,
timing().experimental_first_meaningful_paint.value(), timing().experimental_first_meaningful_paint.value(),
protobuf_parser::DurationToTimeDelta( protobuf_parser::DurationToTimeDelta(
pageload_metrics.experimental_time_to_first_meaningful_paint())); pageload_metrics.experimental_time_to_first_meaningful_paint()));
EXPECT_EQ(timing().first_input_delay.value(),
protobuf_parser::DurationToTimeDelta(
pageload_metrics.first_input_delay()));
EXPECT_EQ(timing().parse_blocked_on_script_load_duration.value(), EXPECT_EQ(timing().parse_blocked_on_script_load_duration.value(),
protobuf_parser::DurationToTimeDelta( protobuf_parser::DurationToTimeDelta(
pageload_metrics.parse_blocked_on_script_load_duration())); pageload_metrics.parse_blocked_on_script_load_duration()));
......
...@@ -13,6 +13,7 @@ DataReductionProxyPageLoadTiming::DataReductionProxyPageLoadTiming( ...@@ -13,6 +13,7 @@ DataReductionProxyPageLoadTiming::DataReductionProxyPageLoadTiming(
const base::Optional<base::TimeDelta>& first_image_paint, const base::Optional<base::TimeDelta>& first_image_paint,
const base::Optional<base::TimeDelta>& first_contentful_paint, const base::Optional<base::TimeDelta>& first_contentful_paint,
const base::Optional<base::TimeDelta>& experimental_first_meaningful_paint, const base::Optional<base::TimeDelta>& experimental_first_meaningful_paint,
const base::Optional<base::TimeDelta>& first_input_delay,
const base::Optional<base::TimeDelta>& const base::Optional<base::TimeDelta>&
parse_blocked_on_script_load_duration, parse_blocked_on_script_load_duration,
const base::Optional<base::TimeDelta>& parse_stop, const base::Optional<base::TimeDelta>& parse_stop,
...@@ -30,6 +31,7 @@ DataReductionProxyPageLoadTiming::DataReductionProxyPageLoadTiming( ...@@ -30,6 +31,7 @@ DataReductionProxyPageLoadTiming::DataReductionProxyPageLoadTiming(
first_image_paint(first_image_paint), first_image_paint(first_image_paint),
first_contentful_paint(first_contentful_paint), first_contentful_paint(first_contentful_paint),
experimental_first_meaningful_paint(experimental_first_meaningful_paint), experimental_first_meaningful_paint(experimental_first_meaningful_paint),
first_input_delay(first_input_delay),
parse_blocked_on_script_load_duration( parse_blocked_on_script_load_duration(
parse_blocked_on_script_load_duration), parse_blocked_on_script_load_duration),
parse_stop(parse_stop), parse_stop(parse_stop),
......
...@@ -22,6 +22,7 @@ struct DataReductionProxyPageLoadTiming { ...@@ -22,6 +22,7 @@ struct DataReductionProxyPageLoadTiming {
const base::Optional<base::TimeDelta>& first_contentful_paint, const base::Optional<base::TimeDelta>& first_contentful_paint,
const base::Optional<base::TimeDelta>& const base::Optional<base::TimeDelta>&
experimental_first_meaningful_paint, experimental_first_meaningful_paint,
const base::Optional<base::TimeDelta>& first_input_delay,
const base::Optional<base::TimeDelta>& const base::Optional<base::TimeDelta>&
parse_blocked_on_script_load_duration, parse_blocked_on_script_load_duration,
const base::Optional<base::TimeDelta>& parse_stop, const base::Optional<base::TimeDelta>& parse_stop,
...@@ -54,6 +55,8 @@ struct DataReductionProxyPageLoadTiming { ...@@ -54,6 +55,8 @@ struct DataReductionProxyPageLoadTiming {
const base::Optional<base::TimeDelta> first_contentful_paint; const base::Optional<base::TimeDelta> first_contentful_paint;
// (Experimental) Time when the page's primary content is painted. // (Experimental) Time when the page's primary content is painted.
const base::Optional<base::TimeDelta> experimental_first_meaningful_paint; const base::Optional<base::TimeDelta> experimental_first_meaningful_paint;
// The queuing delay for the first user input on the page.
const base::Optional<base::TimeDelta> first_input_delay;
// Time that parsing was blocked by loading script. // Time that parsing was blocked by loading script.
const base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration; const base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration;
// Time when parsing completed. // Time when parsing completed.
......
...@@ -168,4 +168,7 @@ message PageloadMetrics { ...@@ -168,4 +168,7 @@ message PageloadMetrics {
// plus the sum of content-length for all resources loaded from the browser // plus the sum of content-length for all resources loaded from the browser
// cache. Secure resources (i.e., HTTPS) that go into this sum are bucketed. // cache. Secure resources (i.e., HTTPS) that go into this sum are bucketed.
optional int64 total_page_size_bytes = 24; optional int64 total_page_size_bytes = 24;
// The queuing delay for the first user input on the page.
optional Duration first_input_delay = 25;
} }
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