Commit 452b3c09 authored by Peter E Conn's avatar Peter E Conn Committed by Commit Bot

🤝 Move Trusted Web Activity metrics over to CustomTabActivity.

Bug: 871266
Change-Id: Idb5ad9a435f8696eb5bb5f97de24ce05fbba5469
Reviewed-on: https://chromium-review.googlesource.com/1185007Reviewed-by: default avatarBernhard Bauer <bauerb@chromium.org>
Commit-Queue: Peter Conn <peconn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585797}
parent 07040990
// Copyright 2018 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.browserservices;
import android.os.SystemClock;
import java.util.concurrent.TimeUnit;
/**
* Records how long Trusted Web Activities are used for.
*
* Lifecycle: There should be a 1-1 relationship between this class and
* {@link TrustedWebActivityUi} (and transitively {@link CustomTabActivity}).
* Thread safety: All methods on this class should be called on the UI thread.
*/
class TrustedWebActivityOpenTimeRecorder {
private long mOnResumeTimestampMs;
/** Notify that the TWA has been resumed. */
public void onResume() {
mOnResumeTimestampMs = SystemClock.elapsedRealtime();
}
/** Notify that the TWA has been paused. */
public void onPause() {
assert mOnResumeTimestampMs != 0;
BrowserServicesMetrics.recordTwaOpenTime(
SystemClock.elapsedRealtime() - mOnResumeTimestampMs, TimeUnit.MILLISECONDS);
mOnResumeTimestampMs = 0;
}
}
...@@ -27,6 +27,8 @@ public class TrustedWebActivityUi { ...@@ -27,6 +27,8 @@ public class TrustedWebActivityUi {
private final TrustedWebActivityUiDelegate mDelegate; private final TrustedWebActivityUiDelegate mDelegate;
private final TrustedWebActivityDisclosure mDisclosure; private final TrustedWebActivityDisclosure mDisclosure;
private final TrustedWebActivityOpenTimeRecorder mOpenTimeRecorder =
new TrustedWebActivityOpenTimeRecorder();
private boolean mInTrustedWebActivity = true; private boolean mInTrustedWebActivity = true;
...@@ -141,10 +143,23 @@ public class TrustedWebActivityUi { ...@@ -141,10 +143,23 @@ public class TrustedWebActivityUi {
new OriginVerifier((packageName2, origin2, verified, online) -> { new OriginVerifier((packageName2, origin2, verified, online) -> {
if (!origin.equals(new Origin(tab.getUrl()))) return; if (!origin.equals(new Origin(tab.getUrl()))) return;
BrowserServicesMetrics.recordTwaOpened();
setTrustedWebActivityMode(verified, tab); setTrustedWebActivityMode(verified, tab);
}, packageName, RELATIONSHIP).start(origin); }, packageName, RELATIONSHIP).start(origin);
} }
/** Notify (for metrics purposes) that the TWA has been resumed. */
public void onResume() {
// TODO(peconn): Move this over to LifecycleObserver or something similar once available.
mOpenTimeRecorder.onResume();
}
/** Notify (for metrics purposes) that the TWA has been paused. */
public void onPause() {
// TODO(peconn): Move this over to LifecycleObserver or something similar once available.
mOpenTimeRecorder.onPause();
}
/** /**
* Updates the UI appropriately for whether or not Trusted Web Activity mode is enabled. * Updates the UI appropriately for whether or not Trusted Web Activity mode is enabled.
*/ */
......
...@@ -861,6 +861,8 @@ public class CustomTabActivity extends ChromeActivity { ...@@ -861,6 +861,8 @@ public class CustomTabActivity extends ChromeActivity {
} else if (isModuleLoading()) { } else if (isModuleLoading()) {
mModuleOnResumePending = true; mModuleOnResumePending = true;
} }
if (mTrustedWebActivityUi != null) mTrustedWebActivityUi.onResume();
} }
@Override @Override
...@@ -871,6 +873,8 @@ public class CustomTabActivity extends ChromeActivity { ...@@ -871,6 +873,8 @@ public class CustomTabActivity extends ChromeActivity {
} }
if (mModuleActivityDelegate != null) mModuleActivityDelegate.onPause(); if (mModuleActivityDelegate != null) mModuleActivityDelegate.onPause();
mModuleOnResumePending = false; mModuleOnResumePending = false;
if (mTrustedWebActivityUi != null) mTrustedWebActivityUi.onPause();
} }
@Override @Override
......
...@@ -41,7 +41,6 @@ import org.chromium.chrome.browser.SingleTabActivity; ...@@ -41,7 +41,6 @@ import org.chromium.chrome.browser.SingleTabActivity;
import org.chromium.chrome.browser.TabState; import org.chromium.chrome.browser.TabState;
import org.chromium.chrome.browser.WarmupManager; import org.chromium.chrome.browser.WarmupManager;
import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate; import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate;
import org.chromium.chrome.browser.browserservices.BrowserServicesMetrics;
import org.chromium.chrome.browser.browserservices.BrowserSessionContentHandler; import org.chromium.chrome.browser.browserservices.BrowserSessionContentHandler;
import org.chromium.chrome.browser.browserservices.BrowserSessionContentUtils; import org.chromium.chrome.browser.browserservices.BrowserSessionContentUtils;
import org.chromium.chrome.browser.browserservices.BrowserSessionDataProvider; import org.chromium.chrome.browser.browserservices.BrowserSessionDataProvider;
...@@ -119,7 +118,6 @@ public class WebappActivity extends SingleTabActivity { ...@@ -119,7 +118,6 @@ public class WebappActivity extends SingleTabActivity {
private WebappDisclosureSnackbarController mDisclosureSnackbarController; private WebappDisclosureSnackbarController mDisclosureSnackbarController;
private boolean mIsInitialized; private boolean mIsInitialized;
private long mOnResumeTimestampMs;
private Integer mBrandColor; private Integer mBrandColor;
private Bitmap mLargestFavicon; private Bitmap mLargestFavicon;
...@@ -494,8 +492,6 @@ public class WebappActivity extends SingleTabActivity { ...@@ -494,8 +492,6 @@ public class WebappActivity extends SingleTabActivity {
updateTaskDescription(); updateTaskDescription();
} }
super.onResume(); super.onResume();
mOnResumeTimestampMs = SystemClock.elapsedRealtime();
} }
@Override @Override
...@@ -513,11 +509,6 @@ public class WebappActivity extends SingleTabActivity { ...@@ -513,11 +509,6 @@ public class WebappActivity extends SingleTabActivity {
public void onPauseWithNative() { public void onPauseWithNative() {
mNotificationManager.cancelNotification(); mNotificationManager.cancelNotification();
super.onPauseWithNative(); super.onPauseWithNative();
if (getBrowserSession() != null && !didVerificationFail()) {
BrowserServicesMetrics.recordTwaOpenTime(
SystemClock.elapsedRealtime() - mOnResumeTimestampMs, TimeUnit.MILLISECONDS);
}
} }
@Override @Override
...@@ -603,8 +594,6 @@ public class WebappActivity extends SingleTabActivity { ...@@ -603,8 +594,6 @@ public class WebappActivity extends SingleTabActivity {
return; return;
} }
BrowserServicesMetrics.recordTwaOpened();
// When verification occurs instantly (eg the result is cached) then it returns // When verification occurs instantly (eg the result is cached) then it returns
// before there is an active tab. // before there is an active tab.
if (areTabModelsInitialized() && getActivityTab() != null) { if (areTabModelsInitialized() && getActivityTab() != null) {
......
...@@ -164,6 +164,7 @@ chrome_java_sources = [ ...@@ -164,6 +164,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityClient.java", "java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityClient.java",
"java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityDisclosure.java", "java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityDisclosure.java",
"java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityUi.java", "java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityUi.java",
"java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityOpenTimeRecorder.java",
"java/src/org/chromium/chrome/browser/browserservices/UkmRecorder.java", "java/src/org/chromium/chrome/browser/browserservices/UkmRecorder.java",
"java/src/org/chromium/chrome/browser/browserservices/VerificationState.java", "java/src/org/chromium/chrome/browser/browserservices/VerificationState.java",
"java/src/org/chromium/chrome/browser/browsing_data/UrlFilters.java", "java/src/org/chromium/chrome/browser/browsing_data/UrlFilters.java",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment