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(). |