Commit 08f291f9 authored by Sophey Dong's avatar Sophey Dong Committed by Commit Bot

[SharingHub] Update CopyLink button to use ShareParams.getUrl().

Currently uses the current tab, which is inaccurate in some cases (WebShare API, press and hold link share).

Bug: 1079467
Change-Id: I76d651c2f3791a7e3274a0a316409e0a39700099
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2225465
Commit-Queue: Sophey Dong <sophey@chromium.org>
Reviewed-by: default avatarKyle Milka <kmilka@chromium.org>
Reviewed-by: default avatarTanya Gupta <tgupta@chromium.org>
Cr-Commit-Position: refs/heads/master@{#774900}
parent c9d350e2
...@@ -29,6 +29,7 @@ import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController; ...@@ -29,6 +29,7 @@ import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController.SheetState; import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController.SheetState;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetObserver; import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetObserver;
import org.chromium.chrome.browser.widget.bottomsheet.EmptyBottomSheetObserver; import org.chromium.chrome.browser.widget.bottomsheet.EmptyBottomSheetObserver;
import org.chromium.components.browser_ui.share.ShareParams;
import org.chromium.printing.PrintManagerDelegateImpl; import org.chromium.printing.PrintManagerDelegateImpl;
import org.chromium.printing.PrintingController; import org.chromium.printing.PrintingController;
import org.chromium.printing.PrintingControllerImpl; import org.chromium.printing.PrintingControllerImpl;
...@@ -55,6 +56,7 @@ class ChromeProvidedSharingOptionsProvider { ...@@ -55,6 +56,7 @@ class ChromeProvidedSharingOptionsProvider {
private final BottomSheetController mBottomSheetController; private final BottomSheetController mBottomSheetController;
private final ShareSheetBottomSheetContent mBottomSheetContent; private final ShareSheetBottomSheetContent mBottomSheetContent;
private final PrefServiceBridge mPrefServiceBridge; private final PrefServiceBridge mPrefServiceBridge;
private final ShareParams mShareParams;
private final long mShareStartTime; private final long mShareStartTime;
private ScreenshotCoordinator mScreenshotCoordinator; private ScreenshotCoordinator mScreenshotCoordinator;
private Map<Integer, Set<Integer>> mSharingOptionToContentTypes; private Map<Integer, Set<Integer>> mSharingOptionToContentTypes;
...@@ -65,21 +67,23 @@ class ChromeProvidedSharingOptionsProvider { ...@@ -65,21 +67,23 @@ class ChromeProvidedSharingOptionsProvider {
* @param activity The current {@link Activity}. * @param activity The current {@link Activity}.
* @param tabProvider Supplier for the current activity tab. * @param tabProvider Supplier for the current activity tab.
* @param bottomSheetController The {@link BottomSheetController} for the current activity. * @param bottomSheetController The {@link BottomSheetController} for the current activity.
* @param bottomSheetContent The {@link ShareSheetBottomSheetContent} for the current * @param bottomSheetContent The {@link ShareSheetBottomSheetContent} for the current
* activity. * activity.
* @param prefServiceBridge The {@link PrefServiceBridge} singleton. This provides printing * @param prefServiceBridge The {@link PrefServiceBridge} singleton. This provides printing
* preferences. * preferences.
* @param shareStartTime The start time of the current share. * @param shareParams The {@link ShareParams} for the current share.
* @param shareStartTime The start time of the current share.
*/ */
ChromeProvidedSharingOptionsProvider(Activity activity, Supplier<Tab> tabProvider, ChromeProvidedSharingOptionsProvider(Activity activity, Supplier<Tab> tabProvider,
BottomSheetController bottomSheetController, BottomSheetController bottomSheetController,
ShareSheetBottomSheetContent bottomSheetContent, PrefServiceBridge prefServiceBridge, ShareSheetBottomSheetContent bottomSheetContent, PrefServiceBridge prefServiceBridge,
long shareStartTime) { ShareParams shareParams, long shareStartTime) {
mActivity = activity; mActivity = activity;
mTabProvider = tabProvider; mTabProvider = tabProvider;
mBottomSheetController = bottomSheetController; mBottomSheetController = bottomSheetController;
mBottomSheetContent = bottomSheetContent; mBottomSheetContent = bottomSheetContent;
mPrefServiceBridge = prefServiceBridge; mPrefServiceBridge = prefServiceBridge;
mShareParams = shareParams;
mShareStartTime = shareStartTime; mShareStartTime = shareStartTime;
mSharingOptionToContentTypes = createSharingOptionToContentTypesMap(); mSharingOptionToContentTypes = createSharingOptionToContentTypesMap();
} }
...@@ -186,19 +190,10 @@ class ChromeProvidedSharingOptionsProvider { ...@@ -186,19 +190,10 @@ class ChromeProvidedSharingOptionsProvider {
"Sharing.SharingHubAndroid.TimeToShare", "Sharing.SharingHubAndroid.TimeToShare",
System.currentTimeMillis() - mShareStartTime); System.currentTimeMillis() - mShareStartTime);
mBottomSheetController.hideContent(mBottomSheetContent, true); mBottomSheetController.hideContent(mBottomSheetContent, true);
Tab tab = mTabProvider.get();
String title = tab.getWebContents()
.getNavigationController()
.getVisibleEntry()
.getTitle();
String url = tab.getWebContents()
.getNavigationController()
.getVisibleEntry()
.getUrl();
ClipboardManager clipboard = (ClipboardManager) mActivity.getSystemService( ClipboardManager clipboard = (ClipboardManager) mActivity.getSystemService(
Context.CLIPBOARD_SERVICE); Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText(title, url); clipboard.setPrimaryClip(
clipboard.setPrimaryClip(clip); ClipData.newPlainText(mShareParams.getTitle(), mShareParams.getUrl()));
Toast toast = Toast toast =
Toast.makeText(mActivity, R.string.link_copied, Toast.LENGTH_SHORT); Toast.makeText(mActivity, R.string.link_copied, Toast.LENGTH_SHORT);
toast.show(); toast.show();
......
...@@ -65,7 +65,8 @@ class ShareSheetCoordinator { ...@@ -65,7 +65,8 @@ class ShareSheetCoordinator {
ShareSheetBottomSheetContent bottomSheet = new ShareSheetBottomSheetContent(activity); ShareSheetBottomSheetContent bottomSheet = new ShareSheetBottomSheetContent(activity);
mShareStartTime = shareStartTime; mShareStartTime = shareStartTime;
List<PropertyModel> chromeFeatures = createTopRowPropertyModels(bottomSheet, activity); List<PropertyModel> chromeFeatures =
createTopRowPropertyModels(bottomSheet, activity, params);
List<PropertyModel> thirdPartyApps = List<PropertyModel> thirdPartyApps =
createBottomRowPropertyModels(bottomSheet, activity, params, saveLastUsed); createBottomRowPropertyModels(bottomSheet, activity, params, saveLastUsed);
...@@ -87,13 +88,14 @@ class ShareSheetCoordinator { ...@@ -87,13 +88,14 @@ class ShareSheetCoordinator {
} }
List<PropertyModel> createTopRowPropertyModels( List<PropertyModel> createTopRowPropertyModels(
ShareSheetBottomSheetContent bottomSheet, Activity activity) { ShareSheetBottomSheetContent bottomSheet, Activity activity, ShareParams shareParams) {
if (mExcludeFirstParty) { if (mExcludeFirstParty) {
return new ArrayList<>(); return new ArrayList<>();
} }
ChromeProvidedSharingOptionsProvider chromeProvidedSharingOptionsProvider = ChromeProvidedSharingOptionsProvider chromeProvidedSharingOptionsProvider =
new ChromeProvidedSharingOptionsProvider(activity, mTabProvider, new ChromeProvidedSharingOptionsProvider(activity, mTabProvider,
mBottomSheetController, bottomSheet, mPrefServiceBridge, mShareStartTime); mBottomSheetController, bottomSheet, mPrefServiceBridge, shareParams,
mShareStartTime);
return chromeProvidedSharingOptionsProvider.createPropertyModels(new HashSet<>( return chromeProvidedSharingOptionsProvider.createPropertyModels(new HashSet<>(
Arrays.asList(ContentType.LINK_PAGE_VISIBLE, ContentType.LINK_PAGE_NOT_VISIBLE, Arrays.asList(ContentType.LINK_PAGE_VISIBLE, ContentType.LINK_PAGE_NOT_VISIBLE,
ContentType.TEXT, ContentType.IMAGE, ContentType.OTHER_FILE_TYPE))); ContentType.TEXT, ContentType.IMAGE, ContentType.OTHER_FILE_TYPE)));
......
...@@ -65,7 +65,7 @@ public class ChromeProvidedSharingOptionsProviderTest { ...@@ -65,7 +65,7 @@ public class ChromeProvidedSharingOptionsProviderTest {
mChromeProvidedSharingOptionsProvider = new ChromeProvidedSharingOptionsProvider(mActivity, mChromeProvidedSharingOptionsProvider = new ChromeProvidedSharingOptionsProvider(mActivity,
/*activityTabProvider=*/null, /*bottomSheetController=*/null, /*activityTabProvider=*/null, /*bottomSheetController=*/null,
new ShareSheetBottomSheetContent(mActivity), mPrefServiceBridge, new ShareSheetBottomSheetContent(mActivity), mPrefServiceBridge,
/*shareStartTime=*/0); /*shareParams=*/null, /*shareStartTime=*/0);
// Return false to indicate printing is disabled. // Return false to indicate printing is disabled.
Mockito.when(mPrefServiceBridge.getBoolean(anyInt())).thenReturn(false); Mockito.when(mPrefServiceBridge.getBoolean(anyInt())).thenReturn(false);
......
...@@ -84,7 +84,7 @@ public final class ShareSheetCoordinatorTest { ...@@ -84,7 +84,7 @@ public final class ShareSheetCoordinatorTest {
ShareSheetBottomSheetContent bottomSheet = new ShareSheetBottomSheetContent(activity); ShareSheetBottomSheetContent bottomSheet = new ShareSheetBottomSheetContent(activity);
List<PropertyModel> propertyModels = List<PropertyModel> propertyModels =
coordinator.createTopRowPropertyModels(bottomSheet, activity); coordinator.createTopRowPropertyModels(bottomSheet, activity, /*shareParams=*/null);
Assert.assertEquals("Property model list should be empty.", 0, propertyModels.size()); Assert.assertEquals("Property model list should be empty.", 0, propertyModels.size());
} }
......
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