Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Unified Diff: chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc

Issue 2682833003: Skip ARC initial screen when everything is set up by policy (Closed)
Patch Set: Rebase Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc
diff --git a/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc b/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc
index b52c9cac018f5bcfe45e98757899b1efb867c2e4..008a1c4aa6d5f40d9e9079cad4b37bb4b39aba51 100644
--- a/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc
+++ b/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc
@@ -65,12 +65,15 @@ bool GetHttpProxyServer(const ProxyConfigDictionary* proxy_config_dict,
return !host->empty() && *port;
}
+PrefService* GetPrefs() {
+ return ProfileManager::GetActiveUserProfile()->GetPrefs();
+}
+
// Returns whether kProxy pref proxy config is applied.
bool IsPrefProxyConfigApplied() {
net::ProxyConfig config;
- Profile* profile = ProfileManager::GetActiveUserProfile();
return PrefProxyConfigTrackerImpl::PrefPrecedes(
- PrefProxyConfigTrackerImpl::ReadPrefConfig(profile->GetPrefs(), &config));
+ PrefProxyConfigTrackerImpl::ReadPrefConfig(GetPrefs(), &config));
}
} // namespace
@@ -112,18 +115,23 @@ class ArcSettingsServiceImpl
// Stops listening for Chrome settings changes.
void StopObservingSettingsChanges();
+ // Retrieves Chrome's state for the settings that need to be synced on the
+ // initial Android boot and send it to Android.
+ void SyncInitialSettings() const;
// Retrieves Chrome's state for the settings that need to be synced on each
// Android boot and send it to Android.
void SyncRuntimeSettings() const;
- // Send settings that need to be synced only on Android first start to
- // Android.
+ // Determine whether a particular setting needs to be synced to Android.
+ // Keep these lines ordered lexicographically.
+ bool ShouldSyncBackupEnabled() const;
+ bool ShouldSyncLocationServiceEnabled() const;
+ // Send particular settings to Android.
// Keep these lines ordered lexicographically.
void SyncAccessibilityLargeMouseCursorEnabled() const;
void SyncAccessibilityVirtualKeyboardEnabled() const;
void SyncBackupEnabled() const;
void SyncFocusHighlightEnabled() const;
void SyncFontSize() const;
- void SyncInitialSettings() const;
void SyncLocale() const;
void SyncLocationServiceEnabled() const;
void SyncProxySettings() const;
@@ -204,10 +212,11 @@ void ArcSettingsServiceImpl::OnPrefChanged(const std::string& pref_name) const {
SyncSpokenFeedbackEnabled();
} else if (pref_name == prefs::kAccessibilityVirtualKeyboardEnabled) {
SyncAccessibilityVirtualKeyboardEnabled();
+ } else if (pref_name == prefs::kArcBackupRestoreEnabled) {
+ if (ShouldSyncBackupEnabled())
+ SyncBackupEnabled();
} else if (pref_name == prefs::kArcLocationServiceEnabled) {
- const PrefService* const prefs =
- ProfileManager::GetActiveUserProfile()->GetPrefs();
- if (prefs->IsManagedPreference(prefs::kArcLocationServiceEnabled))
+ if (ShouldSyncLocationServiceEnabled())
SyncLocationServiceEnabled();
} else if (pref_name == prefs::kUse24HourClock) {
SyncUse24HourClock();
@@ -249,8 +258,7 @@ void ArcSettingsServiceImpl::DefaultNetworkChanged(
}
void ArcSettingsServiceImpl::StartObservingSettingsChanges() {
- Profile* profile = ProfileManager::GetActiveUserProfile();
- registrar_.Init(profile->GetPrefs());
+ registrar_.Init(GetPrefs());
// Keep these lines ordered lexicographically.
AddPrefToObserve(prefs::kAccessibilityFocusHighlightEnabled);
@@ -293,6 +301,12 @@ void ArcSettingsServiceImpl::StopObservingSettingsChanges() {
this, FROM_HERE);
}
+void ArcSettingsServiceImpl::SyncInitialSettings() const {
+ // Keep these lines ordered lexicographically.
+ SyncBackupEnabled();
+ SyncLocationServiceEnabled();
+}
+
void ArcSettingsServiceImpl::SyncRuntimeSettings() const {
// Keep these lines ordered lexicographically.
SyncAccessibilityLargeMouseCursorEnabled();
@@ -306,14 +320,28 @@ void ArcSettingsServiceImpl::SyncRuntimeSettings() const {
SyncTimeZone();
SyncUse24HourClock();
- const PrefService* const prefs =
- ProfileManager::GetActiveUserProfile()->GetPrefs();
- if (prefs->IsManagedPreference(prefs::kArcBackupRestoreEnabled))
+ if (ShouldSyncBackupEnabled())
SyncBackupEnabled();
- if (prefs->IsManagedPreference(prefs::kArcLocationServiceEnabled))
+ if (ShouldSyncLocationServiceEnabled())
SyncLocationServiceEnabled();
}
+bool ArcSettingsServiceImpl::ShouldSyncBackupEnabled() const {
+ // Always sync the managed setting. Also sync when the pref is unset, which
+ // normally happens once after the pref changes from the managed state to
+ // unmanaged.
+ return GetPrefs()->IsManagedPreference(prefs::kArcBackupRestoreEnabled) ||
+ !GetPrefs()->HasPrefPath(prefs::kArcBackupRestoreEnabled);
+}
+
+bool ArcSettingsServiceImpl::ShouldSyncLocationServiceEnabled() const {
+ // Always sync the managed setting. Also sync when the pref is unset, which
+ // normally happens once after the pref changes from the managed state to
+ // unmanaged.
+ return GetPrefs()->IsManagedPreference(prefs::kArcLocationServiceEnabled) ||
+ !GetPrefs()->HasPrefPath(prefs::kArcLocationServiceEnabled);
+}
+
void ArcSettingsServiceImpl::SyncAccessibilityLargeMouseCursorEnabled() const {
SendBoolPrefSettingsBroadcast(
prefs::kAccessibilityLargeCursorEnabled,
@@ -330,6 +358,15 @@ void ArcSettingsServiceImpl::SyncBackupEnabled() const {
SendBoolPrefSettingsBroadcast(
prefs::kArcBackupRestoreEnabled,
"org.chromium.arc.intent_helper.SET_BACKUP_ENABLED");
+ if (GetPrefs()->IsManagedPreference(prefs::kArcBackupRestoreEnabled)) {
+ // Unset the user pref so that if the pref becomes unmanaged at some point,
+ // this change will be synced.
+ GetPrefs()->ClearPref(prefs::kArcBackupRestoreEnabled);
+ } else if (!GetPrefs()->HasPrefPath(prefs::kArcBackupRestoreEnabled)) {
+ // Set the pref value in order to prevent the subsequent syncing. The
+ // "false" value is a safe default from the legal/privacy perspective.
+ GetPrefs()->SetBoolean(prefs::kArcBackupRestoreEnabled, false);
+ }
}
void ArcSettingsServiceImpl::SyncFocusHighlightEnabled() const {
@@ -352,11 +389,6 @@ void ArcSettingsServiceImpl::SyncFontSize() const {
extras);
}
-void ArcSettingsServiceImpl::SyncInitialSettings() const {
- SyncBackupEnabled();
- SyncLocationServiceEnabled();
-}
-
void ArcSettingsServiceImpl::SyncLocale() const {
const PrefService::Preference* pref =
registrar_.prefs()->FindPreference(prefs::kApplicationLocale);
@@ -373,13 +405,21 @@ void ArcSettingsServiceImpl::SyncLocationServiceEnabled() const {
SendBoolPrefSettingsBroadcast(
prefs::kArcLocationServiceEnabled,
"org.chromium.arc.intent_helper.SET_LOCATION_SERVICE_ENABLED");
+ if (GetPrefs()->IsManagedPreference(prefs::kArcLocationServiceEnabled)) {
+ // Unset the user pref so that if the pref becomes unmanaged at some point,
+ // this change will be synced.
+ GetPrefs()->ClearPref(prefs::kArcLocationServiceEnabled);
+ } else if (!GetPrefs()->HasPrefPath(prefs::kArcLocationServiceEnabled)) {
+ // Set the pref value in order to prevent the subsequent syncing. The
+ // "false" value is a safe default from the legal/privacy perspective.
+ GetPrefs()->SetBoolean(prefs::kArcLocationServiceEnabled, false);
+ }
}
void ArcSettingsServiceImpl::SyncProxySettings() const {
std::unique_ptr<ProxyConfigDictionary> proxy_config_dict =
chromeos::ProxyConfigServiceImpl::GetActiveProxyConfigDictionary(
- ProfileManager::GetActiveUserProfile()->GetPrefs(),
- g_browser_process->local_state());
+ GetPrefs(), g_browser_process->local_state());
if (!proxy_config_dict)
return;

Powered by Google App Engine
This is Rietveld 408576698