| Index: components/page_load_metrics/common/page_load_timing.h
|
| diff --git a/components/page_load_metrics/common/page_load_timing.h b/components/page_load_metrics/common/page_load_timing.h
|
| index a61551d4a402d20a48b138a6b65bbef78dcc2da7..8d44cfca4c9a8ccee795748ffae679fccef5c42f 100644
|
| --- a/components/page_load_metrics/common/page_load_timing.h
|
| +++ b/components/page_load_metrics/common/page_load_timing.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef COMPONENTS_PAGE_LOAD_METRICS_COMMON_PAGE_LOAD_TIMING_H_
|
| #define COMPONENTS_PAGE_LOAD_METRICS_COMMON_PAGE_LOAD_TIMING_H_
|
|
|
| +#include "base/optional.h"
|
| #include "base/time/time.h"
|
| #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h"
|
|
|
| @@ -28,53 +29,52 @@ struct PageLoadTiming {
|
|
|
| // All TimeDeltas are relative to navigation_start
|
|
|
| - // TODO(shivanisha): Issue 596367 shows that it is possible for a valid
|
| - // TimeDelta value to be 0 (2 TimeTicks can have the same value even if they
|
| - // were assigned in separate instructions if the clock speed is less
|
| - // granular). The solution there was to use base::Optional for those values.
|
| - // Consider changing the below values to Optional as well.
|
| -
|
| // Time that the first byte of the response is received.
|
| - base::TimeDelta response_start;
|
| + base::Optional<base::TimeDelta> response_start;
|
|
|
| // Time that the document transitions to the 'loading' state. This is roughly
|
| // the time that the HTML parser begins parsing the main HTML resource.
|
| - base::TimeDelta dom_loading;
|
| + base::Optional<base::TimeDelta> dom_loading;
|
|
|
| // Time immediately before the DOMContentLoaded event is fired.
|
| - base::TimeDelta dom_content_loaded_event_start;
|
| + base::Optional<base::TimeDelta> dom_content_loaded_event_start;
|
|
|
| // Time immediately before the load event is fired.
|
| - base::TimeDelta load_event_start;
|
| + base::Optional<base::TimeDelta> load_event_start;
|
|
|
| // Time when the first layout is completed.
|
| - base::TimeDelta first_layout;
|
| + base::Optional<base::TimeDelta> first_layout;
|
|
|
| // Time when the first paint is performed.
|
| - base::TimeDelta first_paint;
|
| + base::Optional<base::TimeDelta> first_paint;
|
| // Time when the first non-blank text is painted.
|
| - base::TimeDelta first_text_paint;
|
| + base::Optional<base::TimeDelta> first_text_paint;
|
| // Time when the first image is painted.
|
| - base::TimeDelta first_image_paint;
|
| + base::Optional<base::TimeDelta> first_image_paint;
|
| // Time when the first contentful thing (image, text, etc.) is painted.
|
| - base::TimeDelta first_contentful_paint;
|
| + base::Optional<base::TimeDelta> first_contentful_paint;
|
|
|
| // Time that the document's parser started and stopped parsing main resource
|
| // content.
|
| - base::TimeDelta parse_start;
|
| - base::TimeDelta parse_stop;
|
| + base::Optional<base::TimeDelta> parse_start;
|
| + base::Optional<base::TimeDelta> parse_stop;
|
|
|
| // Sum of times when the parser is blocked waiting on the load of a script.
|
| // This duration takes place between parser_start and parser_stop, and thus
|
| - // must be less than or equal to parser_stop - parser_start.
|
| - base::TimeDelta parse_blocked_on_script_load_duration;
|
| + // must be less than or equal to parser_stop - parser_start. Note that this
|
| + // value may be updated multiple times during the period between parse_start
|
| + // and parse_stop.
|
| + base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration;
|
|
|
| // Sum of times when the parser is blocked waiting on the load of a script
|
| // that was inserted from document.write. This duration must be less than or
|
| - // equal to parse_blocked_on_script_load_duration. Note that some uncommon
|
| - // cases where scripts are loaded via document.write are not currently covered
|
| - // by this field. See crbug/600711 for details.
|
| - base::TimeDelta parse_blocked_on_script_load_from_document_write_duration;
|
| + // equal to parse_blocked_on_script_load_duration. Note that this value may be
|
| + // updated multiple times during the period between parse_start and
|
| + // parse_stop. Note that some uncommon cases where scripts are loaded via
|
| + // document.write are not currently covered by this field. See crbug/600711
|
| + // for details.
|
| + base::Optional<base::TimeDelta>
|
| + parse_blocked_on_script_load_from_document_write_duration;
|
|
|
| // If you add additional members, also be sure to update operator==,
|
| // page_load_metrics_messages.h, and IsEmpty().
|
|
|