mActivityTestRule =
+ new ActivityTestRule<>(DummyUiActivity.class);
+
+ @Mock
+ private ChromeOptionShareCallback mShareCallback;
+
+ @Mock
+ private WindowAndroid mWindow;
+
+ private Context mContext;
+ private static final String SELECTED_TEXT = "selection";
+ private static final String VISIBLE_URL = "www.example.com";
+
+ @Before
+ public void setUp() {
+ mContext = mActivityTestRule.getActivity();
+
+ MockitoAnnotations.initMocks(this);
+ doNothing()
+ .when(mShareCallback)
+ .showThirdPartyShareSheetWithMessage(anyString(), any(), any(), anyLong());
+ }
+
+ @Test
+ @SmallTest
+ public void getTextToShareTest() {
+ String selector = "selector";
+ String expectedTextToShare = "\"selection\"\nwww.example.com:~:text=selector";
+ LinkToTextCoordinator coordinator = new LinkToTextCoordinator(
+ mContext, mWindow, mShareCallback, VISIBLE_URL, SELECTED_TEXT);
+ Assert.assertEquals(expectedTextToShare, coordinator.getTextToShare(selector));
+ }
+
+ @Test
+ @SmallTest
+ public void getTextToShareTest_EmptySelector() {
+ String selector = "";
+ String expectedTextToShare = "\"selection\"\nwww.example.com";
+ LinkToTextCoordinator coordinator = new LinkToTextCoordinator(
+ mContext, mWindow, mShareCallback, VISIBLE_URL, SELECTED_TEXT);
+ Assert.assertEquals(expectedTextToShare, coordinator.getTextToShare(selector));
+ }
+
+ @Test
+ @SmallTest
+ public void onSelectorReadyTest() {
+ LinkToTextCoordinator coordinator = new LinkToTextCoordinator(
+ mContext, mWindow, mShareCallback, VISIBLE_URL, SELECTED_TEXT);
+ // OnSelectorReady should call back the share sheet.
+ verify(mShareCallback)
+ .showThirdPartyShareSheetWithMessage(anyString(), any(), any(), anyLong());
+ }
+}
diff --git a/chrome/browser/share/android/test_java_sources.gni b/chrome/browser/share/android/test_java_sources.gni
index b7e09b1aa256a5..06054fee7bbd6e 100644
--- a/chrome/browser/share/android/test_java_sources.gni
+++ b/chrome/browser/share/android/test_java_sources.gni
@@ -5,6 +5,7 @@
# TODO(crbug.com/1022172): This should be a separate build target when circular dependencies are removed.
share_test_java_sources = [
"//chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/clipboard/ClipboardImageFileProviderTest.java",
+ "//chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/link_to_text/LinkToTextCoordinatorTest.java",
"//chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/screenshot/ScreenshotShareSheetViewTest.java",
"//chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/share_sheet/ChromeProvidedSharingOptionsProviderTest.java",
"//chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/share_sheet/ShareSheetCoordinatorTest.java",
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
index b5749d56c48731..f8c5f82053b626 100644
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -3861,6 +3861,14 @@ To change this setting, <resetlink>reset sync%1$s1582667748515
+
+ Share link to the highlighted text in an app
+
+
+
+ Can't create link to text. Share link to page in an app.
+
+
Edit
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_LINK_TO_TEXT_FAILURE_MESSAGE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_LINK_TO_TEXT_FAILURE_MESSAGE.png.sha1
new file mode 100644
index 00000000000000..873110baa1466e
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_LINK_TO_TEXT_FAILURE_MESSAGE.png.sha1
@@ -0,0 +1 @@
+5b5898eac5894e51f40d95d28448f26400679b22
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_LINK_TO_TEXT_SUCCESS_MESSAGE.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_LINK_TO_TEXT_SUCCESS_MESSAGE.png.sha1
new file mode 100644
index 00000000000000..5a51f40599ed12
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_LINK_TO_TEXT_SUCCESS_MESSAGE.png.sha1
@@ -0,0 +1 @@
+bb68f939991be1e938f3fceafc7f127aadf23e07
\ No newline at end of file
diff --git a/ui/android/java/res/values-v17/styles.xml b/ui/android/java/res/values-v17/styles.xml
index 8c5a49041ecc57..00f83d91d7d709 100644
--- a/ui/android/java/res/values-v17/styles.xml
+++ b/ui/android/java/res/values-v17/styles.xml
@@ -295,6 +295,9 @@
+