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); |
}; |