Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <cstddef> | 7 #include <cstddef> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 118 for (int i = 0; i < kRelevantTokenServicesCount; ++i) { | 118 for (int i = 0; i < kRelevantTokenServicesCount; ++i) { |
| 119 if (service == kRelevantTokenServices[i]) | 119 if (service == kRelevantTokenServices[i]) |
| 120 return true; | 120 return true; |
| 121 } | 121 } |
| 122 return false; | 122 return false; |
| 123 } | 123 } |
| 124 | 124 |
| 125 bool ShouldShowActionOnUI( | 125 bool ShouldShowActionOnUI( |
| 126 const syncer::SyncProtocolError& error) { | 126 const syncer::SyncProtocolError& error) { |
| 127 return (error.action != syncer::UNKNOWN_ACTION && | 127 return (error.action != syncer::UNKNOWN_ACTION && |
| 128 error.action != syncer::DISABLE_SYNC_ON_CLIENT); | 128 error.action != syncer::DISABLE_SYNC_ON_CLIENT && |
| 129 error.action != syncer::STOP_SYNC_FOR_DISABLED_ACCOUNT); | |
| 129 } | 130 } |
| 130 | 131 |
| 131 ProfileSyncService::ProfileSyncService(ProfileSyncComponentsFactory* factory, | 132 ProfileSyncService::ProfileSyncService(ProfileSyncComponentsFactory* factory, |
| 132 Profile* profile, | 133 Profile* profile, |
| 133 SigninManagerBase* signin_manager, | 134 SigninManagerBase* signin_manager, |
| 134 StartBehavior start_behavior) | 135 StartBehavior start_behavior) |
| 135 : last_auth_error_(AuthError::AuthErrorNone()), | 136 : last_auth_error_(AuthError::AuthErrorNone()), |
| 136 passphrase_required_reason_(syncer::REASON_PASSPHRASE_NOT_REQUIRED), | 137 passphrase_required_reason_(syncer::REASON_PASSPHRASE_NOT_REQUIRED), |
| 137 factory_(factory), | 138 factory_(factory), |
| 138 profile_(profile), | 139 profile_(profile), |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 667 doomed_backend->Shutdown(sync_disabled); | 668 doomed_backend->Shutdown(sync_disabled); |
| 668 | 669 |
| 669 doomed_backend.reset(); | 670 doomed_backend.reset(); |
| 670 } | 671 } |
| 671 base::TimeDelta shutdown_time = base::Time::Now() - shutdown_start_time; | 672 base::TimeDelta shutdown_time = base::Time::Now() - shutdown_start_time; |
| 672 UMA_HISTOGRAM_TIMES("Sync.Shutdown.BackendDestroyedTime", shutdown_time); | 673 UMA_HISTOGRAM_TIMES("Sync.Shutdown.BackendDestroyedTime", shutdown_time); |
| 673 | 674 |
| 674 weak_factory_.InvalidateWeakPtrs(); | 675 weak_factory_.InvalidateWeakPtrs(); |
| 675 | 676 |
| 676 // Clear various flags. | 677 // Clear various flags. |
| 678 start_up_time_ = base::Time(); | |
|
Andrew T Wilson (Slow)
2013/05/13 11:51:13
Why is this here?
pavely
2013/05/13 22:37:09
PSS::StartUp checks that start_up_time_ is null. I
| |
| 677 expect_sync_configuration_aborted_ = false; | 679 expect_sync_configuration_aborted_ = false; |
| 678 is_auth_in_progress_ = false; | 680 is_auth_in_progress_ = false; |
| 679 backend_initialized_ = false; | 681 backend_initialized_ = false; |
| 680 // NULL if we're called from Shutdown(). | 682 // NULL if we're called from Shutdown(). |
| 681 if (invalidator_registrar_) | 683 if (invalidator_registrar_) |
| 682 UpdateInvalidatorRegistrarState(); | 684 UpdateInvalidatorRegistrarState(); |
| 683 cached_passphrase_.clear(); | 685 cached_passphrase_.clear(); |
| 684 encryption_pending_ = false; | 686 encryption_pending_ = false; |
| 685 encrypt_everything_ = false; | 687 encrypt_everything_ = false; |
| 686 encrypted_types_ = syncer::SyncEncryptionHandler::SensitiveTypes(); | 688 encrypted_types_ = syncer::SyncEncryptionHandler::SensitiveTypes(); |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1160 } | 1162 } |
| 1161 // Trigger an unrecoverable error to stop syncing. | 1163 // Trigger an unrecoverable error to stop syncing. |
| 1162 OnInternalUnrecoverableError(FROM_HERE, | 1164 OnInternalUnrecoverableError(FROM_HERE, |
| 1163 last_actionable_error_.error_description, | 1165 last_actionable_error_.error_description, |
| 1164 true, | 1166 true, |
| 1165 ERROR_REASON_ACTIONABLE_ERROR); | 1167 ERROR_REASON_ACTIONABLE_ERROR); |
| 1166 break; | 1168 break; |
| 1167 case syncer::DISABLE_SYNC_ON_CLIENT: | 1169 case syncer::DISABLE_SYNC_ON_CLIENT: |
| 1168 OnStopSyncingPermanently(); | 1170 OnStopSyncingPermanently(); |
| 1169 break; | 1171 break; |
| 1172 case syncer::STOP_SYNC_FOR_DISABLED_ACCOUNT: | |
| 1173 // Sync disabled by domain admin. we should stop syncing until | |
| 1174 // user signs out and signs in again. | |
|
Andrew T Wilson (Slow)
2013/05/13 11:51:13
We need to handle situations where the user cannot
| |
| 1175 sync_prefs_.SetSyncDisabledByAdmin(true); | |
| 1176 DisableForUser(); | |
| 1177 break; | |
| 1170 default: | 1178 default: |
| 1171 NOTREACHED(); | 1179 NOTREACHED(); |
| 1172 } | 1180 } |
| 1173 NotifyObservers(); | 1181 NotifyObservers(); |
| 1174 } | 1182 } |
| 1175 | 1183 |
| 1176 void ProfileSyncService::OnConfigureBlocked() { | 1184 void ProfileSyncService::OnConfigureBlocked() { |
| 1177 NotifyObservers(); | 1185 NotifyObservers(); |
| 1178 } | 1186 } |
| 1179 | 1187 |
| (...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1916 break; | 1924 break; |
| 1917 } | 1925 } |
| 1918 case chrome::NOTIFICATION_TOKENS_CLEARED: { | 1926 case chrome::NOTIFICATION_TOKENS_CLEARED: { |
| 1919 // GetCredentials() will generate invalid credentials to cause the backend | 1927 // GetCredentials() will generate invalid credentials to cause the backend |
| 1920 // to generate an auth error. | 1928 // to generate an auth error. |
| 1921 if (backend_) | 1929 if (backend_) |
| 1922 backend_->UpdateCredentials(GetCredentials()); | 1930 backend_->UpdateCredentials(GetCredentials()); |
| 1923 break; | 1931 break; |
| 1924 } | 1932 } |
| 1925 case chrome::NOTIFICATION_GOOGLE_SIGNED_OUT: | 1933 case chrome::NOTIFICATION_GOOGLE_SIGNED_OUT: |
| 1926 // Disable sync if the user is signed out. | 1934 // Disable sync if the user is signed out. Clear DisabledByAdmin flag so |
| 1935 // when next time user signs in sync can try to connect to server again. | |
| 1936 sync_prefs_.SetSyncDisabledByAdmin(false); | |
| 1927 DisableForUser(); | 1937 DisableForUser(); |
| 1928 break; | 1938 break; |
| 1929 default: { | 1939 default: { |
| 1930 NOTREACHED(); | 1940 NOTREACHED(); |
| 1931 } | 1941 } |
| 1932 } | 1942 } |
| 1933 } | 1943 } |
| 1934 | 1944 |
| 1935 void ProfileSyncService::AddObserver(Observer* observer) { | 1945 void ProfileSyncService::AddObserver(Observer* observer) { |
| 1936 observers_.AddObserver(observer); | 1946 observers_.AddObserver(observer); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 1953 } | 1963 } |
| 1954 | 1964 |
| 1955 // static | 1965 // static |
| 1956 bool ProfileSyncService::IsSyncEnabled() { | 1966 bool ProfileSyncService::IsSyncEnabled() { |
| 1957 // We have switches::kEnableSync just in case we need to change back to | 1967 // We have switches::kEnableSync just in case we need to change back to |
| 1958 // sync-disabled-by-default on a platform. | 1968 // sync-disabled-by-default on a platform. |
| 1959 return !CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableSync); | 1969 return !CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableSync); |
| 1960 } | 1970 } |
| 1961 | 1971 |
| 1962 bool ProfileSyncService::IsManaged() const { | 1972 bool ProfileSyncService::IsManaged() const { |
| 1963 return sync_prefs_.IsManaged(); | 1973 return sync_prefs_.IsManaged() || sync_prefs_.IsSyncDisabledByAdmin(); |
| 1964 } | 1974 } |
| 1965 | 1975 |
| 1966 bool ProfileSyncService::ShouldPushChanges() { | 1976 bool ProfileSyncService::ShouldPushChanges() { |
| 1967 // True only after all bootstrapping has succeeded: the sync backend | 1977 // True only after all bootstrapping has succeeded: the sync backend |
| 1968 // is initialized, all enabled data types are consistent with one | 1978 // is initialized, all enabled data types are consistent with one |
| 1969 // another, and no unrecoverable error has transpired. | 1979 // another, and no unrecoverable error has transpired. |
| 1970 if (HasUnrecoverableError()) | 1980 if (HasUnrecoverableError()) |
| 1971 return false; | 1981 return false; |
| 1972 | 1982 |
| 1973 if (!data_type_manager_) | 1983 if (!data_type_manager_) |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2058 // See http://stackoverflow.com/questions/6224121/is-new-this-myclass-undefine d-behaviour-after-directly-calling-the-destru. | 2068 // See http://stackoverflow.com/questions/6224121/is-new-this-myclass-undefine d-behaviour-after-directly-calling-the-destru. |
| 2059 ProfileSyncService* old_this = this; | 2069 ProfileSyncService* old_this = this; |
| 2060 this->~ProfileSyncService(); | 2070 this->~ProfileSyncService(); |
| 2061 new(old_this) ProfileSyncService( | 2071 new(old_this) ProfileSyncService( |
| 2062 new ProfileSyncComponentsFactoryImpl(profile, | 2072 new ProfileSyncComponentsFactoryImpl(profile, |
| 2063 CommandLine::ForCurrentProcess()), | 2073 CommandLine::ForCurrentProcess()), |
| 2064 profile, | 2074 profile, |
| 2065 signin, | 2075 signin, |
| 2066 behavior); | 2076 behavior); |
| 2067 } | 2077 } |
| OLD | NEW |