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

Side by Side Diff: chrome/browser/sync/profile_sync_service.cc

Issue 2905003: Implement support for disabling sync through configuration management. (Closed)
Patch Set: Fix PrefsControllerTest on MAC. Created 10 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync/profile_sync_service.h" 5 #include "chrome/browser/sync/profile_sync_service.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 118
119 ProfileSyncService::~ProfileSyncService() { 119 ProfileSyncService::~ProfileSyncService() {
120 Shutdown(false); 120 Shutdown(false);
121 } 121 }
122 122
123 void ProfileSyncService::Initialize() { 123 void ProfileSyncService::Initialize() {
124 LOG(INFO) << "Starting ProfileSyncService."; 124 LOG(INFO) << "Starting ProfileSyncService.";
125 InitSettings(); 125 InitSettings();
126 RegisterPreferences(); 126 RegisterPreferences();
127 127
128 // Watch the preference that indicates sync is managed so we can take
129 // appropriate action.
130 pref_sync_managed_.Init(prefs::kSyncManaged, profile_->GetPrefs(), this);
131
132 // For now, the only thing we can do through policy is to turn sync off.
133 if (IsManaged()) {
134 DisableForUser();
135 return;
136 }
137
128 if (!profile()->GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted)) { 138 if (!profile()->GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted)) {
129 DisableForUser(); // Clean up in case of previous crash / setup abort. 139 DisableForUser(); // Clean up in case of previous crash / setup abort.
130 140
131 // Automatically start sync in Chromium OS. 141 // Automatically start sync in Chromium OS.
132 if (bootstrap_sync_authentication_) { 142 if (bootstrap_sync_authentication_) {
133 // If the LSID is empty, we're in a CrOS UI test that is not testing sync 143 // If the LSID is empty, we're in a CrOS UI test that is not testing sync
134 // behavior, so we don't want the sync service to start. 144 // behavior, so we don't want the sync service to start.
135 if (GetLsidForAuthBootstraping().empty()) { 145 if (GetLsidForAuthBootstraping().empty()) {
136 LOG(WARNING) << "Skipping CrOS sync startup, no LSID present."; 146 LOG(WARNING) << "Skipping CrOS sync startup, no LSID present.";
137 return; 147 return;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 pref_service->RegisterBooleanPref(prefs::kSyncBookmarks, true); 219 pref_service->RegisterBooleanPref(prefs::kSyncBookmarks, true);
210 pref_service->RegisterBooleanPref(prefs::kSyncPasswords, enable_by_default); 220 pref_service->RegisterBooleanPref(prefs::kSyncPasswords, enable_by_default);
211 pref_service->RegisterBooleanPref(prefs::kSyncPreferences, enable_by_default); 221 pref_service->RegisterBooleanPref(prefs::kSyncPreferences, enable_by_default);
212 pref_service->RegisterBooleanPref(prefs::kSyncAutofill, enable_by_default); 222 pref_service->RegisterBooleanPref(prefs::kSyncAutofill, enable_by_default);
213 pref_service->RegisterBooleanPref(prefs::kSyncThemes, enable_by_default); 223 pref_service->RegisterBooleanPref(prefs::kSyncThemes, enable_by_default);
214 pref_service->RegisterBooleanPref(prefs::kSyncTypedUrls, enable_by_default); 224 pref_service->RegisterBooleanPref(prefs::kSyncTypedUrls, enable_by_default);
215 pref_service->RegisterBooleanPref(prefs::kSyncExtensions, enable_by_default); 225 pref_service->RegisterBooleanPref(prefs::kSyncExtensions, enable_by_default);
216 226
217 pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced, 227 pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced,
218 enable_by_default); 228 enable_by_default);
229
230 pref_service->RegisterBooleanPref(prefs::kSyncManaged, false);
219 } 231 }
220 232
221 void ProfileSyncService::ClearPreferences() { 233 void ProfileSyncService::ClearPreferences() {
222 PrefService* pref_service = profile_->GetPrefs(); 234 PrefService* pref_service = profile_->GetPrefs();
223 pref_service->ClearPref(prefs::kSyncLastSyncedTime); 235 pref_service->ClearPref(prefs::kSyncLastSyncedTime);
224 pref_service->ClearPref(prefs::kSyncHasSetupCompleted); 236 pref_service->ClearPref(prefs::kSyncHasSetupCompleted);
225 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. 237 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks.
226 // Is that really what we want? 238 // Is that really what we want?
227 pref_service->ScheduleSavePersistentPrefs(); 239 pref_service->ScheduleSavePersistentPrefs();
228 } 240 }
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 case NotificationType::SYNC_PASSPHRASE_ACCEPTED: { 757 case NotificationType::SYNC_PASSPHRASE_ACCEPTED: {
746 // Make sure the data types that depend on the passphrase are started at 758 // Make sure the data types that depend on the passphrase are started at
747 // this time. 759 // this time.
748 syncable::ModelTypeSet types; 760 syncable::ModelTypeSet types;
749 GetPreferredDataTypes(&types); 761 GetPreferredDataTypes(&types);
750 data_type_manager_->Configure(types); 762 data_type_manager_->Configure(types);
751 763
752 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged()); 764 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
753 break; 765 break;
754 } 766 }
767 case NotificationType::PREF_CHANGED: {
768 std::wstring* pref_name = Details<std::wstring>(details).ptr();
769 if (*pref_name == prefs::kSyncManaged) {
770 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
771 if (*pref_sync_managed_)
772 DisableForUser();
773 else if (HasSyncSetupCompleted())
774 StartUp();
775 }
776 break;
777 }
755 default: { 778 default: {
756 NOTREACHED(); 779 NOTREACHED();
757 } 780 }
758 } 781 }
759 } 782 }
760 783
761 void ProfileSyncService::AddObserver(Observer* observer) { 784 void ProfileSyncService::AddObserver(Observer* observer) {
762 observers_.AddObserver(observer); 785 observers_.AddObserver(observer);
763 } 786 }
764 787
765 void ProfileSyncService::RemoveObserver(Observer* observer) { 788 void ProfileSyncService::RemoveObserver(Observer* observer) {
766 observers_.RemoveObserver(observer); 789 observers_.RemoveObserver(observer);
767 } 790 }
768 791
769 void ProfileSyncService::SyncEvent(SyncEventCodes code) { 792 void ProfileSyncService::SyncEvent(SyncEventCodes code) {
770 UMA_HISTOGRAM_ENUMERATION("Sync.EventCodes", code, MAX_SYNC_EVENT_CODE); 793 UMA_HISTOGRAM_ENUMERATION("Sync.EventCodes", code, MAX_SYNC_EVENT_CODE);
771 } 794 }
772 795
796 // static
773 bool ProfileSyncService::IsSyncEnabled() { 797 bool ProfileSyncService::IsSyncEnabled() {
774 // We have switches::kEnableSync just in case we need to change back to 798 // We have switches::kEnableSync just in case we need to change back to
775 // sync-disabled-by-default on a platform. 799 // sync-disabled-by-default on a platform.
776 return !CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableSync); 800 return !CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableSync);
777 } 801 }
778 802
803 bool ProfileSyncService::IsManaged() {
804 // Some tests use ProfileSyncServiceMock which doesn't have a profile.
805 return profile_ && profile_->GetPrefs()->GetBoolean(prefs::kSyncManaged);
806 }
807
779 bool ProfileSyncService::ShouldPushChanges() { 808 bool ProfileSyncService::ShouldPushChanges() {
780 // True only after all bootstrapping has succeeded: the sync backend 809 // True only after all bootstrapping has succeeded: the sync backend
781 // is initialized, all enabled data types are consistent with one 810 // is initialized, all enabled data types are consistent with one
782 // another, and no unrecoverable error has transpired. 811 // another, and no unrecoverable error has transpired.
783 if (unrecoverable_error_detected_) 812 if (unrecoverable_error_detected_)
784 return false; 813 return false;
785 814
786 if (!data_type_manager_.get()) 815 if (!data_type_manager_.get())
787 return false; 816 return false;
788 817
789 return data_type_manager_->state() == DataTypeManager::CONFIGURED; 818 return data_type_manager_->state() == DataTypeManager::CONFIGURED;
790 } 819 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/profile_sync_service_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698