Commit 1452bff6 authored by Alice Wang's avatar Alice Wang Committed by Chromium LUCI CQ

[Signin][Android] Use SigninHelperProvider to get SigninHelper instance

This CL moves the SigninHelper init and getter part to a new
class SigninHelper. This helps to isolate the dependency on
SyncController in a relatively simple class SigninHelperProvider, so
that we can modularize SigninHelper class in short term.

In long term, we only need to expose SigninHelperProvider and
SigninHelper interface to public, the real implementation of
SigninHelper will be package private.

Bug: 1158801
Change-Id: I1648ca59778f8c5410843cd1824325bd1fea1f01
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2593115Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Commit-Queue: Alice Wang <aliceywang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#837472}
parent 667b1023
......@@ -1249,6 +1249,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/signin/SigninFragment.java",
"java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java",
"java/src/org/chromium/chrome/browser/signin/SigninHelper.java",
"java/src/org/chromium/chrome/browser/signin/SigninHelperProvider.java",
"java/src/org/chromium/chrome/browser/signin/SigninManagerImpl.java",
"java/src/org/chromium/chrome/browser/signin/SigninPromoController.java",
"java/src/org/chromium/chrome/browser/signin/SigninPromoUtil.java",
......
......@@ -35,7 +35,7 @@ import org.chromium.chrome.browser.app.flags.ChromeCachedFlags;
import org.chromium.chrome.browser.crash.LogcatExtractionRunnable;
import org.chromium.chrome.browser.download.DownloadManagerService;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.signin.SigninHelper;
import org.chromium.chrome.browser.signin.SigninHelperProvider;
import org.chromium.chrome.browser.webapps.ChromeWebApkHost;
import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
import org.chromium.components.crash.browser.ChildProcessCrashObserver;
......@@ -354,7 +354,7 @@ public class ChromeBrowserInitializer {
LibraryPrefetcher.asyncPrefetchLibrariesToMemory();
getBrowserStartupController().startBrowserProcessesSync(
LibraryProcessType.PROCESS_BROWSER, /*singleProcess=*/false);
SigninHelper.get();
SigninHelperProvider.get();
} finally {
TraceEvent.end("ChromeBrowserInitializer.startChromeBrowserProcessesSync");
}
......
......@@ -74,7 +74,7 @@ import org.chromium.chrome.browser.rlz.RevenueStats;
import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;
import org.chromium.chrome.browser.share.clipboard.ClipboardImageFileProvider;
import org.chromium.chrome.browser.sharing.shared_clipboard.SharedClipboardShareActivity;
import org.chromium.chrome.browser.signin.SigninHelper;
import org.chromium.chrome.browser.signin.SigninHelperProvider;
import org.chromium.chrome.browser.sync.SyncController;
import org.chromium.chrome.browser.uid.UniqueIdentificationGeneratorFactory;
import org.chromium.chrome.browser.uid.UuidBasedUniqueIdentificationGenerator;
......@@ -386,7 +386,7 @@ public class ProcessInitializationHandler {
deferredStartupHandler.addDeferredTask(new Runnable() {
@Override
public void run() {
SigninHelper.get().onMainActivityStart();
SigninHelperProvider.get().onMainActivityStart();
RevenueStats.getInstance();
}
});
......
......@@ -15,7 +15,7 @@ import org.chromium.chrome.browser.init.BrowserParts;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.chrome.browser.init.EmptyBrowserParts;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.SigninHelper;
import org.chromium.chrome.browser.signin.SigninHelperProvider;
import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.services.SigninPreferencesManager;
import org.chromium.components.signin.AccountTrackerService;
......@@ -52,7 +52,7 @@ public class AccountsChangedReceiver extends BroadcastReceiver {
Profile.getLastUsedRegularProfile());
// TODO(bsazonov): Check whether invalidateAccountSeedStatus is needed here.
trackerService.invalidateAccountSeedStatus(false /* don't refresh right now */);
SigninHelper.get().validateAccountSettings(true);
SigninHelperProvider.get().validateAccountSettings(true);
});
}
......
......@@ -5,7 +5,6 @@
package org.chromium.chrome.browser.signin;
import android.accounts.Account;
import android.annotation.SuppressLint;
import android.content.Context;
import androidx.annotation.VisibleForTesting;
......@@ -20,12 +19,9 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.TraceEvent;
import org.chromium.base.task.AsyncTask;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.services.SigninManager;
import org.chromium.chrome.browser.signin.services.SigninManager.SignInCallback;
import org.chromium.chrome.browser.signin.services.SigninPreferencesManager;
import org.chromium.chrome.browser.sync.SyncController;
import org.chromium.components.signin.AccountManagerFacadeProvider;
import org.chromium.components.signin.AccountTrackerService;
import org.chromium.components.signin.AccountUtils;
......@@ -46,11 +42,6 @@ import java.util.List;
public class SigninHelper implements ApplicationStatus.ApplicationStateListener {
private static final String TAG = "SigninHelper";
private static final Object LOCK = new Object();
@SuppressLint("StaticFieldLeak")
private static SigninHelper sInstance;
/**
* Retrieve more detailed information from account changed intents.
*/
......@@ -94,24 +85,15 @@ public class SigninHelper implements ApplicationStatus.ApplicationStateListener
private final SigninPreferencesManager mPrefsManager;
public static SigninHelper get() {
synchronized (LOCK) {
if (sInstance == null) {
sInstance = new SigninHelper();
}
}
return sInstance;
}
private SigninHelper() {
// Initialize sync.
SyncController.get();
Profile profile = Profile.getLastUsedRegularProfile();
mSigninManager = IdentityServicesProvider.get().getSigninManager(profile);
mAccountTrackerService = IdentityServicesProvider.get().getAccountTrackerService(profile);
mPrefsManager = SigninPreferencesManager.getInstance();
/**
* Please use SigninHelperProvider to get SigninHelper instance instead of creating it
* manually.
*/
SigninHelper(SigninManager signinManager, AccountTrackerService accountTrackerService,
SigninPreferencesManager signinPreferencesManager) {
mSigninManager = signinManager;
mAccountTrackerService = accountTrackerService;
mPrefsManager = signinPreferencesManager;
ApplicationStatus.registerApplicationStateListener(this);
}
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.signin;
import androidx.annotation.MainThread;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.services.SigninPreferencesManager;
import org.chromium.chrome.browser.sync.SyncController;
/**
* This class is used to get a singleton instance of {@link SigninHelper}.
*/
public class SigninHelperProvider {
private static SigninHelper sInstance;
/**
* @return A singleton instance of {@link SigninHelper}.
*/
@MainThread
public static SigninHelper get() {
if (sInstance == null) {
// Initialize sync.
SyncController.get();
Profile profile = Profile.getLastUsedRegularProfile();
sInstance = new SigninHelper(IdentityServicesProvider.get().getSigninManager(profile),
IdentityServicesProvider.get().getAccountTrackerService(profile),
SigninPreferencesManager.getInstance());
}
return sInstance;
}
}
......@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.SigninHelper;
import org.chromium.chrome.browser.signin.SigninHelperProvider;
import org.chromium.chrome.browser.signin.services.IdentityServicesProvider;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.browser.Features;
......@@ -124,7 +125,7 @@ public class SyncTest {
// Starts the rename process. Normally, this is triggered by the broadcast
// listener as well.
SigninHelper.get().validateAccountSettings(true);
SigninHelperProvider.get().validateAccountSettings(true);
});
CriteriaHelper.pollInstrumentationThread(() -> {
......
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