ash: Get PrefService via SessionControllerClient

- Get sign-in screen and user PrefService from SessionControllerClient
  instead of mojom::PrefConnector.
- Add a TestPrefServiceProvider to create and own various PrefServices
  to outlive TestSessionControllerClient;
- Move Shell:: RegisterSignin/UserProfilePrefs to ash_prefs.h in
  public/cpp and call them from browser prefs to register as part
  of the browser;
- Remove RegisterForeignPref for user prefs in ash/* code since they are
  now part of the browser user prefs;

Bug: 958212
Change-Id: Ic4d9f951e5fd2f255c5274906115fc4aeb2dcc41
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1603325
Commit-Queue: Xiyuan Xia <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Cr-Commit-Position: refs/heads/master@{#659064}
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 242dfac8..56fb0cc7d 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -228,6 +228,7 @@
 #endif  // defined(OS_ANDROID)
 
 #if defined(OS_CHROMEOS)
+#include "ash/public/cpp/ash_prefs.h"
 #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h"
 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
 #include "chrome/browser/chromeos/arc/arc_session_manager.h"
@@ -918,6 +919,9 @@
 #if defined(OS_ANDROID)
   ::android::RegisterUserProfilePrefs(registry);
 #endif
+#if defined(OS_CHROMEOS)
+  ash::RegisterUserProfilePrefs(registry);
+#endif
 }
 
 void RegisterScreenshotPrefs(PrefRegistrySimple* registry) {
@@ -925,8 +929,9 @@
 }
 
 #if defined(OS_CHROMEOS)
-void RegisterLoginProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
+void RegisterSigninProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
   RegisterProfilePrefs(registry, g_browser_process->GetApplicationLocale());
+  ash::RegisterSigninProfilePrefs(registry);
 }
 
 #if BUILDFLAG(ENABLE_CROS_ASSISTANT)