Add reliability logging interface for user tapping a card
Bug: 336152471
Change-Id: I89cebbe0fa2aceda87c5cc26237b45339d0e4f68
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5469091
Reviewed-by: Justin DeWitt <dewittj@chromium.org>
Commit-Queue: Jian Li <jianli@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1292074}
diff --git a/chrome/browser/xsurface/BUILD.gn b/chrome/browser/xsurface/BUILD.gn
index 19a8ff1..ab7edeca 100644
--- a/chrome/browser/xsurface/BUILD.gn
+++ b/chrome/browser/xsurface/BUILD.gn
@@ -25,6 +25,7 @@
"android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScope.java",
"android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScopeDependencyProvider.java",
"android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedActionsHandler.java",
+ "android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedCardOpeningReliabilityLogger.java",
"android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedLaunchReliabilityLogger.java",
"android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedNetworkRequestReliabilityLogger.java",
"android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java",
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedCardOpeningReliabilityLogger.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedCardOpeningReliabilityLogger.java
new file mode 100644
index 0000000..f3a38c1f
--- /dev/null
+++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedCardOpeningReliabilityLogger.java
@@ -0,0 +1,77 @@
+// Copyright 2024 The Chromium Authors
+// 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.xsurface.feed;
+
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Implemented internally.
+ *
+ * <p>Interface for capturing the reliability for user tapping a card. One instance exists per feed
+ * surface and lasts for the surface's lifetime.
+ */
+public interface FeedCardOpeningReliabilityLogger {
+ /** Describes the page loading error. */
+ @IntDef({
+ PageLoadError.INTERNET_DISCONNECTED,
+ PageLoadError.CONNECTION_TIMED_OUT,
+ PageLoadError.NAME_RESOLUTION_FAILED,
+ PageLoadError.PAGE_LOAD_ERROR
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface PageLoadError {
+ /** The Internet connection has been lost. */
+ int INTERNET_DISCONNECTED = 0;
+
+ /** A connection attempt timed out. */
+ int CONNECTION_TIMED_OUT = 1;
+
+ /** An error occurred when trying to do a name resolution (DNS) */
+ int NAME_RESOLUTION_FAILED = 2;
+
+ /** Other error occurred. */
+ int PAGE_LOAD_ERROR = 3;
+ }
+
+ /**
+ * Called when the card is clicked.
+ *
+ * @param pageId The unique ID for the page being opened.
+ * @param cardCategory The breakdown of cards into categories.
+ */
+ default void onCardClicked(int pageId, int cardCategory) {}
+
+ /**
+ * Called when the page starts loading.
+ *
+ * @param pageId The unique ID for the page being opened.
+ */
+ default void onPageLoadStarted(int pageId) {}
+
+ /**
+ * Called when the page finishes loading successfully.
+ *
+ * @param pageId The unique ID for the page being opened.
+ */
+ default void onPageLoadFinished(int pageId) {}
+
+ /**
+ * Called when the page fails to load.
+ *
+ * @param pageId The unique ID for the page being opened.
+ * @param errorCode The error code that causes the page to fail loading.
+ */
+ default void onPageLoadFailed(int pageId, @PageLoadError int errorCode) {}
+
+ /**
+ * Called when the page finishes first paint after non-empty layout.
+ *
+ * @param pageId The unique ID for the page being opened.
+ */
+ default void onPageFirstContentfulPaint(int pageId) {}
+}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java
index f3ce0c8..e0201c5 100644
--- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java
+++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java
@@ -28,4 +28,8 @@
default FeedUserInteractionReliabilityLogger getUserInteractionReliabilityLogger() {
return new FeedUserInteractionReliabilityLogger() {};
}
+
+ default FeedCardOpeningReliabilityLogger getCardOpeningReliabilityLogger() {
+ return new FeedCardOpeningReliabilityLogger() {};
+ }
}