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

Side by Side Diff: chrome/browser/sync/engine/syncapi.cc

Issue 6902101: Refactor sync passphrase setup flow and fix passphrase tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove OnPassphraseFailed; Plumb enum all the way through; Shave yak. Created 9 years, 8 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 | Annotate | Revision Log
OLDNEW
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/engine/syncapi.h" 5 #include "chrome/browser/sync/engine/syncapi.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <bitset> 8 #include <bitset>
9 #include <iomanip> 9 #include <iomanip>
10 #include <list> 10 #include <list>
(...skipping 1773 matching lines...) Expand 10 before | Expand all | Expand 10 after
1784 return; 1784 return;
1785 } 1785 }
1786 1786
1787 nigori.CopyFrom(node.GetNigoriSpecifics()); 1787 nigori.CopyFrom(node.GetNigoriSpecifics());
1788 if (!nigori.encrypted().blob().empty()) { 1788 if (!nigori.encrypted().blob().empty()) {
1789 if (cryptographer->CanDecrypt(nigori.encrypted())) { 1789 if (cryptographer->CanDecrypt(nigori.encrypted())) {
1790 cryptographer->SetKeys(nigori.encrypted()); 1790 cryptographer->SetKeys(nigori.encrypted());
1791 } else { 1791 } else {
1792 cryptographer->SetPendingKeys(nigori.encrypted()); 1792 cryptographer->SetPendingKeys(nigori.encrypted());
1793 FOR_EACH_OBSERVER(SyncManager::Observer, observers_, 1793 FOR_EACH_OBSERVER(SyncManager::Observer, observers_,
1794 OnPassphraseRequired(true)); 1794 OnPassphraseRequired(sync_api::DECRYPTION));
1795 } 1795 }
1796 } 1796 }
1797 } 1797 }
1798 1798
1799 // Refresh list of encrypted datatypes. 1799 // Refresh list of encrypted datatypes.
1800 syncable::ModelTypeSet encrypted_types = 1800 syncable::ModelTypeSet encrypted_types =
1801 syncable::GetEncryptedDataTypesFromNigori(nigori); 1801 syncable::GetEncryptedDataTypesFromNigori(nigori);
1802 1802
1803 // Ensure any datatypes that need encryption are encrypted. 1803 // Ensure any datatypes that need encryption are encrypted.
1804 EncryptDataTypes(encrypted_types); 1804 EncryptDataTypes(encrypted_types);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1946 const std::string& passphrase, bool is_explicit) { 1946 const std::string& passphrase, bool is_explicit) {
1947 // All accesses to the cryptographer are protected by a transaction. 1947 // All accesses to the cryptographer are protected by a transaction.
1948 WriteTransaction trans(GetUserShare()); 1948 WriteTransaction trans(GetUserShare());
1949 Cryptographer* cryptographer = trans.GetCryptographer(); 1949 Cryptographer* cryptographer = trans.GetCryptographer();
1950 KeyParams params = {"localhost", "dummy", passphrase}; 1950 KeyParams params = {"localhost", "dummy", passphrase};
1951 1951
1952 if (cryptographer->has_pending_keys()) { 1952 if (cryptographer->has_pending_keys()) {
1953 if (!cryptographer->DecryptPendingKeys(params)) { 1953 if (!cryptographer->DecryptPendingKeys(params)) {
1954 VLOG(1) << "Passphrase failed to decrypt pending keys."; 1954 VLOG(1) << "Passphrase failed to decrypt pending keys.";
1955 FOR_EACH_OBSERVER(SyncManager::Observer, observers_, 1955 FOR_EACH_OBSERVER(SyncManager::Observer, observers_,
1956 OnPassphraseFailed()); 1956 OnPassphraseRequired(sync_api::DECRYPTION_FAILED));
1957 return; 1957 return;
1958 } 1958 }
1959 1959
1960 // TODO(tim): If this is the first time the user has entered a passphrase 1960 // TODO(tim): If this is the first time the user has entered a passphrase
1961 // since the protocol changed to store passphrase preferences in the cloud, 1961 // since the protocol changed to store passphrase preferences in the cloud,
1962 // make sure we update this preference. See bug 62103. 1962 // make sure we update this preference. See bug 62103.
1963 if (is_explicit) 1963 if (is_explicit)
1964 SetUsingExplicitPassphrasePrefForMigration(&trans); 1964 SetUsingExplicitPassphrasePrefForMigration(&trans);
1965 1965
1966 // Nudge the syncer so that encrypted datatype updates that were waiting for 1966 // Nudge the syncer so that encrypted datatype updates that were waiting for
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
2499 if (!nigori.encrypted().blob().empty()) { 2499 if (!nigori.encrypted().blob().empty()) {
2500 DCHECK(!cryptographer->CanDecrypt(nigori.encrypted())); 2500 DCHECK(!cryptographer->CanDecrypt(nigori.encrypted()));
2501 cryptographer->SetPendingKeys(nigori.encrypted()); 2501 cryptographer->SetPendingKeys(nigori.encrypted());
2502 } 2502 }
2503 } 2503 }
2504 2504
2505 // If we've completed a sync cycle and the cryptographer isn't ready 2505 // If we've completed a sync cycle and the cryptographer isn't ready
2506 // yet, prompt the user for a passphrase. 2506 // yet, prompt the user for a passphrase.
2507 if (cryptographer->has_pending_keys()) { 2507 if (cryptographer->has_pending_keys()) {
2508 FOR_EACH_OBSERVER(SyncManager::Observer, observers_, 2508 FOR_EACH_OBSERVER(SyncManager::Observer, observers_,
2509 OnPassphraseRequired(true)); 2509 OnPassphraseRequired(sync_api::ENCRYPTION));
2510 } else if (!cryptographer->is_ready()) { 2510 } else if (!cryptographer->is_ready()) {
2511 FOR_EACH_OBSERVER(SyncManager::Observer, observers_, 2511 FOR_EACH_OBSERVER(SyncManager::Observer, observers_,
2512 OnPassphraseRequired(false)); 2512 OnPassphraseRequired(sync_api::DECRYPTION));
2513 } else { 2513 } else {
2514 FOR_EACH_OBSERVER(SyncManager::Observer, observers_, 2514 FOR_EACH_OBSERVER(SyncManager::Observer, observers_,
2515 OnEncryptionComplete(encrypted_types)); 2515 OnEncryptionComplete(encrypted_types));
2516 } 2516 }
2517 } 2517 }
2518 } 2518 }
2519 2519
2520 if (!initialized()) 2520 if (!initialized())
2521 return; 2521 return;
2522 2522
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
2833 void SyncManager::TriggerOnIncomingNotificationForTest( 2833 void SyncManager::TriggerOnIncomingNotificationForTest(
2834 const syncable::ModelTypeBitSet& model_types) { 2834 const syncable::ModelTypeBitSet& model_types) {
2835 syncable::ModelTypePayloadMap model_types_with_payloads = 2835 syncable::ModelTypePayloadMap model_types_with_payloads =
2836 syncable::ModelTypePayloadMapFromBitSet(model_types, 2836 syncable::ModelTypePayloadMapFromBitSet(model_types,
2837 std::string()); 2837 std::string());
2838 2838
2839 data_->OnIncomingNotification(model_types_with_payloads); 2839 data_->OnIncomingNotification(model_types_with_payloads);
2840 } 2840 }
2841 2841
2842 } // namespace sync_api 2842 } // namespace sync_api
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698