| Index: chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
|
| diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
|
| index fe9f281890e4a367400eaeb18e15b0cdaee2880e..c3d51772e51a866aa5e1c1ee5db76eab89f79177 100644
|
| --- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
|
| +++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
|
| @@ -103,10 +103,20 @@ MetricsWebContentsObserver* MetricsWebContentsObserver::CreateForWebContents(
|
| return metrics;
|
| }
|
|
|
| -MetricsWebContentsObserver::~MetricsWebContentsObserver() {
|
| +MetricsWebContentsObserver::~MetricsWebContentsObserver() {}
|
| +
|
| +void MetricsWebContentsObserver::WebContentsDestroyed() {
|
| // TODO(csharrison): Use a more user-initiated signal for CLOSE.
|
| NotifyPageEndAllLoads(END_CLOSE, UserInitiatedInfo::NotUserInitiated());
|
|
|
| + // We tear down PageLoadTrackers in WebContentsDestroyed, rather than in the
|
| + // destructor, since |web_contents()| returns nullptr in the destructor, and
|
| + // PageLoadMetricsObservers can cause code to execute that wants to be able to
|
| + // access the current WebContents.
|
| + committed_load_ = nullptr;
|
| + provisional_loads_.clear();
|
| + aborted_provisional_loads_.clear();
|
| +
|
| for (auto& observer : testing_observers_)
|
| observer.OnGoingAway();
|
| }
|
|
|