OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/sync_setup_flow.h" | 5 #include "chrome/browser/sync/sync_setup_flow.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 args->SetBoolean("syncApps", | 169 args->SetBoolean("syncApps", |
170 service->profile()->GetPrefs()->GetBoolean(prefs::kSyncApps)); | 170 service->profile()->GetPrefs()->GetBoolean(prefs::kSyncApps)); |
171 args->SetBoolean("encryptionEnabled", | 171 args->SetBoolean("encryptionEnabled", |
172 !CommandLine::ForCurrentProcess()->HasSwitch( | 172 !CommandLine::ForCurrentProcess()->HasSwitch( |
173 switches::kDisableSyncEncryption)); | 173 switches::kDisableSyncEncryption)); |
174 | 174 |
175 syncable::ModelTypeSet encrypted_types; | 175 syncable::ModelTypeSet encrypted_types; |
176 service->GetEncryptedDataTypes(&encrypted_types); | 176 service->GetEncryptedDataTypes(&encrypted_types); |
177 bool encrypt_all = | 177 bool encrypt_all = |
178 encrypted_types.upper_bound(syncable::PASSWORDS) != encrypted_types.end(); | 178 encrypted_types.upper_bound(syncable::PASSWORDS) != encrypted_types.end(); |
| 179 if (service->HasPendingEncryptedTypes()) |
| 180 encrypt_all = true; |
179 args->SetBoolean("encryptAllData", encrypt_all); | 181 args->SetBoolean("encryptAllData", encrypt_all); |
180 | 182 |
181 // Load the parameters for the encryption tab. | 183 // Load the parameters for the encryption tab. |
182 args->SetBoolean("usePassphrase", service->IsUsingSecondaryPassphrase()); | 184 args->SetBoolean("usePassphrase", service->IsUsingSecondaryPassphrase()); |
183 } | 185 } |
184 | 186 |
185 bool SyncSetupFlow::AttachSyncSetupHandler(SyncSetupFlowHandler* handler) { | 187 bool SyncSetupFlow::AttachSyncSetupHandler(SyncSetupFlowHandler* handler) { |
186 if (flow_handler_) | 188 if (flow_handler_) |
187 return false; | 189 return false; |
188 | 190 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 const std::string& password, | 262 const std::string& password, |
261 const std::string& captcha, | 263 const std::string& captcha, |
262 const std::string& access_code) { | 264 const std::string& access_code) { |
263 service_->OnUserSubmittedAuth(username, password, captcha, access_code); | 265 service_->OnUserSubmittedAuth(username, password, captcha, access_code); |
264 } | 266 } |
265 | 267 |
266 void SyncSetupFlow::OnUserConfigured(const SyncConfiguration& configuration) { | 268 void SyncSetupFlow::OnUserConfigured(const SyncConfiguration& configuration) { |
267 // Go to the "loading..." screen. | 269 // Go to the "loading..." screen. |
268 Advance(SyncSetupWizard::SETTING_UP); | 270 Advance(SyncSetupWizard::SETTING_UP); |
269 | 271 |
| 272 // Note: encryption will not occur until OnUserChoseDatatypes is called. |
| 273 syncable::ModelTypeSet encrypted_types; |
270 if (configuration.encrypt_all) { | 274 if (configuration.encrypt_all) { |
271 syncable::ModelTypeSet data_types; | 275 // Encrypt all registered types. |
272 service_->GetRegisteredDataTypes(&data_types); | 276 service_->GetRegisteredDataTypes(&encrypted_types); |
273 service_->EncryptDataTypes(data_types); | 277 } // Else we clear the pending types for encryption. |
274 } | 278 service_->set_pending_types_for_encryption(encrypted_types); |
275 | 279 |
276 // If we are activating the passphrase, we need to have one supplied. | 280 // It's possible the user has to provide a secondary passphrase even when |
277 DCHECK(service_->IsUsingSecondaryPassphrase() || | 281 // they have not set one previously. This occurs when the user has changed |
278 !configuration.use_secondary_passphrase || | 282 // their gaia password and then sign in to a new machine for the first time. |
279 configuration.secondary_passphrase.length() > 0); | 283 // The new machine will download data encrypted with their old gaia password, |
280 | 284 // which their current gaia password will not be able to decrypt, triggering |
| 285 // a prompt for a passphrase. At this point, the user must enter their old |
| 286 // password, which we store as a new secondary passphrase. |
| 287 // TODO(zea): eventually use the above gaia_passphrase instead of the |
| 288 // secondary passphrase in this case. |
281 if (configuration.use_secondary_passphrase) { | 289 if (configuration.use_secondary_passphrase) { |
282 if (!service_->IsUsingSecondaryPassphrase()) { | 290 if (!service_->IsUsingSecondaryPassphrase()) { |
283 service_->SetPassphrase(configuration.secondary_passphrase, true, true); | 291 service_->SetPassphrase(configuration.secondary_passphrase, true, true); |
284 tried_creating_explicit_passphrase_ = true; | 292 tried_creating_explicit_passphrase_ = true; |
285 } else { | 293 } else { |
286 service_->SetPassphrase(configuration.secondary_passphrase, true, false); | 294 service_->SetPassphrase(configuration.secondary_passphrase, true, false); |
287 tried_setting_explicit_passphrase_ = true; | 295 tried_setting_explicit_passphrase_ = true; |
288 } | 296 } |
289 } | 297 } |
290 | 298 |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 break; | 431 break; |
424 } | 432 } |
425 case SyncSetupWizard::DONE: | 433 case SyncSetupWizard::DONE: |
426 flow_handler_->ShowSetupDone( | 434 flow_handler_->ShowSetupDone( |
427 UTF16ToWide(service_->GetAuthenticatedUsername())); | 435 UTF16ToWide(service_->GetAuthenticatedUsername())); |
428 break; | 436 break; |
429 default: | 437 default: |
430 NOTREACHED() << "Invalid advance state: " << state; | 438 NOTREACHED() << "Invalid advance state: " << state; |
431 } | 439 } |
432 } | 440 } |
OLD | NEW |