OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/managed_mode/managed_user_registration_service.h" | 5 #include "chrome/browser/managed_mode/managed_user_registration_service.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
10 #include "base/rand_util.h" | 10 #include "base/rand_util.h" |
11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
| 12 #include "chrome/browser/managed_mode/managed_user_refresh_token_fetcher.h" |
12 #include "chrome/browser/managed_mode/managed_user_service.h" | 13 #include "chrome/browser/managed_mode/managed_user_service.h" |
13 #include "chrome/browser/managed_mode/managed_user_service_factory.h" | 14 #include "chrome/browser/managed_mode/managed_user_service_factory.h" |
14 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 15 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| 16 #include "chrome/browser/sync/glue/device_info.h" |
15 #include "chrome/common/pref_names.h" | 17 #include "chrome/common/pref_names.h" |
16 #include "components/user_prefs/pref_registry_syncable.h" | 18 #include "components/user_prefs/pref_registry_syncable.h" |
| 19 #include "google_apis/gaia/gaia_urls.h" |
17 #include "google_apis/gaia/google_service_auth_error.h" | 20 #include "google_apis/gaia/google_service_auth_error.h" |
18 #include "sync/api/sync_change.h" | 21 #include "sync/api/sync_change.h" |
19 #include "sync/api/sync_error_factory.h" | 22 #include "sync/api/sync_error_factory.h" |
20 #include "sync/protocol/sync.pb.h" | 23 #include "sync/protocol/sync.pb.h" |
21 | 24 |
22 using base::DictionaryValue; | 25 using base::DictionaryValue; |
23 using syncer::MANAGED_USERS; | 26 using syncer::MANAGED_USERS; |
24 using syncer::ModelType; | 27 using syncer::ModelType; |
25 using syncer::SyncChange; | 28 using syncer::SyncChange; |
26 using syncer::SyncChangeList; | 29 using syncer::SyncChangeList; |
(...skipping 18 matching lines...) Expand all Loading... |
45 specifics.mutable_managed_user()->set_id(id); | 48 specifics.mutable_managed_user()->set_id(id); |
46 specifics.mutable_managed_user()->set_name(name); | 49 specifics.mutable_managed_user()->set_name(name); |
47 if (acknowledged) | 50 if (acknowledged) |
48 specifics.mutable_managed_user()->set_acknowledged(true); | 51 specifics.mutable_managed_user()->set_acknowledged(true); |
49 return SyncData::CreateLocalData(id, name, specifics); | 52 return SyncData::CreateLocalData(id, name, specifics); |
50 } | 53 } |
51 | 54 |
52 } // namespace | 55 } // namespace |
53 | 56 |
54 ManagedUserRegistrationService::ManagedUserRegistrationService( | 57 ManagedUserRegistrationService::ManagedUserRegistrationService( |
55 PrefService* prefs) | 58 PrefService* prefs, |
| 59 scoped_ptr<ManagedUserRefreshTokenFetcher> token_fetcher) |
56 : weak_ptr_factory_(this), | 60 : weak_ptr_factory_(this), |
57 prefs_(prefs), | 61 prefs_(prefs), |
| 62 token_fetcher_(token_fetcher.Pass()), |
58 pending_managed_user_acknowledged_(false) { | 63 pending_managed_user_acknowledged_(false) { |
59 pref_change_registrar_.Init(prefs); | 64 pref_change_registrar_.Init(prefs); |
60 pref_change_registrar_.Add( | 65 pref_change_registrar_.Add( |
61 prefs::kGoogleServicesLastUsername, | 66 prefs::kGoogleServicesLastUsername, |
62 base::Bind(&ManagedUserRegistrationService::OnLastSignedInUsernameChange, | 67 base::Bind(&ManagedUserRegistrationService::OnLastSignedInUsernameChange, |
63 base::Unretained(this))); | 68 base::Unretained(this))); |
64 } | 69 } |
65 | 70 |
66 ManagedUserRegistrationService::~ManagedUserRegistrationService() { | 71 ManagedUserRegistrationService::~ManagedUserRegistrationService() { |
67 DCHECK(pending_managed_user_id_.empty()); | 72 DCHECK(pending_managed_user_id_.empty()); |
(...skipping 28 matching lines...) Expand all Loading... |
96 FROM_HERE, | 101 FROM_HERE, |
97 SyncChange::ACTION_ADD, | 102 SyncChange::ACTION_ADD, |
98 CreateLocalSyncData( | 103 CreateLocalSyncData( |
99 pending_managed_user_id_, base::UTF16ToUTF8(name), false))); | 104 pending_managed_user_id_, base::UTF16ToUTF8(name), false))); |
100 SyncError error = | 105 SyncError error = |
101 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); | 106 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); |
102 DCHECK(!error.IsSet()) << error.ToString(); | 107 DCHECK(!error.IsSet()) << error.ToString(); |
103 } | 108 } |
104 | 109 |
105 callback_ = callback; | 110 callback_ = callback; |
106 OnReceivedToken("abcdef"); // TODO(bauerb): This is a stub implementation. | 111 browser_sync::DeviceInfo::CreateLocalDeviceInfo( |
| 112 base::Bind(&ManagedUserRegistrationService::FetchToken, |
| 113 weak_ptr_factory_.GetWeakPtr(), name)); |
107 } | 114 } |
108 | 115 |
109 ProfileManager::CreateCallback | 116 ProfileManager::CreateCallback |
110 ManagedUserRegistrationService::GetRegistrationAndInitCallback() { | 117 ManagedUserRegistrationService::GetRegistrationAndInitCallback() { |
111 return base::Bind(&ManagedUserRegistrationService::OnProfileCreated, | 118 return base::Bind(&ManagedUserRegistrationService::OnProfileCreated, |
112 weak_ptr_factory_.GetWeakPtr()); | 119 weak_ptr_factory_.GetWeakPtr()); |
113 } | 120 } |
114 | 121 |
115 void ManagedUserRegistrationService::Shutdown() { | 122 void ManagedUserRegistrationService::Shutdown() { |
116 CancelPendingRegistration(); | 123 CancelPendingRegistration(); |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 } | 268 } |
262 | 269 |
263 void ManagedUserRegistrationService::OnManagedUserAcknowledged( | 270 void ManagedUserRegistrationService::OnManagedUserAcknowledged( |
264 const std::string& managed_user_id) { | 271 const std::string& managed_user_id) { |
265 DCHECK_EQ(pending_managed_user_id_, managed_user_id); | 272 DCHECK_EQ(pending_managed_user_id_, managed_user_id); |
266 DCHECK(!pending_managed_user_acknowledged_); | 273 DCHECK(!pending_managed_user_acknowledged_); |
267 pending_managed_user_acknowledged_ = true; | 274 pending_managed_user_acknowledged_ = true; |
268 DispatchCallbackIfReady(); | 275 DispatchCallbackIfReady(); |
269 } | 276 } |
270 | 277 |
271 void ManagedUserRegistrationService::OnReceivedToken(const std::string& token) { | 278 void ManagedUserRegistrationService::FetchToken( |
272 DCHECK(pending_managed_user_token_.empty()); | 279 const string16& name, |
| 280 const browser_sync::DeviceInfo& device_info) { |
| 281 token_fetcher_->Start( |
| 282 pending_managed_user_id_, name, device_info.client_name(), |
| 283 base::Bind(&ManagedUserRegistrationService::OnReceivedToken, |
| 284 weak_ptr_factory_.GetWeakPtr())); |
| 285 } |
| 286 |
| 287 void ManagedUserRegistrationService::OnReceivedToken( |
| 288 const GoogleServiceAuthError& error, |
| 289 const std::string& token) { |
| 290 if (error.state() != GoogleServiceAuthError::NONE) { |
| 291 DispatchCallback(error); |
| 292 return; |
| 293 } |
| 294 |
| 295 DCHECK(!token.empty()); |
273 pending_managed_user_token_ = token; | 296 pending_managed_user_token_ = token; |
274 DispatchCallbackIfReady(); | 297 DispatchCallbackIfReady(); |
275 } | 298 } |
276 | 299 |
277 void ManagedUserRegistrationService::DispatchCallbackIfReady() { | 300 void ManagedUserRegistrationService::DispatchCallbackIfReady() { |
278 if (!pending_managed_user_acknowledged_ || | 301 if (!pending_managed_user_acknowledged_ || |
279 pending_managed_user_token_.empty()) { | 302 pending_managed_user_token_.empty()) { |
280 return; | 303 return; |
281 } | 304 } |
282 | 305 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 // disk, and once after all the profile services (including the | 339 // disk, and once after all the profile services (including the |
317 // ManagedUserService) have been initialized. Ignore the first one. | 340 // ManagedUserService) have been initialized. Ignore the first one. |
318 if (status != Profile::CREATE_STATUS_INITIALIZED) | 341 if (status != Profile::CREATE_STATUS_INITIALIZED) |
319 return; | 342 return; |
320 | 343 |
321 ManagedUserService* managed_user_service = | 344 ManagedUserService* managed_user_service = |
322 ManagedUserServiceFactory::GetForProfile(profile); | 345 ManagedUserServiceFactory::GetForProfile(profile); |
323 DCHECK(managed_user_service->ProfileIsManaged()); | 346 DCHECK(managed_user_service->ProfileIsManaged()); |
324 managed_user_service->RegisterAndInitSync(this); | 347 managed_user_service->RegisterAndInitSync(this); |
325 } | 348 } |
OLD | NEW |