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

Unified Diff: chrome/browser/page_load_metrics/metrics_web_contents_observer.cc

Issue 2823523003: [Page Load Metrics] PageLoadMetrics Mojofication. (Closed)
Patch Set: rebase Created 3 years, 7 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: 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 4f1d8d3ae07e1d5d7cf1f72e232076ab0e0b3bb3..29ce7bc4b0fcdad737f236eba370a5b5a615014b 100644
--- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
+++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
@@ -9,6 +9,7 @@
#include <string>
#include <utility>
+#include "base/feature_list.h"
#include "base/location.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
@@ -16,6 +17,7 @@
#include "chrome/browser/page_load_metrics/page_load_metrics_embedder_interface.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
#include "chrome/browser/page_load_metrics/page_load_tracker.h"
+#include "chrome/common/chrome_features.h"
#include "chrome/common/page_load_metrics/page_load_metrics_messages.h"
#include "chrome/common/page_load_metrics/page_load_timing.h"
#include "content/public/browser/browser_thread.h"
@@ -70,7 +72,8 @@ MetricsWebContentsObserver::MetricsWebContentsObserver(
: content::WebContentsObserver(web_contents),
in_foreground_(false),
embedder_interface_(std::move(embedder_interface)),
- has_navigated_(false) {
+ has_navigated_(false),
+ page_load_metrics_binding_(web_contents, this) {
RegisterInputEventObserver(web_contents->GetRenderViewHost());
}
@@ -137,7 +140,7 @@ bool MetricsWebContentsObserver::OnMessageReceived(
bool handled = true;
IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(MetricsWebContentsObserver, message,
render_frame_host)
- IPC_MESSAGE_HANDLER(PageLoadMetricsMsg_TimingUpdated, OnTimingUpdated)
+ IPC_MESSAGE_HANDLER(PageLoadMetricsMsg_TimingUpdated, OnUpdateTimingOverIPC)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -617,6 +620,29 @@ void MetricsWebContentsObserver::OnTimingUpdated(
observer.OnTimingUpdated(is_main_frame, timing, metadata);
}
+void MetricsWebContentsObserver::OnUpdateTimingOverIPC(
+ content::RenderFrameHost* render_frame_host,
+ const mojom::PageLoadTiming& timing,
+ const mojom::PageLoadMetadata& metadata) {
+ DCHECK(!base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication));
+ OnTimingUpdated(render_frame_host, timing, metadata);
+
+ for (auto& observer : testing_observers_)
+ observer.DidReceiveTimingUpdate(TestingObserver::IPCType::LEGACY);
+}
+
+void MetricsWebContentsObserver::UpdateTiming(
+ const mojom::PageLoadTimingPtr timing,
+ const mojom::PageLoadMetadataPtr metadata) {
+ content::RenderFrameHost* render_frame_host =
+ page_load_metrics_binding_.GetCurrentTargetFrame();
+ DCHECK(base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication));
+ OnTimingUpdated(render_frame_host, *timing, *metadata);
+
+ for (auto& observer : testing_observers_)
+ observer.DidReceiveTimingUpdate(TestingObserver::IPCType::MOJO);
+}
+
bool MetricsWebContentsObserver::ShouldTrackNavigation(
content::NavigationHandle* navigation_handle) const {
DCHECK(navigation_handle->IsInMainFrame());

Powered by Google App Engine
This is Rietveld 408576698