[Merge-87][SH-Clank] Add histograms for cases when tab becomes unavailable.
(cherry picked from commit 1ef9f56f7daca1ce928e1fc6d9e1a56998123ea5)
Bug: 1129652
Change-Id: I02b0ce1774df6c552fa5154df765135d6c81441a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2472262
Reviewed-by: Kyle Milka <[email protected]>
Reviewed-by: David Bokan <[email protected]>
Reviewed-by: sebsg <[email protected]>
Commit-Queue: Gayane Petrosyan <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#817551}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2485631
Reviewed-by: Gayane Petrosyan <[email protected]>
Cr-Commit-Position: refs/branch-heads/4280@{#495}
Cr-Branched-From: ea420fb963f9658c9969b6513c56b8f47efa1a2a-refs/heads/master@{#812852}
diff --git a/chrome/browser/share/BUILD.gn b/chrome/browser/share/BUILD.gn
index 331fc7d..a6bd40aa 100644
--- a/chrome/browser/share/BUILD.gn
+++ b/chrome/browser/share/BUILD.gn
@@ -11,6 +11,7 @@
"bitmap_download_request.cc",
"features.cc",
"features.h",
+ "link_to_text_metrics_bridge.cc",
"qr_code_generation_request.cc",
"qr_code_generation_request.h",
]
@@ -19,6 +20,7 @@
"//chrome/browser/share/android:jni_headers",
"//chrome/services/qrcode_generator/public/cpp",
"//chrome/services/qrcode_generator/public/mojom",
+ "//components/shared_highlighting/core/common",
"//content/public/browser",
"//skia",
"//ui/gfx",
diff --git a/chrome/browser/share/DEPS b/chrome/browser/share/DEPS
index 8010860..be66cce 100644
--- a/chrome/browser/share/DEPS
+++ b/chrome/browser/share/DEPS
@@ -22,6 +22,7 @@
"+components/browser_ui/share/android",
"+components/browser_ui/android/bottomsheet",
"+components/infobars/android",
+ "+components/shared_highlighting/core/common",
"+content/public/android/java/src/org/chromium/content_public/browser/RenderWidgetHostView.java",
"+content/public/android/java/src/org/chromium/content_public/browser/WebContents.java",
]
diff --git a/chrome/browser/share/android/BUILD.gn b/chrome/browser/share/android/BUILD.gn
index f433a032..fa9c377 100644
--- a/chrome/browser/share/android/BUILD.gn
+++ b/chrome/browser/share/android/BUILD.gn
@@ -35,6 +35,7 @@
generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/chrome/browser/share/BitmapDownloadRequest.java",
+ "java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsBridge.java",
"java/src/org/chromium/chrome/browser/share/qrcode/QRCodeGenerationRequest.java",
"java/src/org/chromium/chrome/browser/share/send_tab_to_self/NotificationManager.java",
"java/src/org/chromium/chrome/browser/share/send_tab_to_self/SendTabToSelfAndroidBridge.java",
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java
index 81eec08..274cea4 100644
--- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java
+++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java
@@ -110,18 +110,21 @@
// Discard results if tab is not on foreground anymore.
@Override
public void onHidden(Tab tab, @TabHidingType int type) {
+ LinkToTextMetricsBridge.logGenerateErrorTabHidden();
cleanup();
}
// Discard results if tab content is changed by typing new URL in omnibox.
@Override
public void onUpdateUrl(Tab tab, String url) {
+ LinkToTextMetricsBridge.logGenerateErrorOmniboxNavigation();
cleanup();
}
// Discard results if tab content crashes.
@Override
public void onCrash(Tab tab) {
+ LinkToTextMetricsBridge.logGenerateErrorTabCrash();
cleanup();
}
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsBridge.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsBridge.java
new file mode 100644
index 0000000..3457136
--- /dev/null
+++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsBridge.java
@@ -0,0 +1,31 @@
+// Copyright 2020 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.share.link_to_text;
+
+import org.chromium.base.annotations.NativeMethods;
+
+/**
+ * A Java API for recording Link to Text metrics.
+ */
+public class LinkToTextMetricsBridge {
+ public static void logGenerateErrorTabHidden() {
+ LinkToTextMetricsBridgeJni.get().logGenerateErrorTabHidden();
+ }
+
+ public static void logGenerateErrorOmniboxNavigation() {
+ LinkToTextMetricsBridgeJni.get().logGenerateErrorOmniboxNavigation();
+ }
+
+ public static void logGenerateErrorTabCrash() {
+ LinkToTextMetricsBridgeJni.get().logGenerateErrorTabCrash();
+ }
+
+ @NativeMethods
+ interface Natives {
+ void logGenerateErrorTabHidden();
+ void logGenerateErrorOmniboxNavigation();
+ void logGenerateErrorTabCrash();
+ }
+}
diff --git a/chrome/browser/share/android/java_sources.gni b/chrome/browser/share/android/java_sources.gni
index 00f7a02b..8c7ba34 100644
--- a/chrome/browser/share/android/java_sources.gni
+++ b/chrome/browser/share/android/java_sources.gni
@@ -8,6 +8,7 @@
"//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/BitmapDownloadRequest.java",
"//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/clipboard/ClipboardImageFileProvider.java",
"//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinator.java",
+ "//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextMetricsBridge.java",
"//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QRCodeGenerationRequest.java",
"//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeCoordinator.java",
"//chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/qrcode/QrCodeDialog.java",
diff --git a/chrome/browser/share/link_to_text_metrics_bridge.cc b/chrome/browser/share/link_to_text_metrics_bridge.cc
new file mode 100644
index 0000000..dc3019ee
--- /dev/null
+++ b/chrome/browser/share/link_to_text_metrics_bridge.cc
@@ -0,0 +1,21 @@
+// Copyright 2020 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.
+
+#include <jni.h>
+
+#include "chrome/browser/share/android/jni_headers/LinkToTextMetricsBridge_jni.h"
+#include "components/shared_highlighting/core/common/shared_highlighting_metrics.h"
+
+static void JNI_LinkToTextMetricsBridge_LogGenerateErrorTabHidden(JNIEnv* env) {
+ shared_highlighting::LogGenerateErrorTabHidden();
+}
+
+static void JNI_LinkToTextMetricsBridge_LogGenerateErrorOmniboxNavigation(
+ JNIEnv* env) {
+ shared_highlighting::LogGenerateErrorOmniboxNavigation();
+}
+
+static void JNI_LinkToTextMetricsBridge_LogGenerateErrorTabCrash(JNIEnv* env) {
+ shared_highlighting::LogGenerateErrorTabCrash();
+}
diff --git a/components/shared_highlighting/core/common/shared_highlighting_metrics.cc b/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
index 9713358..30f4136d 100644
--- a/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
+++ b/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
@@ -47,4 +47,18 @@
base::UmaHistogramCounts100("TextFragmentAnchor.SelectorCount", count);
}
+void LogGenerateErrorTabHidden() {
+ base::UmaHistogramEnumeration("SharedHighlights.LinkGenerated.Error",
+ LinkGenerationError::kTabHidden);
+}
+
+void LogGenerateErrorOmniboxNavigation() {
+ base::UmaHistogramEnumeration("SharedHighlights.LinkGenerated.Error",
+ LinkGenerationError::kOmniboxNavigation);
+}
+
+void LogGenerateErrorTabCrash() {
+ base::UmaHistogramEnumeration("SharedHighlights.LinkGenerated.Error",
+ LinkGenerationError::kTabCrash);
+}
} // namespace shared_highlighting
diff --git a/components/shared_highlighting/core/common/shared_highlighting_metrics.h b/components/shared_highlighting/core/common/shared_highlighting_metrics.h
index 14a12cc..cb1e9826 100644
--- a/components/shared_highlighting/core/common/shared_highlighting_metrics.h
+++ b/components/shared_highlighting/core/common/shared_highlighting_metrics.h
@@ -18,7 +18,11 @@
kContextLimitReached,
kEmptySelection,
- kMaxValue = kEmptySelection,
+ kTabHidden,
+ kOmniboxNavigation,
+ kTabCrash,
+
+ kMaxValue = kTabCrash
};
// Update corresponding |TextFragmentLinkOpenSource| in enums.xml.
@@ -45,6 +49,15 @@
// Records the total |count| of text fragment selectors in the URL param.
void LogTextFragmentSelectorCount(int count);
+// Records when tab is hidden before generation is complete.
+void LogGenerateErrorTabHidden();
+
+// Records when new navigation happens on the tab by user typing in the omnibox.
+void LogGenerateErrorOmniboxNavigation();
+
+// Records when tab crashes before generation is complete.
+void LogGenerateErrorTabCrash();
+
} // namespace shared_highlighting
#endif // COMPONENTS_SHARED_HIGHLIGHTING_CORE_COMMON_SHARED_HIGHLIGHTING_METRICS_H_
\ No newline at end of file
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h
index 487c4b2..902d757 100644
--- a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h
+++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector_generator.h
@@ -40,7 +40,13 @@
kContextLimitReached,
kEmptySelection,
- kMaxValue = kContextLimitReached
+ // Recorded from browser/java side when tab or its content becomes
+ // unavailable. Added here to keep in sync with the enums.xml values.
+ kTabHidden,
+ kOmniboxNavigation,
+ kTabCrash,
+
+ kMaxValue = kTabCrash
};
explicit TextFragmentSelectorGenerator() = default;
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index d2229e3..e0f0197 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -40268,6 +40268,9 @@
<int value="3" label="Available context exhausted"/>
<int value="4" label="Context word limit reached"/>
<int value="5" label="Empty selection"/>
+ <int value="6" label="Tab hidden"/>
+ <int value="7" label="Omnibox navigation"/>
+ <int value="8" label="Tab crash"/>
</enum>
<enum name="LinkMonitorFailureType">