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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java

Issue 2139243003: customtabs: Send time to first contentful paint to the caller. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. 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: chrome/android/java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java
new file mode 100644
index 0000000000000000000000000000000000000000..87e6e798268e94501682de66cb78509c76ad8174
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java
@@ -0,0 +1,58 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.metrics;
+
+import org.chromium.base.ObserverList;
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.content_public.browser.WebContents;
+
+/**
+ * Receives the page load metrics updates from AndroidPageLoadMetricsObserver, and notifies the
+ * observers.
+ *
+ * Threading: everything here must happen on the UI thread.
+ */
+public class PageLoadMetrics {
+ public static final String FIRST_CONTENTFUL_PAINT = "firstContentfulPaint";
+
+ /** Observer for page load metrics. */
+ public interface Observer {
+ /**
+ * Called when the first contentful paint page load metric is available.
+ *
+ * @param webContents the WebContents this metrics is related to.
+ * @param firstContentfulPaintMs Time to first contentful paint from navigation start.
+ */
+ public void onFirstContentfulPaint(WebContents webContents, long firstContentfulPaintMs);
+ }
+
+ private static ObserverList<Observer> sObservers;
+
+ /** Adds an observer. */
+ public static boolean addObserver(Observer observer) {
+ ThreadUtils.assertOnUiThread();
+ if (sObservers == null) sObservers = new ObserverList<>();
+ return sObservers.addObserver(observer);
+ }
+
+ /** Removes an observer. */
+ public static boolean removeObserver(Observer observer) {
+ ThreadUtils.assertOnUiThread();
+ if (sObservers == null) return false;
+ return sObservers.removeObserver(observer);
+ }
+
+ @CalledByNative
+ static void onFirstContentfulPaint(WebContents webContents, long firstContentfulPaintMs) {
+ ThreadUtils.assertOnUiThread();
+ if (sObservers == null) return;
+ for (Observer observer : sObservers) {
+ observer.onFirstContentfulPaint(webContents, firstContentfulPaintMs);
+ }
+ }
+
+ private PageLoadMetrics() {}
+}

Powered by Google App Engine
This is Rietveld 408576698