Commit f460c0a2 authored by Evan Stade's avatar Evan Stade Committed by Commit Bot

Clank: use PrefService instead of PrefServiceBridge in share code.

Bug: 1071603
Change-Id: I03d8549704afe97b13d6b0f421c0110f5a28d3c2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2287949
Commit-Queue: Evan Stade <estade@chromium.org>
Reviewed-by: default avatarGayane Petrosyan <gayane@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Auto-Submit: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#789327}
parent 62bfe755
......@@ -18,7 +18,6 @@ import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.feature_engagement.ScreenshotTabObserver;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.printing.PrintShareActivity;
import org.chromium.chrome.browser.printing.TabPrinter;
import org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity;
......@@ -296,7 +295,7 @@ public class ShareDelegateImpl implements ShareDelegate {
new ShareSheetCoordinator(controller, tabProvider,
new ShareSheetPropertyModelBuilder(controller,
ContextUtils.getApplicationContext().getPackageManager()),
PrefServiceBridge.getInstance(), printCallback);
printCallback);
// TODO(crbug/1009124): open custom share sheet.
coordinator.showShareSheet(params, chromeShareExtras, shareStartTime);
} else {
......
......@@ -2,6 +2,7 @@ include_rules = [
# TODO(crbug/1022172): Remove this dependency when ShareActivity is moved to
# chrome/browser/share.
"+chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java",
"+chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java",
"+chrome/android/java/src/org/chromium/chrome/browser/FileProviderHelper.java",
"+chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java",
"+chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java",
......
......@@ -19,7 +19,7 @@ import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity;
import org.chromium.chrome.browser.share.ChromeShareExtras;
import org.chromium.chrome.browser.share.qrcode.QrCodeCoordinator;
......@@ -31,6 +31,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetController.Shee
import org.chromium.components.browser_ui.bottomsheet.BottomSheetObserver;
import org.chromium.components.browser_ui.bottomsheet.EmptyBottomSheetObserver;
import org.chromium.components.browser_ui.share.ShareParams;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.widget.Toast;
......@@ -49,7 +50,6 @@ class ChromeProvidedSharingOptionsProvider {
private final Supplier<Tab> mTabProvider;
private final BottomSheetController mBottomSheetController;
private final ShareSheetBottomSheetContent mBottomSheetContent;
private final PrefServiceBridge mPrefServiceBridge;
private final ShareParams mShareParams;
private final Callback<Tab> mPrintTabCallback;
private final long mShareStartTime;
......@@ -66,8 +66,6 @@ class ChromeProvidedSharingOptionsProvider {
* @param bottomSheetController The {@link BottomSheetController} for the current activity.
* @param bottomSheetContent The {@link ShareSheetBottomSheetContent} for the current
* activity.
* @param prefServiceBridge The {@link PrefServiceBridge} singleton. This provides printing
* preferences.
* @param shareParams The {@link ShareParams} for the current share.
* @param chromeShareExtras The {@link ChromeShareExtras} for the current share.
* @param printTab A {@link Callback} that will print a given Tab.
......@@ -77,14 +75,13 @@ class ChromeProvidedSharingOptionsProvider {
*/
ChromeProvidedSharingOptionsProvider(Activity activity, Supplier<Tab> tabProvider,
BottomSheetController bottomSheetController,
ShareSheetBottomSheetContent bottomSheetContent, PrefServiceBridge prefServiceBridge,
ShareParams shareParams, ChromeShareExtras chromeShareExtras, Callback<Tab> printTab,
long shareStartTime, ChromeOptionShareCallback chromeOptionShareCallback) {
ShareSheetBottomSheetContent bottomSheetContent, ShareParams shareParams,
ChromeShareExtras chromeShareExtras, Callback<Tab> printTab, long shareStartTime,
ChromeOptionShareCallback chromeOptionShareCallback) {
mActivity = activity;
mTabProvider = tabProvider;
mBottomSheetController = bottomSheetController;
mBottomSheetContent = bottomSheetContent;
mPrefServiceBridge = prefServiceBridge;
mShareParams = shareParams;
mPrintTabCallback = printTab;
mShareStartTime = shareStartTime;
......@@ -152,7 +149,8 @@ class ChromeProvidedSharingOptionsProvider {
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SHARE_QRCODE)) {
mOrderedFirstPartyOptions.add(createQrCodeFirstPartyOption());
}
if (mPrefServiceBridge.getBoolean(Pref.PRINTING_ENABLED)) {
if (UserPrefs.get(Profile.fromWebContents(mTabProvider.get().getWebContents()))
.getBoolean(Pref.PRINTING_ENABLED)) {
mOrderedFirstPartyOptions.add(createPrintingFirstPartyOption());
}
}
......
......@@ -15,7 +15,6 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.share.ChromeShareExtras;
import org.chromium.chrome.browser.share.ShareHelper;
import org.chromium.chrome.browser.tab.Tab;
......@@ -41,7 +40,6 @@ public class ShareSheetCoordinator
private final BottomSheetController mBottomSheetController;
private final Supplier<Tab> mTabProvider;
private final ShareSheetPropertyModelBuilder mPropertyModelBuilder;
private final PrefServiceBridge mPrefServiceBridge;
private final Callback<Tab> mPrintTabCallback;
private long mShareStartTime;
private boolean mExcludeFirstParty;
......@@ -55,17 +53,13 @@ public class ShareSheetCoordinator
* @param controller The {@link BottomSheetController} for the current activity.
* @param tabProvider Supplier for the current activity tab.
* @param modelBuilder The {@link ShareSheetPropertyModelBuilder} for the share sheet.
* @param prefServiceBridge The {@link PrefServiceBridge} singleton. This provides preferences
* for the Chrome-provided property models.
*/
// TODO(crbug/1022172): Should be package-protected once modularization is complete.
public ShareSheetCoordinator(BottomSheetController controller, Supplier<Tab> tabProvider,
ShareSheetPropertyModelBuilder modelBuilder, PrefServiceBridge prefServiceBridge,
Callback<Tab> printTab) {
ShareSheetPropertyModelBuilder modelBuilder, Callback<Tab> printTab) {
mBottomSheetController = controller;
mTabProvider = tabProvider;
mPropertyModelBuilder = modelBuilder;
mPrefServiceBridge = prefServiceBridge;
mPrintTabCallback = printTab;
mBottomSheetObserver = new EmptyBottomSheetObserver() {
@Override
......@@ -138,8 +132,8 @@ public class ShareSheetCoordinator
}
ChromeProvidedSharingOptionsProvider chromeProvidedSharingOptionsProvider =
new ChromeProvidedSharingOptionsProvider(activity, mTabProvider,
mBottomSheetController, mBottomSheet, mPrefServiceBridge, shareParams,
chromeShareExtras, mPrintTabCallback, mShareStartTime, this);
mBottomSheetController, mBottomSheet, shareParams, chromeShareExtras,
mPrintTabCallback, mShareStartTime, this);
return chromeProvidedSharingOptionsProvider.getPropertyModels(contentTypes);
}
......
......@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.share.share_sheet;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyObject;
import static org.mockito.ArgumentMatchers.anyString;
import android.app.Activity;
......@@ -25,15 +26,21 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.chromium.base.test.util.JniMocker;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileJni;
import org.chromium.chrome.browser.share.ChromeShareExtras;
import org.chromium.chrome.browser.share.share_sheet.ShareSheetPropertyModelBuilder.ContentType;
import org.chromium.chrome.browser.tab.MockTab;
import org.chromium.chrome.test.ChromeBrowserTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.components.browser_ui.share.ShareParams;
import org.chromium.components.prefs.PrefService;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.components.user_prefs.UserPrefsJni;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.test.util.DummyUiActivity;
......@@ -55,8 +62,16 @@ public class ChromeProvidedSharingOptionsProviderTest {
@Rule
public TestRule mFeatureProcessor = new Features.JUnitProcessor();
@Rule
public JniMocker mJniMocker = new JniMocker();
@Mock
private Profile.Natives mProfileNatives;
@Mock
private UserPrefs.Natives mUserPrefsNatives;
@Mock
private PrefServiceBridge mPrefServiceBridge;
private PrefService mPrefService;
private static final String URL = "http://www.google.com/";
......@@ -69,6 +84,10 @@ public class ChromeProvidedSharingOptionsProviderTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mJniMocker.mock(ProfileJni.TEST_HOOKS, mProfileNatives);
mJniMocker.mock(UserPrefsJni.TEST_HOOKS, mUserPrefsNatives);
Mockito.when(mProfileNatives.fromWebContents(anyObject())).thenReturn(null);
Mockito.when(mUserPrefsNatives.get(anyObject())).thenReturn(mPrefService);
mActivity = mActivityTestRule.getActivity();
}
......@@ -252,12 +271,15 @@ public class ChromeProvidedSharingOptionsProviderTest {
}
private void setUpChromeProvidedSharingOptionsProviderTest(boolean printingEnabled) {
Mockito.when(mPrefServiceBridge.getBoolean(anyString())).thenReturn(printingEnabled);
Mockito.when(mPrefService.getBoolean(anyString())).thenReturn(printingEnabled);
mChromeProvidedSharingOptionsProvider = new ChromeProvidedSharingOptionsProvider(mActivity,
/*activityTabProvider=*/null, /*bottomSheetController=*/null,
/*activityTabProvider=*/
()
-> new MockTab(0, false),
/*bottomSheetController=*/null,
new ShareSheetBottomSheetContent(mActivity, mShareSheetCoordinator),
mPrefServiceBridge, new ShareParams.Builder(null, "", "").build(),
new ShareParams.Builder(null, "", "").build(),
new ChromeShareExtras.Builder().build(),
/*TabPrinterDelegate=*/null,
/*shareStartTime=*/0, mShareSheetCoordinator);
......
......@@ -89,7 +89,7 @@ public final class ShareSheetCoordinatorTest {
.thenReturn(thirdPartyPropertyModels);
mShareSheetCoordinator =
new ShareSheetCoordinator(mController, null, mPropertyModelBuilder, null, null);
new ShareSheetCoordinator(mController, null, mPropertyModelBuilder, null);
}
@Test
......
......@@ -4,6 +4,8 @@
package org.chromium.components.user_prefs;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
......@@ -20,8 +22,9 @@ public class UserPrefs {
return UserPrefsJni.get().get(browserContextHandle);
}
@VisibleForTesting
@NativeMethods
interface Natives {
public interface Natives {
PrefService get(BrowserContextHandle browserContextHandle);
}
}
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