Commit a965ea59 authored by Sophey Dong's avatar Sophey Dong Committed by Commit Bot

[SharingHub] Add copy text option.

Screenshots:
http://dr/file/d/1HZFOf05e4dXRpdXU46Gtzvu2X72K5J3-/view
http://dr/file/d/1p-qYXdn6CnG__C0h_FITrdJSB_PbatIM/view

Bug: 1079467
Change-Id: I9208477ad764e6bc1a73556647e5b1e3e77ca02b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2231863Reviewed-by: default avatarKyle Milka <kmilka@chromium.org>
Reviewed-by: default avatarTanya Gupta <tgupta@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Commit-Queue: Sophey Dong <sophey@chromium.org>
Cr-Commit-Position: refs/heads/master@{#778998}
parent a3f39ec7
......@@ -105,7 +105,7 @@ public class ShareSheetCoordinator {
mBottomSheetController, bottomSheet, mPrefServiceBridge, shareParams,
mPrintTabCallback, mShareStartTime);
return chromeProvidedSharingOptionsProvider.createPropertyModels(contentTypes);
return chromeProvidedSharingOptionsProvider.getPropertyModels(contentTypes);
}
@VisibleForTesting
......
......@@ -36,7 +36,6 @@ import org.chromium.ui.test.util.DummyUiActivity;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* Tests {@link ChromeProvidedSharingOptionsProvider}.
......@@ -55,33 +54,24 @@ public class ChromeProvidedSharingOptionsProviderTest {
private Activity mActivity;
private ChromeProvidedSharingOptionsProvider mChromeProvidedSharingOptionsProvider;
private static Set<Integer> sAllContentTypes =
ImmutableSet.of(ContentType.LINK_PAGE_VISIBLE, ContentType.LINK_PAGE_NOT_VISIBLE,
ContentType.TEXT, ContentType.IMAGE, ContentType.OTHER_FILE_TYPE);
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mActivity = mActivityTestRule.getActivity();
mChromeProvidedSharingOptionsProvider = new ChromeProvidedSharingOptionsProvider(mActivity,
/*activityTabProvider=*/null, /*bottomSheetController=*/null,
new ShareSheetBottomSheetContent(mActivity), mPrefServiceBridge,
/*shareParams=*/null,
/*TabPrinterDelegate=*/null,
/*shareStartTime=*/0);
// Return false to indicate printing is disabled.
Mockito.when(mPrefServiceBridge.getBoolean(anyString())).thenReturn(false);
}
@Test
@MediumTest
@Features.EnableFeatures(
{ChromeFeatureList.CHROME_SHARE_SCREENSHOT, ChromeFeatureList.CHROME_SHARE_QRCODE})
@Features.DisableFeatures({ChromeFeatureList.CHROME_SHARING_HUB_V15})
public void
createPropertyModels_screenshotQrCodeEnabled_includesBoth() {
setUpChromeProvidedSharingOptionsProviderTest(/*printingEnabled=*/false);
List<PropertyModel> propertyModels =
mChromeProvidedSharingOptionsProvider.createPropertyModels(sAllContentTypes);
mChromeProvidedSharingOptionsProvider.getPropertyModels(
ShareSheetPropertyModelBuilder.ALL_CONTENT_TYPES);
Assert.assertEquals("Incorrect number of property models.", 4, propertyModels.size());
assertModelsAreInTheRightOrder(propertyModels,
......@@ -95,12 +85,14 @@ public class ChromeProvidedSharingOptionsProviderTest {
@Test
@MediumTest
@Features.DisableFeatures(
{ChromeFeatureList.CHROME_SHARE_SCREENSHOT, ChromeFeatureList.CHROME_SHARE_QRCODE})
@Features.DisableFeatures({ChromeFeatureList.CHROME_SHARE_SCREENSHOT,
ChromeFeatureList.CHROME_SHARE_QRCODE, ChromeFeatureList.CHROME_SHARING_HUB_V15})
public void
createPropertyModels_screenshotQrCodeDisabled_doesNotIncludeEither() {
setUpChromeProvidedSharingOptionsProviderTest(/*printingEnabled=*/false);
List<PropertyModel> propertyModels =
mChromeProvidedSharingOptionsProvider.createPropertyModels(sAllContentTypes);
mChromeProvidedSharingOptionsProvider.getPropertyModels(
ShareSheetPropertyModelBuilder.ALL_CONTENT_TYPES);
Assert.assertEquals("Incorrect number of property models.", 2, propertyModels.size());
assertModelsAreInTheRightOrder(propertyModels,
......@@ -112,14 +104,14 @@ public class ChromeProvidedSharingOptionsProviderTest {
@Test
@MediumTest
@Features.DisableFeatures(
{ChromeFeatureList.CHROME_SHARE_SCREENSHOT, ChromeFeatureList.CHROME_SHARE_QRCODE})
@Features.DisableFeatures({ChromeFeatureList.CHROME_SHARE_SCREENSHOT,
ChromeFeatureList.CHROME_SHARE_QRCODE, ChromeFeatureList.CHROME_SHARING_HUB_V15})
public void
createPropertyModels_printingEnabled_includesPrinting() {
Mockito.when(mPrefServiceBridge.getBoolean(anyString())).thenReturn(true);
setUpChromeProvidedSharingOptionsProviderTest(/*printingEnabled=*/true);
List<PropertyModel> propertyModels =
mChromeProvidedSharingOptionsProvider.createPropertyModels(sAllContentTypes);
mChromeProvidedSharingOptionsProvider.getPropertyModels(
ShareSheetPropertyModelBuilder.ALL_CONTENT_TYPES);
Assert.assertEquals("Incorrect number of property models.", 3, propertyModels.size());
assertModelsAreInTheRightOrder(propertyModels,
......@@ -130,16 +122,34 @@ public class ChromeProvidedSharingOptionsProviderTest {
assertModelsAreFirstParty(propertyModels);
}
@Test
@MediumTest
@Features.EnableFeatures({ChromeFeatureList.CHROME_SHARING_HUB_V15})
@Features.DisableFeatures(
{ChromeFeatureList.CHROME_SHARE_SCREENSHOT, ChromeFeatureList.CHROME_SHARE_QRCODE})
public void
createPropertyModels_sharingHub15Enabled_includesCopyText() {
setUpChromeProvidedSharingOptionsProviderTest(/*printingEnabled=*/false);
List<PropertyModel> propertyModels =
mChromeProvidedSharingOptionsProvider.getPropertyModels(
ImmutableSet.of(ContentType.TEXT));
Assert.assertEquals("Incorrect number of property models.", 1, propertyModels.size());
assertModelsAreInTheRightOrder(propertyModels,
ImmutableList.of(mActivity.getResources().getString(R.string.sharing_copy_text)));
assertModelsAreFirstParty(propertyModels);
}
@Test
@MediumTest
@Features.EnableFeatures(
{ChromeFeatureList.CHROME_SHARE_SCREENSHOT, ChromeFeatureList.CHROME_SHARE_QRCODE})
@Features.DisableFeatures({ChromeFeatureList.CHROME_SHARING_HUB_V15})
public void
createPropertyModels_filtersByContentType() {
Mockito.when(mPrefServiceBridge.getBoolean(anyString())).thenReturn(true);
setUpChromeProvidedSharingOptionsProviderTest(/*printingEnabled=*/true);
List<PropertyModel> propertyModels =
mChromeProvidedSharingOptionsProvider.createPropertyModels(
mChromeProvidedSharingOptionsProvider.getPropertyModels(
ImmutableSet.of(ContentType.LINK_PAGE_NOT_VISIBLE));
Assert.assertEquals("Incorrect number of property models.", 3, propertyModels.size());
......@@ -155,12 +165,12 @@ public class ChromeProvidedSharingOptionsProviderTest {
@MediumTest
@Features.EnableFeatures(
{ChromeFeatureList.CHROME_SHARE_SCREENSHOT, ChromeFeatureList.CHROME_SHARE_QRCODE})
@Features.DisableFeatures({ChromeFeatureList.CHROME_SHARING_HUB_V15})
public void
createPropertyModels_multipleTypes_filtersByContentType() {
Mockito.when(mPrefServiceBridge.getBoolean(anyString())).thenReturn(true);
setUpChromeProvidedSharingOptionsProviderTest(/*printingEnabled=*/true);
List<PropertyModel> propertyModels =
mChromeProvidedSharingOptionsProvider.createPropertyModels(
mChromeProvidedSharingOptionsProvider.getPropertyModels(
ImmutableSet.of(ContentType.LINK_PAGE_NOT_VISIBLE, ContentType.IMAGE));
Assert.assertEquals("Incorrect number of property models.", 4, propertyModels.size());
......@@ -173,6 +183,17 @@ public class ChromeProvidedSharingOptionsProviderTest {
assertModelsAreFirstParty(propertyModels);
}
private void setUpChromeProvidedSharingOptionsProviderTest(boolean printingEnabled) {
Mockito.when(mPrefServiceBridge.getBoolean(anyString())).thenReturn(printingEnabled);
mChromeProvidedSharingOptionsProvider = new ChromeProvidedSharingOptionsProvider(mActivity,
/*activityTabProvider=*/null, /*bottomSheetController=*/null,
new ShareSheetBottomSheetContent(mActivity), mPrefServiceBridge,
/*shareParams=*/null,
/*TabPrinterDelegate=*/null,
/*shareStartTime=*/0);
}
private void assertModelsAreInTheRightOrder(
List<PropertyModel> propertyModels, List<String> expectedOrder) {
ImmutableList.Builder<String> actualLabelOrder = ImmutableList.builder();
......
......@@ -3639,6 +3639,10 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
Copy link
</message>
<message name="IDS_SHARING_COPY_TEXT" desc="Label for the Copy Text button in the sharing hub.">
Copy text
</message>
<message name="IDS_SHARING_SCREENSHOT" desc="Label for Screenshot button in the sharing hub.">
Screenshot
</message>
......@@ -3647,6 +3651,10 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
Link Copied
</message>
<message name="IDS_TEXT_COPIED" desc="Text shown in the toast notification when Copy Text is selected in the sharing hub.">
Text Copied
</message>
<message name="IDS_QR_CODE_CAMERA_FRAMING_RECT_DESCRIPTION" desc="Text under the framing rectangle in QR code camera preview.">
Position QR/barcode in this frame.
</message>
......
ccff30bf9065956fa8882560ba4fc4418a72f35c
\ No newline at end of file
4ceda14ef63299325b1f8b47436f65ceb2a05e2a
\ No newline at end of file
......@@ -19968,6 +19968,14 @@ should be able to be added at any place in this file.
</description>
</action>
<action name="SharingHubAndroid.CopyTextSelected">
<owner>sophey@chromium.org</owner>
<owner>src/components/send_tab_to_self/OWNERS</owner>
<description>
The &quot;Copy Text&quot; option was selected in the sharing hub.
</description>
</action>
<action name="SharingHubAndroid.CopyURLSelected">
<owner>kmilka@chromium.org</owner>
<owner>src/components/send_tab_to_self/OWNERS</owner>
......
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