Commit e1618dd0 authored by Gayane Petrosyan's avatar Gayane Petrosyan Committed by Commit Bot

[SH-Clank] Remove existing fragment from url

This CL also adds fragment identifier to the url that was ommited
before.

Bug: 1102382
Change-Id: I175c409cef5a90a3e8e2958c66a90e779dbad0fe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2363347Reviewed-by: default avatarGayane Petrosyan <gayane@chromium.org>
Reviewed-by: default avatarTommy Martino <tmartino@chromium.org>
Commit-Queue: Gayane Petrosyan <gayane@chromium.org>
Cr-Commit-Position: refs/heads/master@{#799313}
parent 87f15940
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.share.link_to_text; package org.chromium.chrome.browser.share.link_to_text;
import android.content.Context; import android.content.Context;
import android.net.Uri;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.share.ChromeShareExtras; import org.chromium.chrome.browser.share.ChromeShareExtras;
...@@ -17,7 +18,7 @@ import org.chromium.ui.base.WindowAndroid; ...@@ -17,7 +18,7 @@ import org.chromium.ui.base.WindowAndroid;
*/ */
public class LinkToTextCoordinator { public class LinkToTextCoordinator {
private static final String SHARE_TEXT_TEMPLATE = "\"%s\"\n%s"; private static final String SHARE_TEXT_TEMPLATE = "\"%s\"\n%s";
private static final String URL_TEMPLATE = "%s:~:text=%s"; private static final String TEXT_FRAGMENT_PREFIX = ":~:text=";
private final Context mContext; private final Context mContext;
private final WindowAndroid mWindow; private final WindowAndroid mWindow;
private final ChromeOptionShareCallback mChromeOptionShareCallback; private final ChromeOptionShareCallback mChromeOptionShareCallback;
...@@ -58,11 +59,12 @@ public class LinkToTextCoordinator { ...@@ -58,11 +59,12 @@ public class LinkToTextCoordinator {
} }
public String getTextToShare(String selector) { public String getTextToShare(String selector) {
// TODO(1102382): visbileUrl might need a cleanup. For example, if already has text fragment
// selector.
String url = mVisibleUrl; String url = mVisibleUrl;
if (!selector.isEmpty()) url = String.format(URL_TEMPLATE, mVisibleUrl, selector); if (!selector.isEmpty()) {
// Set the fragment which will also remove existing fragment, including text fragments.
Uri uri = Uri.parse(url);
url = uri.buildUpon().encodedFragment(TEXT_FRAGMENT_PREFIX + selector).toString();
}
return String.format(SHARE_TEXT_TEMPLATE, mSelectedText, url); return String.format(SHARE_TEXT_TEMPLATE, mSelectedText, url);
} }
} }
\ No newline at end of file
...@@ -53,12 +53,22 @@ public class LinkToTextCoordinatorTest { ...@@ -53,12 +53,22 @@ public class LinkToTextCoordinatorTest {
@SmallTest @SmallTest
public void getTextToShareTest() { public void getTextToShareTest() {
String selector = "selector"; String selector = "selector";
String expectedTextToShare = "\"selection\"\nwww.example.com:~:text=selector"; String expectedTextToShare = "\"selection\"\nwww.example.com#:~:text=selector";
LinkToTextCoordinator coordinator = new LinkToTextCoordinator( LinkToTextCoordinator coordinator = new LinkToTextCoordinator(
mAcivity, mWindow, mShareCallback, VISIBLE_URL, SELECTED_TEXT); mAcivity, mWindow, mShareCallback, VISIBLE_URL, SELECTED_TEXT);
Assert.assertEquals(expectedTextToShare, coordinator.getTextToShare(selector)); Assert.assertEquals(expectedTextToShare, coordinator.getTextToShare(selector));
} }
@Test
@SmallTest
public void getTextToShareTest_URLWithFragment() {
String selector = "selector";
String expectedTextToShare = "\"selection\"\nwww.example.com#:~:text=selector";
LinkToTextCoordinator coordinator = new LinkToTextCoordinator(
mAcivity, mWindow, mShareCallback, VISIBLE_URL + "#elementid", SELECTED_TEXT);
Assert.assertEquals(expectedTextToShare, coordinator.getTextToShare(selector));
}
@Test @Test
@SmallTest @SmallTest
public void getTextToShareTest_EmptySelector() { public void getTextToShareTest_EmptySelector() {
......
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