Commit 1015e055 authored by Nick Burris's avatar Nick Burris Committed by Chromium LUCI CQ

Make ExternalAuthUtils a singleton instance

* Make ExternalAuthUtils provide its own instance instead of callers
  having to use AppHooks. A follow up patch will remove the
  ExternalAuthUtils instance from AppHooks.
* This is patch 3/5 for providing ExternalAuthUtils as a singleton
  instead of from AppHooks.

This is a reland of
https://chromium-review.googlesource.com/c/chromium/src/+/2587430
after adding the missing dependency to the
android_sync_integration_tests target.

Bug: 1154371, 1159404
Change-Id: I28a98e549dd139af9cfcb5f9a802e02839c3e0ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2593652Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Nick Burris <nburris@chromium.org>
Cr-Commit-Position: refs/heads/master@{#837583}
parent c2975451
...@@ -1346,6 +1346,7 @@ if (enable_vr || enable_arcore) { ...@@ -1346,6 +1346,7 @@ if (enable_vr || enable_arcore) {
"//chrome/browser/util:java", "//chrome/browser/util:java",
"//chrome/test/android:chrome_java_test_support", "//chrome/test/android:chrome_java_test_support",
"//components/embedder_support/android:util_java", "//components/embedder_support/android:util_java",
"//components/externalauth/android:google_delegate_public_impl_java",
"//components/permissions/android:java", "//components/permissions/android:java",
"//components/policy/android:policy_java", "//components/policy/android:policy_java",
"//content/public/android:content_java", "//content/public/android:content_java",
......
...@@ -28,7 +28,7 @@ public class AppHooksModule { ...@@ -28,7 +28,7 @@ public class AppHooksModule {
@Provides @Provides
public ExternalAuthUtils provideExternalAuthUtils() { public ExternalAuthUtils provideExternalAuthUtils() {
return AppHooks.get().getExternalAuthUtils(); return ExternalAuthUtils.getInstance();
} }
@Provides @Provides
......
...@@ -53,6 +53,7 @@ import org.chromium.chrome.browser.webapps.WebappActivity; ...@@ -53,6 +53,7 @@ import org.chromium.chrome.browser.webapps.WebappActivity;
import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.embedder_support.util.UrlUtilities;
import org.chromium.components.external_intents.ExternalNavigationHandler; import org.chromium.components.external_intents.ExternalNavigationHandler;
import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.content_public.browser.BrowserStartupController; import org.chromium.content_public.browser.BrowserStartupController;
import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.common.ContentUrlConstants; import org.chromium.content_public.common.ContentUrlConstants;
...@@ -1070,7 +1071,7 @@ public class IntentHandler { ...@@ -1070,7 +1071,7 @@ public class IntentHandler {
if (isChromeToken(token)) { if (isChromeToken(token)) {
return true; return true;
} }
if (AppHooks.get().getExternalAuthUtils().isGoogleSigned(token.getCreatorPackage())) { if (ExternalAuthUtils.getInstance().isGoogleSigned(token.getCreatorPackage())) {
return true; return true;
} }
return false; return false;
......
...@@ -33,7 +33,7 @@ public class PlayServicesVersionInfo { ...@@ -33,7 +33,7 @@ public class PlayServicesVersionInfo {
final long installedGmsVersion = getApkVersionNumber(context); final long installedGmsVersion = getApkVersionNumber(context);
final String accessType; final String accessType;
ExternalAuthUtils externalAuthUtils = AppHooks.get().getExternalAuthUtils(); ExternalAuthUtils externalAuthUtils = ExternalAuthUtils.getInstance();
if (externalAuthUtils.canUseFirstPartyGooglePlayServices()) { if (externalAuthUtils.canUseFirstPartyGooglePlayServices()) {
accessType = "1p"; accessType = "1p";
} else if (externalAuthUtils.canUseGooglePlayServices()) { } else if (externalAuthUtils.canUseGooglePlayServices()) {
......
...@@ -24,6 +24,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; ...@@ -24,6 +24,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate; import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate;
import org.chromium.components.browser_ui.util.ComposedBrowserControlsVisibilityDelegate; import org.chromium.components.browser_ui.util.ComposedBrowserControlsVisibilityDelegate;
import org.chromium.components.external_intents.ExternalNavigationHandler; import org.chromium.components.external_intents.ExternalNavigationHandler;
import org.chromium.components.externalauth.ExternalAuthUtils;
/** /**
* {@link TabDelegateFactory} class to be used in all {@link Tab} instances owned by a * {@link TabDelegateFactory} class to be used in all {@link Tab} instances owned by a
...@@ -68,7 +69,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { ...@@ -68,7 +69,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
mEphemeralTabCoordinatorSupplier, mContextMenuCopyLinkObserver, mEphemeralTabCoordinatorSupplier, mContextMenuCopyLinkObserver,
mActivity::getSnackbarManager), mActivity::getSnackbarManager),
mShareDelegateSupplier, ChromeContextMenuPopulator.ContextMenuMode.NORMAL, mShareDelegateSupplier, ChromeContextMenuPopulator.ContextMenuMode.NORMAL,
AppHooks.get().getExternalAuthUtils()); ExternalAuthUtils.getInstance());
} }
@Override @Override
......
...@@ -9,7 +9,7 @@ import androidx.annotation.VisibleForTesting; ...@@ -9,7 +9,7 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.browser.AppHooks; import org.chromium.components.externalauth.ExternalAuthUtils;
/** /**
* Used to check whether Google Play Services version on the device is as * Used to check whether Google Play Services version on the device is as
...@@ -29,7 +29,7 @@ final class GooglePlayServicesChecker { ...@@ -29,7 +29,7 @@ final class GooglePlayServicesChecker {
@VisibleForTesting @VisibleForTesting
protected static boolean shouldDisableBackgroundSync() { protected static boolean shouldDisableBackgroundSync() {
boolean isAvailable = true; boolean isAvailable = true;
if (!AppHooks.get().getExternalAuthUtils().canUseGooglePlayServices()) { if (!ExternalAuthUtils.getInstance().canUseGooglePlayServices()) {
Log.i(TAG, "Disabling Background Sync because Play Services is not up to date."); Log.i(TAG, "Disabling Background Sync because Play Services is not up to date.");
isAvailable = false; isAvailable = false;
} }
......
...@@ -21,7 +21,6 @@ import org.chromium.base.Log; ...@@ -21,7 +21,6 @@ import org.chromium.base.Log;
import org.chromium.base.PackageManagerUtils; import org.chromium.base.PackageManagerUtils;
import org.chromium.base.supplier.Supplier; import org.chromium.base.supplier.Supplier;
import org.chromium.cc.input.BrowserControlsState; import org.chromium.cc.input.BrowserControlsState;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.ShortcutHelper; import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.ChromeActivity;
...@@ -494,7 +493,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory { ...@@ -494,7 +493,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory {
Supplier<ShareDelegate> shareDelegateSupplier = Supplier<ShareDelegate> shareDelegateSupplier =
mActivity == null ? null : mActivity.getShareDelegateSupplier(); mActivity == null ? null : mActivity.getShareDelegateSupplier();
return new ChromeContextMenuPopulatorFactory(createTabContextMenuItemDelegate(tab), return new ChromeContextMenuPopulatorFactory(createTabContextMenuItemDelegate(tab),
shareDelegateSupplier, contextMenuMode, AppHooks.get().getExternalAuthUtils()); shareDelegateSupplier, contextMenuMode, ExternalAuthUtils.getInstance());
} }
@Override @Override
......
...@@ -70,6 +70,7 @@ import org.chromium.chrome.browser.tab.Tab; ...@@ -70,6 +70,7 @@ import org.chromium.chrome.browser.tab.Tab;
import org.chromium.components.content_settings.CookieControlsMode; import org.chromium.components.content_settings.CookieControlsMode;
import org.chromium.components.embedder_support.util.Origin; import org.chromium.components.embedder_support.util.Origin;
import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.components.user_prefs.UserPrefs; import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.content_public.browser.BrowserStartupController; import org.chromium.content_public.browser.BrowserStartupController;
import org.chromium.content_public.browser.ChildProcessLauncherHelper; import org.chromium.content_public.browser.ChildProcessLauncherHelper;
...@@ -1081,7 +1082,7 @@ public class CustomTabsConnection { ...@@ -1081,7 +1082,7 @@ public class CustomTabsConnection {
public boolean isSessionFirstParty(CustomTabsSessionToken session) { public boolean isSessionFirstParty(CustomTabsSessionToken session) {
String packageName = getClientPackageNameForSession(session); String packageName = getClientPackageNameForSession(session);
if (packageName == null) return false; if (packageName == null) return false;
return AppHooks.get().getExternalAuthUtils().isGoogleSigned(packageName); return ExternalAuthUtils.getInstance().isGoogleSigned(packageName);
} }
void setIgnoreUrlFragmentsForSession(CustomTabsSessionToken session, boolean value) { void setIgnoreUrlFragmentsForSession(CustomTabsSessionToken session, boolean value) {
......
...@@ -9,7 +9,6 @@ import android.app.Activity; ...@@ -9,7 +9,6 @@ import android.app.Activity;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.SyncFirstSetupCompleteSource; import org.chromium.chrome.browser.SyncFirstSetupCompleteSource;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.services.AndroidChildAccountHelper; import org.chromium.chrome.browser.services.AndroidChildAccountHelper;
...@@ -17,6 +16,7 @@ import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; ...@@ -17,6 +16,7 @@ import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.services.SigninManager; import org.chromium.chrome.browser.signin.services.SigninManager;
import org.chromium.chrome.browser.sync.ProfileSyncService; import org.chromium.chrome.browser.sync.ProfileSyncService;
import org.chromium.chrome.browser.sync.settings.AccountManagementFragment; import org.chromium.chrome.browser.sync.settings.AccountManagementFragment;
import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.components.externalauth.UserRecoverableErrorHandler; import org.chromium.components.externalauth.UserRecoverableErrorHandler;
import org.chromium.components.signin.AccountManagerFacadeProvider; import org.chromium.components.signin.AccountManagerFacadeProvider;
import org.chromium.components.signin.ChildAccountStatus; import org.chromium.components.signin.ChildAccountStatus;
...@@ -119,7 +119,7 @@ public final class ForcedSigninProcessor { ...@@ -119,7 +119,7 @@ public final class ForcedSigninProcessor {
if (IdentityServicesProvider.get() if (IdentityServicesProvider.get()
.getSigninManager(Profile.getLastUsedRegularProfile()) .getSigninManager(Profile.getLastUsedRegularProfile())
.isForceSigninEnabled()) { .isForceSigninEnabled()) {
AppHooks.get().getExternalAuthUtils().canUseGooglePlayServices( ExternalAuthUtils.getInstance().canUseGooglePlayServices(
new UserRecoverableErrorHandler.ModalDialog(activity, false)); new UserRecoverableErrorHandler.ModalDialog(activity, false));
} }
} }
......
...@@ -11,7 +11,6 @@ import com.google.android.gms.common.api.GoogleApiClient; ...@@ -11,7 +11,6 @@ import com.google.android.gms.common.api.GoogleApiClient;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.TraceEvent; import org.chromium.base.TraceEvent;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.components.externalauth.ExternalAuthUtils; import org.chromium.components.externalauth.ExternalAuthUtils;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -37,7 +36,7 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient { ...@@ -37,7 +36,7 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
boolean requireFirstPartyBuild) { boolean requireFirstPartyBuild) {
mApplicationContext = context.getApplicationContext(); mApplicationContext = context.getApplicationContext();
mClient = client; mClient = client;
mExternalAuthUtils = AppHooks.get().getExternalAuthUtils(); mExternalAuthUtils = ExternalAuthUtils.getInstance();
if (requireFirstPartyBuild && !mExternalAuthUtils.isChromeGoogleSigned()) { if (requireFirstPartyBuild && !mExternalAuthUtils.isChromeGoogleSigned()) {
throw new IllegalStateException("GoogleApiClient requires first-party build"); throw new IllegalStateException("GoogleApiClient requires first-party build");
} }
......
...@@ -16,7 +16,6 @@ import android.view.ViewGroup; ...@@ -16,7 +16,6 @@ import android.view.ViewGroup;
import androidx.annotation.ColorInt; import androidx.annotation.ColorInt;
import androidx.core.graphics.drawable.RoundedBitmapDrawable; import androidx.core.graphics.drawable.RoundedBitmapDrawable;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.gsa.GSAState; import org.chromium.chrome.browser.gsa.GSAState;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.lifecycle.Destroyable; import org.chromium.chrome.browser.lifecycle.Destroyable;
...@@ -25,6 +24,7 @@ import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService; ...@@ -25,6 +24,7 @@ import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.components.browser_ui.styles.ChromeColors; import org.chromium.components.browser_ui.styles.ChromeColors;
import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.ui.base.ViewUtils; import org.chromium.ui.base.ViewUtils;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
...@@ -81,7 +81,7 @@ class SearchBoxMediator ...@@ -81,7 +81,7 @@ class SearchBoxMediator
@Override @Override
public void onFinishNativeInitialization() { public void onFinishNativeInitialization() {
mAssistantVoiceSearchService = new AssistantVoiceSearchService(mContext, mAssistantVoiceSearchService = new AssistantVoiceSearchService(mContext,
AppHooks.get().getExternalAuthUtils(), TemplateUrlServiceFactory.get(), ExternalAuthUtils.getInstance(), TemplateUrlServiceFactory.get(),
GSAState.getInstance(mContext), this, SharedPreferencesManager.getInstance()); GSAState.getInstance(mContext), this, SharedPreferencesManager.getInstance());
onAssistantVoiceSearchServiceChanged(); onAssistantVoiceSearchServiceChanged();
} }
......
...@@ -23,7 +23,6 @@ import org.chromium.base.metrics.RecordUserAction; ...@@ -23,7 +23,6 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.base.supplier.OneshotSupplierImpl;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.gsa.GSAState; import org.chromium.chrome.browser.gsa.GSAState;
import org.chromium.chrome.browser.locale.LocaleManager; import org.chromium.chrome.browser.locale.LocaleManager;
...@@ -43,6 +42,7 @@ import org.chromium.chrome.browser.profiles.Profile; ...@@ -43,6 +42,7 @@ import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.KeyNavigationUtil; import org.chromium.chrome.browser.util.KeyNavigationUtil;
import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.embedder_support.util.UrlUtilities;
import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.components.search_engines.TemplateUrl; import org.chromium.components.search_engines.TemplateUrl;
import org.chromium.components.search_engines.TemplateUrlService; import org.chromium.components.search_engines.TemplateUrlService;
import org.chromium.components.search_engines.TemplateUrlService.TemplateUrlServiceObserver; import org.chromium.components.search_engines.TemplateUrlService.TemplateUrlServiceObserver;
...@@ -147,7 +147,7 @@ class LocationBarMediator implements LocationBarDataProvider.Observer, FakeboxDe ...@@ -147,7 +147,7 @@ class LocationBarMediator implements LocationBarDataProvider.Observer, FakeboxDe
mOmniboxPrerender = new OmniboxPrerender(); mOmniboxPrerender = new OmniboxPrerender();
Context context = mLocationBarLayout.getContext(); Context context = mLocationBarLayout.getContext();
mAssistantVoiceSearchService = new AssistantVoiceSearchService(context, mAssistantVoiceSearchService = new AssistantVoiceSearchService(context,
AppHooks.get().getExternalAuthUtils(), mTemplateUrlServiceSupplier.get(), ExternalAuthUtils.getInstance(), mTemplateUrlServiceSupplier.get(),
GSAState.getInstance(context), this, SharedPreferencesManager.getInstance()); GSAState.getInstance(context), this, SharedPreferencesManager.getInstance());
mAssistantVoiceSearchSupplier.set(mAssistantVoiceSearchService); mAssistantVoiceSearchSupplier.set(mAssistantVoiceSearchService);
mLocationBarLayout.onFinishNativeInitialization(); mLocationBarLayout.onFinishNativeInitialization();
......
...@@ -11,7 +11,6 @@ import android.os.Message; ...@@ -11,7 +11,6 @@ import android.os.Message;
import android.os.Messenger; import android.os.Messenger;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.version.ChromeVersionInfo; import org.chromium.chrome.browser.version.ChromeVersionInfo;
import org.chromium.components.externalauth.ExternalAuthUtils; import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.components.externalauth.VerifiedHandler; import org.chromium.components.externalauth.VerifiedHandler;
...@@ -26,7 +25,7 @@ public class ChromePrerenderServiceImpl extends ChromePrerenderService.Impl { ...@@ -26,7 +25,7 @@ public class ChromePrerenderServiceImpl extends ChromePrerenderService.Impl {
*/ */
static class IncomingHandler extends VerifiedHandler { static class IncomingHandler extends VerifiedHandler {
IncomingHandler(Context context) { IncomingHandler(Context context) {
super(context, AppHooks.get().getExternalAuthUtils(), super(context, ExternalAuthUtils.getInstance(),
ChromeVersionInfo.isLocalBuild() ChromeVersionInfo.isLocalBuild()
? 0 ? 0
: ExternalAuthUtils.FLAG_SHOULD_BE_GOOGLE_SIGNED); : ExternalAuthUtils.FLAG_SHOULD_BE_GOOGLE_SIGNED);
......
...@@ -32,7 +32,6 @@ import org.chromium.base.annotations.CalledByNative; ...@@ -32,7 +32,6 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.database.SQLiteCursor; import org.chromium.chrome.browser.database.SQLiteCursor;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer; import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
...@@ -1133,10 +1132,9 @@ public class ChromeBrowserProviderImpl extends ChromeBrowserProvider.Impl { ...@@ -1133,10 +1132,9 @@ public class ChromeBrowserProviderImpl extends ChromeBrowserProvider.Impl {
} }
private boolean hasPermission(String permission) { private boolean hasPermission(String permission) {
boolean isSystemOrGoogleCaller = boolean isSystemOrGoogleCaller = ExternalAuthUtils.getInstance().isCallerValid(getContext(),
AppHooks.get().getExternalAuthUtils().isCallerValid(getContext(), ExternalAuthUtils.FLAG_SHOULD_BE_GOOGLE_SIGNED
ExternalAuthUtils.FLAG_SHOULD_BE_GOOGLE_SIGNED | ExternalAuthUtils.FLAG_SHOULD_BE_SYSTEM);
| ExternalAuthUtils.FLAG_SHOULD_BE_SYSTEM);
if (isSystemOrGoogleCaller) { if (isSystemOrGoogleCaller) {
recordPermissionWasGranted("SignaturePassed", permission); recordPermissionWasGranted("SignaturePassed", permission);
......
...@@ -21,7 +21,6 @@ import org.chromium.base.annotations.NativeMethods; ...@@ -21,7 +21,6 @@ import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.signin.services.SigninManager; import org.chromium.chrome.browser.signin.services.SigninManager;
import org.chromium.chrome.browser.signin.services.SigninPreferencesManager; import org.chromium.chrome.browser.signin.services.SigninPreferencesManager;
...@@ -108,7 +107,7 @@ class SigninManagerImpl implements AccountTrackerService.OnSystemAccountsSeededL ...@@ -108,7 +107,7 @@ class SigninManagerImpl implements AccountTrackerService.OnSystemAccountsSeededL
assert identityMutator != null; assert identityMutator != null;
return new SigninManagerImpl(nativeSigninManagerAndroid, accountTrackerService, return new SigninManagerImpl(nativeSigninManagerAndroid, accountTrackerService,
identityManager, identityMutator, AndroidSyncSettings.get(), identityManager, identityMutator, AndroidSyncSettings.get(),
AppHooks.get().getExternalAuthUtils()); ExternalAuthUtils.getInstance());
} }
@VisibleForTesting @VisibleForTesting
......
...@@ -32,8 +32,8 @@ import org.chromium.base.ContextUtils; ...@@ -32,8 +32,8 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.blink.mojom.AuthenticatorStatus; import org.chromium.blink.mojom.AuthenticatorStatus;
import org.chromium.blink.mojom.PublicKeyCredentialRequestOptions; import org.chromium.blink.mojom.PublicKeyCredentialRequestOptions;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.components.externalauth.UserRecoverableErrorHandler; import org.chromium.components.externalauth.UserRecoverableErrorHandler;
import org.chromium.content_public.browser.RenderFrameHost; import org.chromium.content_public.browser.RenderFrameHost;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
...@@ -254,7 +254,7 @@ public class Fido2CredentialRequest implements WindowAndroid.IntentCallback { ...@@ -254,7 +254,7 @@ public class Fido2CredentialRequest implements WindowAndroid.IntentCallback {
return true; return true;
} }
if (!AppHooks.get().getExternalAuthUtils().canUseGooglePlayServices( if (!ExternalAuthUtils.getInstance().canUseGooglePlayServices(
new UserRecoverableErrorHandler.Silent())) { new UserRecoverableErrorHandler.Silent())) {
return false; return false;
} }
......
...@@ -19,7 +19,6 @@ import org.junit.runner.RunWith; ...@@ -19,7 +19,6 @@ import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler.BackgroundSyncTask; import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler.BackgroundSyncTask;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
...@@ -27,6 +26,7 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner; ...@@ -27,6 +26,7 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.browser.TabTitleObserver; import org.chromium.chrome.test.util.browser.TabTitleObserver;
import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule; import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.content_public.browser.test.NativeLibraryTestUtils; import org.chromium.content_public.browser.test.NativeLibraryTestUtils;
import org.chromium.content_public.browser.test.util.BackgroundSyncNetworkUtils; import org.chromium.content_public.browser.test.util.BackgroundSyncNetworkUtils;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
...@@ -75,7 +75,7 @@ public final class BackgroundSyncTest { ...@@ -75,7 +75,7 @@ public final class BackgroundSyncTest {
// fixed. // fixed.
// Note that this should be done before the startMainActivityOnBlankPage(), because Chrome // Note that this should be done before the startMainActivityOnBlankPage(), because Chrome
// will otherwise run this check on startup and disable BackgroundSync code. // will otherwise run this check on startup and disable BackgroundSync code.
if (!AppHooks.get().getExternalAuthUtils().canUseGooglePlayServices()) { if (!ExternalAuthUtils.getInstance().canUseGooglePlayServices()) {
NativeLibraryTestUtils.loadNativeLibraryNoBrowserProcess(); NativeLibraryTestUtils.loadNativeLibraryNoBrowserProcess();
disableGooglePlayServicesVersionCheck(); disableGooglePlayServicesVersionCheck();
} }
......
...@@ -19,7 +19,6 @@ import org.junit.runner.RunWith; ...@@ -19,7 +19,6 @@ import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler.BackgroundSyncTask; import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler.BackgroundSyncTask;
import org.chromium.chrome.browser.engagement.SiteEngagementService; import org.chromium.chrome.browser.engagement.SiteEngagementService;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
...@@ -29,6 +28,7 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner; ...@@ -29,6 +28,7 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.browser.TabTitleObserver; import org.chromium.chrome.test.util.browser.TabTitleObserver;
import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule; import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
import org.chromium.components.externalauth.ExternalAuthUtils;
import org.chromium.content_public.browser.test.NativeLibraryTestUtils; import org.chromium.content_public.browser.test.NativeLibraryTestUtils;
import org.chromium.content_public.browser.test.util.BackgroundSyncNetworkUtils; import org.chromium.content_public.browser.test.util.BackgroundSyncNetworkUtils;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
...@@ -82,7 +82,7 @@ public final class PeriodicBackgroundSyncTest { ...@@ -82,7 +82,7 @@ public final class PeriodicBackgroundSyncTest {
// been fixed. // been fixed.
// Note that this should be done before the startMainActivityOnBlankPage(), because Chrome // Note that this should be done before the startMainActivityOnBlankPage(), because Chrome
// will otherwise run this check on startup and disable Periodic Background Sync code. // will otherwise run this check on startup and disable Periodic Background Sync code.
if (!AppHooks.get().getExternalAuthUtils().canUseGooglePlayServices()) { if (!ExternalAuthUtils.getInstance().canUseGooglePlayServices()) {
NativeLibraryTestUtils.loadNativeLibraryNoBrowserProcess(); NativeLibraryTestUtils.loadNativeLibraryNoBrowserProcess();
disableGooglePlayServicesVersionCheck(); disableGooglePlayServicesVersionCheck();
} }
......
...@@ -638,6 +638,7 @@ if (is_android) { ...@@ -638,6 +638,7 @@ if (is_android) {
":test_support_ui_android", ":test_support_ui_android",
"//chrome:chrome_android_core", "//chrome:chrome_android_core",
"//chrome/android:app_hooks_java", "//chrome/android:app_hooks_java",
"//components/externalauth/android:google_delegate_public_impl_java",
"//content/test:android_test_message_pump_support", "//content/test:android_test_message_pump_support",
"//testing/android/native_test:native_test_support", "//testing/android/native_test:native_test_support",
] ]
......
...@@ -26,6 +26,7 @@ android_library("google_delegate_public_impl_java") { ...@@ -26,6 +26,7 @@ android_library("google_delegate_public_impl_java") {
android_library("java") { android_library("java") {
deps = [ deps = [
":google_delegate_java",
"$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java", "$google_play_services_package:google_play_services_basement_java",
"//base:base_java", "//base:base_java",
......
...@@ -35,6 +35,20 @@ public class ExternalAuthUtils { ...@@ -35,6 +35,20 @@ public class ExternalAuthUtils {
public static final int FLAG_SHOULD_BE_GOOGLE_SIGNED = 1 << 0; public static final int FLAG_SHOULD_BE_GOOGLE_SIGNED = 1 << 0;
public static final int FLAG_SHOULD_BE_SYSTEM = 1 << 1; public static final int FLAG_SHOULD_BE_SYSTEM = 1 << 1;
private static final String TAG = "ExternalAuthUtils"; private static final String TAG = "ExternalAuthUtils";
private static ExternalAuthUtils sInstance = new ExternalAuthUtils();
private final ExternalAuthGoogleDelegate mGoogleDelegate;
public ExternalAuthUtils() {
mGoogleDelegate = new ExternalAuthGoogleDelegateImpl();
}
/**
* @return The singleton instance of ExternalAuthUtils.
*/
public static ExternalAuthUtils getInstance() {
return sInstance;
}
/** /**
* Gets the calling package names for the current transaction. * Gets the calling package names for the current transaction.
...@@ -84,8 +98,7 @@ public class ExternalAuthUtils { ...@@ -84,8 +98,7 @@ public class ExternalAuthUtils {
* @param packageName The package name to inquire about. * @param packageName The package name to inquire about.
*/ */
public boolean isGoogleSigned(String packageName) { public boolean isGoogleSigned(String packageName) {
// This is overridden in a subclass. return mGoogleDelegate.isGoogleSigned(packageName);
return false;
} }
/** /**
...@@ -231,6 +244,14 @@ public class ExternalAuthUtils { ...@@ -231,6 +244,14 @@ public class ExternalAuthUtils {
return canUseFirstPartyGooglePlayServices(new UserRecoverableErrorHandler.Silent()); return canUseFirstPartyGooglePlayServices(new UserRecoverableErrorHandler.Silent());
} }
/**
* @return this object's {@link ExternalAuthGoogleDelegate} instance.
*/
@VisibleForTesting
public ExternalAuthGoogleDelegate getGoogleDelegateForTesting() {
return mGoogleDelegate;
}
/** /**
* Invokes whatever external code is necessary to check if Google Play Services is available * Invokes whatever external code is necessary to check if Google Play Services is available
* and returns the code produced by the attempt. Subclasses can override to force the behavior * and returns the code produced by the attempt. Subclasses can override to force the behavior
......
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