| Index: components/page_load_metrics/browser/metrics_web_contents_observer.h
|
| diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer.h b/components/page_load_metrics/browser/metrics_web_contents_observer.h
|
| index 474a4530895f9c39ee22ec7ed8f1fa793f3593d5..6e59379373b70cad8aa81d8557a0078efff16add 100644
|
| --- a/components/page_load_metrics/browser/metrics_web_contents_observer.h
|
| +++ b/components/page_load_metrics/browser/metrics_web_contents_observer.h
|
| @@ -12,11 +12,13 @@
|
| #include "base/macros.h"
|
| #include "base/time/time.h"
|
| #include "components/page_load_metrics/browser/page_load_metrics_observer.h"
|
| +#include "components/page_load_metrics/common/page_load_metrics.mojom.h"
|
| #include "components/page_load_metrics/common/page_load_timing.h"
|
| #include "content/public/browser/render_widget_host.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/browser/web_contents_observer.h"
|
| #include "content/public/browser/web_contents_user_data.h"
|
| +#include "mojo/public/cpp/bindings/binding.h"
|
| #include "net/base/net_errors.h"
|
| #include "third_party/WebKit/public/web/WebInputEvent.h"
|
|
|
| @@ -31,6 +33,7 @@ class Message;
|
|
|
| namespace page_load_metrics {
|
|
|
| +class MetricsWebContentsObserver;
|
| class PageLoadTracker;
|
|
|
| namespace internal {
|
| @@ -280,8 +283,10 @@ class MetricsWebContentsObserver
|
| ~MetricsWebContentsObserver() override;
|
|
|
| // content::WebContentsObserver implementation:
|
| - bool OnMessageReceived(const IPC::Message& message,
|
| - content::RenderFrameHost* render_frame_host) override;
|
| + void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override;
|
| + void RenderFrameHostChanged(content::RenderFrameHost* old_host,
|
| + content::RenderFrameHost* new_host) override;
|
| + void WebContentsDestroyed() override;
|
| void DidStartNavigation(
|
| content::NavigationHandle* navigation_handle) override;
|
| void DidFinishNavigation(
|
| @@ -299,8 +304,16 @@ class MetricsWebContentsObserver
|
| // This getter function is required for testing.
|
| const PageLoadExtraInfo GetPageLoadExtraInfoForCommittedLoad();
|
|
|
| + // Exposed for testing.
|
| + void OnTimingUpdated(content::RenderFrameHost*,
|
| + const PageLoadTiming& timing,
|
| + const PageLoadMetadata& metadata);
|
| +
|
| private:
|
| friend class content::WebContentsUserData<MetricsWebContentsObserver>;
|
| + friend class MetricsWebContentsObserverTest;
|
| +
|
| + class PageLoadMetricsImpl;
|
|
|
| void HandleFailedNavigationForTrackedLoad(
|
| content::NavigationHandle* navigation_handle,
|
| @@ -328,9 +341,9 @@ class MetricsWebContentsObserver
|
| std::unique_ptr<PageLoadTracker> NotifyAbortedProvisionalLoadsNewNavigation(
|
| content::NavigationHandle* new_navigation);
|
|
|
| - void OnTimingUpdated(content::RenderFrameHost*,
|
| - const PageLoadTiming& timing,
|
| - const PageLoadMetadata& metadata);
|
| + // Register a PageLoadMetricsImpl factory, listening for connections to
|
| + // |host|.
|
| + void RegisterInterfaceImpl(content::RenderFrameHost* host);
|
|
|
| bool ShouldTrackNavigation(
|
| content::NavigationHandle* navigation_handle) const;
|
| @@ -361,6 +374,9 @@ class MetricsWebContentsObserver
|
| // Has the MWCO observed at least one navigation?
|
| bool has_navigated_;
|
|
|
| + // Interface implementations we need to delete.
|
| + std::vector<std::unique_ptr<PageLoadMetricsImpl>> registered_interfaces_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserver);
|
| };
|
|
|
|
|