Record when text selection is in iframe
Bug: 1139864
Change-Id: I17686adaf4241202e400acb18f6c8fc8b6a83a7c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2513290
Commit-Queue: Gayane Petrosyan <[email protected]>
Reviewed-by: sebsg <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Cr-Commit-Position: refs/heads/master@{#824048}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index d3013f5c..48077f0 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -4029,6 +4029,7 @@
"//components/services/app_service/public/cpp:intents",
"//components/services/app_service/public/cpp:preferred_apps",
"//components/services/app_service/public/cpp:publisher",
+ "//components/shared_highlighting/core/common",
"//components/soda:constants",
"//components/ukm/content",
"//components/web_modal",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 1a3da83..e81266d 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -242,6 +242,7 @@
"+components/safe_browsing",
"+components/safe_search_api",
"+components/schema_org",
+ "+components/shared_highlighting/core/common",
"+components/search",
"+components/search_engines",
"+components/search_provider_logos",
diff --git a/chrome/browser/renderer_context_menu/copy_link_to_text_menu_observer.cc b/chrome/browser/renderer_context_menu/copy_link_to_text_menu_observer.cc
index 7e866d5..0879021d2 100644
--- a/chrome/browser/renderer_context_menu/copy_link_to_text_menu_observer.cc
+++ b/chrome/browser/renderer_context_menu/copy_link_to_text_menu_observer.cc
@@ -10,6 +10,7 @@
#include "chrome/app/chrome_command_ids.h"
#include "chrome/grit/generated_resources.h"
#include "components/renderer_context_menu/render_view_context_menu_proxy.h"
+#include "components/shared_highlighting/core/common/shared_highlighting_metrics.h"
#include "content/public/browser/context_menu_params.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
@@ -71,6 +72,7 @@
return;
if (main_frame != proxy_->GetWebContents()->GetFocusedFrame()) {
+ shared_highlighting::LogGenerateErrorIFrame();
OnGeneratedSelector(std::make_unique<ui::DataTransferEndpoint>(
main_frame->GetLastCommittedOrigin()),
std::string());
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 49093a4..8271fe5 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
@@ -73,6 +73,7 @@
public void requestSelector() {
if (mTab.getWebContents().getMainFrame() != mTab.getWebContents().getFocusedFrame()) {
+ LinkToTextMetricsBridge.logGenerateErrorIFrame();
onSelectorReady(INVALID_SELECTOR);
return;
}
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
index 3457136..a622eb24 100644
--- 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
@@ -22,10 +22,15 @@
LinkToTextMetricsBridgeJni.get().logGenerateErrorTabCrash();
}
+ public static void logGenerateErrorIFrame() {
+ LinkToTextMetricsBridgeJni.get().logGenerateErrorIFrame();
+ }
+
@NativeMethods
interface Natives {
void logGenerateErrorTabHidden();
void logGenerateErrorOmniboxNavigation();
void logGenerateErrorTabCrash();
+ void logGenerateErrorIFrame();
}
}
diff --git a/chrome/browser/share/link_to_text_metrics_bridge.cc b/chrome/browser/share/link_to_text_metrics_bridge.cc
index dc3019ee..5a91d22b 100644
--- a/chrome/browser/share/link_to_text_metrics_bridge.cc
+++ b/chrome/browser/share/link_to_text_metrics_bridge.cc
@@ -19,3 +19,7 @@
static void JNI_LinkToTextMetricsBridge_LogGenerateErrorTabCrash(JNIEnv* env) {
shared_highlighting::LogGenerateErrorTabCrash();
}
+
+static void JNI_LinkToTextMetricsBridge_LogGenerateErrorIFrame(JNIEnv* env) {
+ shared_highlighting::LogGenerateErrorIFrame();
+}
diff --git a/components/shared_highlighting/core/common/shared_highlighting_metrics.cc b/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
index d7ff94c1..809d83f 100644
--- a/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
+++ b/components/shared_highlighting/core/common/shared_highlighting_metrics.cc
@@ -66,4 +66,8 @@
void LogGenerateErrorTabCrash() {
LogLinkGenerationErrorReason(LinkGenerationError::kTabCrash);
}
+
+void LogGenerateErrorIFrame() {
+ LogLinkGenerationErrorReason(LinkGenerationError::kIFrame);
+}
} // 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 6a0856c..da1b339b 100644
--- a/components/shared_highlighting/core/common/shared_highlighting_metrics.h
+++ b/components/shared_highlighting/core/common/shared_highlighting_metrics.h
@@ -28,7 +28,10 @@
// Catch-all bucket.
kUnknown = 9,
- kMaxValue = kUnknown
+ // Selection happened on iframe.
+ kIFrame = 10,
+
+ kMaxValue = kIFrame
};
// These values are persisted to logs. Entries should not be renumbered and
@@ -72,6 +75,10 @@
// Records when tab crashes before generation is complete.
void LogGenerateErrorTabCrash();
+// Records when link generation was not completed because selection happened on
+// iframe.
+void LogGenerateErrorIFrame();
+
} // namespace shared_highlighting
#endif // COMPONENTS_SHARED_HIGHLIGHTING_CORE_COMMON_SHARED_HIGHLIGHTING_METRICS_H_
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 9f0db44..9fd3b111 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
@@ -48,7 +48,9 @@
kUnknown,
- kMaxValue = kUnknown
+ kIFrame,
+
+ kMaxValue = kIFrame
};
explicit TextFragmentSelectorGenerator() = default;
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 30ad443a..71147e92 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -40909,6 +40909,7 @@
<int value="7" label="Omnibox navigation"/>
<int value="8" label="Tab crash"/>
<int value="9" label="Unknown"/>
+ <int value="10" label="Iframe"/>
</enum>
<enum name="LinkMonitorFailureType">