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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 #include "sync/internal_api/public/sync_encryption_handler.h" | 71 #include "sync/internal_api/public/sync_encryption_handler.h" |
72 #include "sync/internal_api/public/util/experiments.h" | 72 #include "sync/internal_api/public/util/experiments.h" |
73 #include "sync/internal_api/public/util/sync_string_conversions.h" | 73 #include "sync/internal_api/public/util/sync_string_conversions.h" |
74 #include "sync/js/js_arg_list.h" | 74 #include "sync/js/js_arg_list.h" |
75 #include "sync/js/js_event_details.h" | 75 #include "sync/js/js_event_details.h" |
76 #include "sync/util/cryptographer.h" | 76 #include "sync/util/cryptographer.h" |
77 #include "ui/base/l10n/l10n_util.h" | 77 #include "ui/base/l10n/l10n_util.h" |
78 #include "ui/base/l10n/time_format.h" | 78 #include "ui/base/l10n/time_format.h" |
79 | 79 |
80 #if defined(ENABLE_MANAGED_USERS) | 80 #if defined(ENABLE_MANAGED_USERS) |
81 #include "chrome/browser/managed_mode/managed_user_service.h" | 81 #include "chrome/browser/managed_mode/managed_user_constants.h" |
82 #endif | 82 #endif |
83 | 83 |
84 #if defined(OS_ANDROID) | 84 #if defined(OS_ANDROID) |
85 #include "sync/internal_api/public/read_transaction.h" | 85 #include "sync/internal_api/public/read_transaction.h" |
86 #endif | 86 #endif |
87 | 87 |
88 using browser_sync::ChangeProcessor; | 88 using browser_sync::ChangeProcessor; |
89 using browser_sync::DataTypeController; | 89 using browser_sync::DataTypeController; |
90 using browser_sync::DataTypeManager; | 90 using browser_sync::DataTypeManager; |
91 using browser_sync::FailedDataTypesHandler; | 91 using browser_sync::FailedDataTypesHandler; |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 if (IsManaged() || sync_prefs_.IsStartSuppressed()) | 202 if (IsManaged() || sync_prefs_.IsStartSuppressed()) |
203 return false; | 203 return false; |
204 | 204 |
205 // Sync is logged in if there is a non-empty effective username. | 205 // Sync is logged in if there is a non-empty effective username. |
206 return !GetEffectiveUsername().empty(); | 206 return !GetEffectiveUsername().empty(); |
207 } | 207 } |
208 | 208 |
209 bool ProfileSyncService::IsOAuthRefreshTokenAvailable() { | 209 bool ProfileSyncService::IsOAuthRefreshTokenAvailable() { |
210 if (!oauth2_token_service_) | 210 if (!oauth2_token_service_) |
211 return false; | 211 return false; |
212 return oauth2_token_service_->RefreshTokenIsAvailable( | 212 |
213 oauth2_token_service_->GetPrimaryAccountId()); | 213 return oauth2_token_service_->RefreshTokenIsAvailable(GetAccountIdToUse()); |
214 } | 214 } |
215 | 215 |
216 void ProfileSyncService::Initialize() { | 216 void ProfileSyncService::Initialize() { |
217 if (profile_) | 217 if (profile_) |
218 SigninGlobalError::GetForProfile(profile_)->AddProvider(this); | 218 SigninGlobalError::GetForProfile(profile_)->AddProvider(this); |
219 | 219 |
220 InitSettings(); | 220 InitSettings(); |
221 | 221 |
222 // We clear this here (vs Shutdown) because we want to remember that an error | 222 // We clear this here (vs Shutdown) because we want to remember that an error |
223 // happened on shutdown so we can display details (message, location) about it | 223 // happened on shutdown so we can display details (message, location) about it |
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
691 } | 691 } |
692 default: { | 692 default: { |
693 // Show error to user. | 693 // Show error to user. |
694 UpdateAuthErrorState(error); | 694 UpdateAuthErrorState(error); |
695 } | 695 } |
696 } | 696 } |
697 } | 697 } |
698 | 698 |
699 void ProfileSyncService::OnRefreshTokenAvailable( | 699 void ProfileSyncService::OnRefreshTokenAvailable( |
700 const std::string& account_id) { | 700 const std::string& account_id) { |
701 if (oauth2_token_service_->GetPrimaryAccountId() == account_id) | 701 if (account_id == GetAccountIdToUse()) |
702 OnRefreshTokensLoaded(); | 702 OnRefreshTokensLoaded(); |
703 } | 703 } |
704 | 704 |
705 void ProfileSyncService::OnRefreshTokenRevoked( | 705 void ProfileSyncService::OnRefreshTokenRevoked( |
706 const std::string& account_id) { | 706 const std::string& account_id) { |
707 if (!IsOAuthRefreshTokenAvailable()) { | 707 if (!IsOAuthRefreshTokenAvailable()) { |
708 access_token_.clear(); | 708 access_token_.clear(); |
709 // The additional check around IsOAuthRefreshTokenAvailable() above | 709 // The additional check around IsOAuthRefreshTokenAvailable() above |
710 // prevents us sounding the alarm if we actually have a valid token but | 710 // prevents us sounding the alarm if we actually have a valid token but |
711 // a refresh attempt by TokenService failed for any variety of reasons | 711 // a refresh attempt by TokenService failed for any variety of reasons |
(...skipping 1168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1880 request_access_token_retry_timer_.Stop(); | 1880 request_access_token_retry_timer_.Stop(); |
1881 OAuth2TokenService::ScopeSet oauth2_scopes; | 1881 OAuth2TokenService::ScopeSet oauth2_scopes; |
1882 if (profile_->IsManaged()) { | 1882 if (profile_->IsManaged()) { |
1883 oauth2_scopes.insert(GaiaConstants::kChromeSyncManagedOAuth2Scope); | 1883 oauth2_scopes.insert(GaiaConstants::kChromeSyncManagedOAuth2Scope); |
1884 } else { | 1884 } else { |
1885 oauth2_scopes.insert(GaiaConstants::kChromeSyncOAuth2Scope); | 1885 oauth2_scopes.insert(GaiaConstants::kChromeSyncOAuth2Scope); |
1886 } | 1886 } |
1887 | 1887 |
1888 // Invalidate previous token, otherwise token service will return the same | 1888 // Invalidate previous token, otherwise token service will return the same |
1889 // token again. | 1889 // token again. |
1890 const std::string& account_id = oauth2_token_service_->GetPrimaryAccountId(); | 1890 const std::string& account_id = GetAccountIdToUse(); |
1891 if (!access_token_.empty()) { | 1891 if (!access_token_.empty()) { |
1892 oauth2_token_service_->InvalidateToken( | 1892 oauth2_token_service_->InvalidateToken( |
1893 account_id, oauth2_scopes, access_token_); | 1893 account_id, oauth2_scopes, access_token_); |
1894 } | 1894 } |
1895 | 1895 |
1896 access_token_.clear(); | 1896 access_token_.clear(); |
1897 access_token_request_ = | 1897 access_token_request_ = |
1898 oauth2_token_service_->StartRequest(account_id, oauth2_scopes, this); | 1898 oauth2_token_service_->StartRequest(account_id, oauth2_scopes, this); |
1899 } | 1899 } |
1900 | 1900 |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2122 UnrecoverableErrorReason reason) { | 2122 UnrecoverableErrorReason reason) { |
2123 DCHECK(!HasUnrecoverableError()); | 2123 DCHECK(!HasUnrecoverableError()); |
2124 unrecoverable_error_reason_ = reason; | 2124 unrecoverable_error_reason_ = reason; |
2125 OnUnrecoverableErrorImpl(from_here, message, delete_sync_database); | 2125 OnUnrecoverableErrorImpl(from_here, message, delete_sync_database); |
2126 } | 2126 } |
2127 | 2127 |
2128 std::string ProfileSyncService::GetEffectiveUsername() { | 2128 std::string ProfileSyncService::GetEffectiveUsername() { |
2129 if (profile_->IsManaged()) { | 2129 if (profile_->IsManaged()) { |
2130 #if defined(ENABLE_MANAGED_USERS) | 2130 #if defined(ENABLE_MANAGED_USERS) |
2131 DCHECK_EQ(std::string(), signin_->GetAuthenticatedUsername()); | 2131 DCHECK_EQ(std::string(), signin_->GetAuthenticatedUsername()); |
2132 return ManagedUserService::GetManagedUserPseudoEmail(); | 2132 return managed_users::kManagedUserPseudoEmail; |
2133 #else | 2133 #else |
2134 NOTREACHED(); | 2134 NOTREACHED(); |
2135 #endif | 2135 #endif |
2136 } | 2136 } |
2137 | 2137 |
2138 return signin_->GetAuthenticatedUsername(); | 2138 return signin_->GetAuthenticatedUsername(); |
2139 } | 2139 } |
2140 | 2140 |
| 2141 std::string ProfileSyncService::GetAccountIdToUse() { |
| 2142 if (profile_->IsManaged()) { |
| 2143 #if defined(ENABLE_MANAGED_USERS) |
| 2144 return managed_users::kManagedUserPseudoEmail; |
| 2145 #else |
| 2146 NOTREACHED(); |
| 2147 #endif |
| 2148 } |
| 2149 |
| 2150 // TODO(fgorski): Use GetPrimaryAccountId() when it's available. |
| 2151 return signin_->GetAuthenticatedUsername(); |
| 2152 } |
| 2153 |
2141 WeakHandle<syncer::JsEventHandler> ProfileSyncService::GetJsEventHandler() { | 2154 WeakHandle<syncer::JsEventHandler> ProfileSyncService::GetJsEventHandler() { |
2142 return MakeWeakHandle(sync_js_controller_.AsWeakPtr()); | 2155 return MakeWeakHandle(sync_js_controller_.AsWeakPtr()); |
2143 } | 2156 } |
OLD | NEW |