Chromium Code Reviews| Index: components/page_load_metrics/browser/page_load_metrics_observer.cc |
| diff --git a/components/page_load_metrics/browser/page_load_metrics_observer.cc b/components/page_load_metrics/browser/page_load_metrics_observer.cc |
| index 05b37303a1be7fa1162a09d31ccbe41b16cf60aa..659de29fa591b51fb60dca8e1e3e80fca60dd08b 100644 |
| --- a/components/page_load_metrics/browser/page_load_metrics_observer.cc |
| +++ b/components/page_load_metrics/browser/page_load_metrics_observer.cc |
| @@ -9,9 +9,40 @@ namespace page_load_metrics { |
| PageLoadExtraInfo::PageLoadExtraInfo( |
| const base::TimeDelta& first_background_time, |
| const base::TimeDelta& first_foreground_time, |
| - bool started_in_foreground) |
| + bool started_in_foreground, |
| + bool has_commit) |
| : first_background_time(first_background_time), |
| first_foreground_time(first_foreground_time), |
| - started_in_foreground(started_in_foreground) {} |
| + started_in_foreground(started_in_foreground), |
| + has_commit(has_commit) {} |
| + |
| +PageLoadMetricsObserver::PageLoadMetricsObserver() : observable_(nullptr) {} |
| + |
| +PageLoadMetricsObserver::PageLoadMetricsObserver( |
| + PageLoadMetricsObservable* observable) |
| + : observable_(observable) { |
| + observable_->AddObserver(this); |
| +} |
| + |
| +void PageLoadMetricsObserver::OnPageLoadMetricsGoingAway() { |
| + Destroy(); |
| +} |
| + |
| +void PageLoadMetricsObserver::Destroy() { |
| + if (observable_) |
|
Bryan McQuade
2015/11/30 19:18:48
what happens if someone calls MWCO::RemoveObserver
Charlie Harrison
2015/11/30 22:22:02
I really like having the Observable own the observ
|
| + observable_->RemoveObserver(this); |
| + delete this; |
| +} |
| + |
| +void PageLoadMetricsObserver::Observe(PageLoadMetricsObservable* observable) { |
| + observable_ = observable; |
| + observable->AddObserver(this); |
| +} |
| + |
| +void PageLoadMetricsObserver::StopObserving() { |
| + DCHECK(observable_); |
| + observable_->RemoveObserver(this); |
| + observable_ = nullptr; |
| +} |
| } // namespace page_load_metrics |