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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.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: . 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/customtabs/CustomTabActivity.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
index f4d35a24ab8af1690bec804b1986dc5e2a7ea5b8..807fa319cc8b634cce9a7add62d2e9d9eed5da21 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -45,6 +45,7 @@ import org.chromium.chrome.browser.compositor.layouts.LayoutManagerDocument;
import org.chromium.chrome.browser.datausage.DataUseTabUIManager;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl;
+import org.chromium.chrome.browser.metrics.PageLoadMetrics;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.pageinfo.WebsiteSettingsPopup;
import org.chromium.chrome.browser.rappor.RapporServiceBridge;
@@ -98,15 +99,41 @@ public class CustomTabActivity extends ChromeActivity {
private String mPrerenderedUrl;
private boolean mHasPrerendered;
- // Only the normal tab model is observed because there is no icognito tabmodel in Custom Tabs.
+ private static class PageLoadMetricsObserver implements PageLoadMetrics.Observer {
+ private CustomTabsConnection mConnection;
+ private CustomTabsSessionToken mSession;
+ private WebContents mWebContents;
+
+ public PageLoadMetricsObserver(CustomTabsConnection connection,
+ CustomTabsSessionToken session, WebContents webContents) {
+ mConnection = connection;
+ mSession = session;
+ mWebContents = webContents;
+ }
+
+ @Override
+ public void onFirstContentfulPaintMetricUpdate(
+ WebContents webContents, double firstContentfulPaintMs) {
+ if (webContents != mWebContents) return;
+
+ mConnection.notifyPageLoadMetric(
+ mSession, "FirstContentfulPaint", firstContentfulPaintMs);
+ }
+ }
+
+ private PageLoadMetricsObserver mMetricsObserver;
+
+ // Only the normal tab model is observed because there is no incognito tabmodel in Custom Tabs.
private TabModelObserver mTabModelObserver = new EmptyTabModelObserver() {
@Override
public void didAddTab(Tab tab, TabLaunchType type) {
+ PageLoadMetrics.addObserver(mMetricsObserver);
tab.addObserver(mTabObserver);
}
@Override
public void didCloseTab(int tabId, boolean incognito) {
+ PageLoadMetrics.removeObserver(mMetricsObserver);
// Finish the activity after we intent out.
if (getTabModelSelector().getCurrentModel().getCount() == 0) finish();
}
@@ -394,6 +421,9 @@ public class CustomTabActivity extends ChromeActivity {
tab.getTabRedirectHandler().updateIntent(getIntent());
tab.getView().requestFocus();
mTabObserver = new CustomTabObserver(getApplication(), mSession);
+
+ mMetricsObserver = new PageLoadMetricsObserver(
+ CustomTabsConnection.getInstance(getApplication()), mSession, webContents);
tab.addObserver(mTabObserver);
return tab;
}

Powered by Google App Engine
This is Rietveld 408576698