Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(477)

Unified Diff: components/page_load_metrics/browser/metrics_web_contents_observer.h

Issue 2056153002: Convert PageLoadMetrics to Mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};
« no previous file with comments | « components/page_load_metrics/browser/DEPS ('k') | components/page_load_metrics/browser/metrics_web_contents_observer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698