| Index: components/page_load_metrics/browser/page_load_metrics_observer.h | 
| diff --git a/components/page_load_metrics/browser/page_load_metrics_observer.h b/components/page_load_metrics/browser/page_load_metrics_observer.h | 
| index 796a3678ce8a12b490c55192a38262a9f00aa46d..3146f129803eb06e2513b896fdd1ad00b047740c 100644 | 
| --- a/components/page_load_metrics/browser/page_load_metrics_observer.h | 
| +++ b/components/page_load_metrics/browser/page_load_metrics_observer.h | 
| @@ -6,6 +6,7 @@ | 
| #define COMPONENTS_PAGE_LOAD_METRICS_BROWSER_PAGE_LOAD_METRICS_OBSERVER_H_ | 
|  | 
| #include "base/macros.h" | 
| +#include "base/optional.h" | 
| #include "components/page_load_metrics/common/page_load_timing.h" | 
| #include "content/public/browser/navigation_handle.h" | 
| #include "third_party/WebKit/public/web/WebInputEvent.h" | 
| @@ -50,23 +51,25 @@ enum UserAbortType { | 
| }; | 
|  | 
| struct PageLoadExtraInfo { | 
| -  PageLoadExtraInfo(base::TimeDelta first_background_time, | 
| -                    base::TimeDelta first_foreground_time, | 
| -                    bool started_in_foreground, | 
| -                    const GURL& committed_url, | 
| -                    base::TimeDelta time_to_commit, | 
| -                    UserAbortType abort_type, | 
| -                    base::TimeDelta time_to_abort, | 
| -                    const PageLoadMetadata& metadata); | 
| +  PageLoadExtraInfo( | 
| +      const base::Optional<base::TimeDelta>& first_background_time, | 
| +      const base::Optional<base::TimeDelta>& first_foreground_time, | 
| +      bool started_in_foreground, | 
| +      const GURL& committed_url, | 
| +      const base::Optional<base::TimeDelta>& time_to_commit, | 
| +      UserAbortType abort_type, | 
| +      const base::Optional<base::TimeDelta>& time_to_abort, | 
| +      const PageLoadMetadata& metadata); | 
| + | 
| PageLoadExtraInfo(const PageLoadExtraInfo& other); | 
|  | 
| +  ~PageLoadExtraInfo(); | 
| + | 
| // The first time that the page was backgrounded since the navigation started. | 
| -  // If the page has not been backgrounded this will be base::TimeDelta(). | 
| -  const base::TimeDelta first_background_time; | 
| +  const base::Optional<base::TimeDelta> first_background_time; | 
|  | 
| // The first time that the page was foregrounded since the navigation started. | 
| -  // If the page has not been foregrounded this will be base::TimeDelta(). | 
| -  const base::TimeDelta first_foreground_time; | 
| +  const base::Optional<base::TimeDelta> first_foreground_time; | 
|  | 
| // True if the page load started in the foreground. | 
| const bool started_in_foreground; | 
| @@ -75,15 +78,13 @@ struct PageLoadExtraInfo { | 
| // empty. | 
| const GURL committed_url; | 
|  | 
| -  // Time from navigation start until commit. If the page load did not commit, | 
| -  // |time_to_commit| will be zero. | 
| -  const base::TimeDelta time_to_commit; | 
| +  // Time from navigation start until commit. | 
| +  const base::Optional<base::TimeDelta> time_to_commit; | 
|  | 
| // The abort time and time to abort for this page load. If the page was not | 
| -  // aborted, |abort_type| will be |ABORT_NONE| and |time_to_abort| will be | 
| -  // |base::TimeDelta()|. | 
| +  // aborted, |abort_type| will be |ABORT_NONE|. | 
| const UserAbortType abort_type; | 
| -  const base::TimeDelta time_to_abort; | 
| +  const base::Optional<base::TimeDelta> time_to_abort; | 
|  | 
| // Extra information supplied to the page load metrics system from the | 
| // renderer. | 
|  |