Index: sync/internal_api/sync_manager_impl_unittest.cc |
diff --git a/sync/internal_api/sync_manager_impl_unittest.cc b/sync/internal_api/sync_manager_impl_unittest.cc |
index bd2ffeff0ad07d9f90775a906c44fdbf12e7fc7d..9ad8642cbb39434c0f71533245c99f7bf0ced480 100644 |
--- a/sync/internal_api/sync_manager_impl_unittest.cc |
+++ b/sync/internal_api/sync_manager_impl_unittest.cc |
@@ -36,6 +36,7 @@ |
#include "sync/internal_api/public/test/test_user_share.h" |
#include "sync/internal_api/public/write_node.h" |
#include "sync/internal_api/public/write_transaction.h" |
+#include "sync/internal_api/sync_encryption_handler_impl.h" |
#include "sync/internal_api/sync_manager_impl.h" |
#include "sync/internal_api/syncapi_internal.h" |
#include "sync/js/js_arg_list.h" |
@@ -77,6 +78,7 @@ using testing::AtLeast; |
using testing::DoAll; |
using testing::InSequence; |
using testing::Invoke; |
+using testing::NiceMock; |
using testing::Return; |
using testing::SaveArg; |
using testing::StrictMock; |
@@ -225,15 +227,25 @@ class SyncApiTest : public testing::Test { |
public: |
virtual void SetUp() { |
test_user_share_.SetUp(); |
+ SetUpEncryption(); |
} |
virtual void TearDown() { |
test_user_share_.TearDown(); |
} |
+ void SetUpEncryption() { |
+ ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); |
+ encryption_handler_.reset( |
+ new SyncEncryptionHandlerImpl(test_user_share_.user_share(), |
+ trans.GetCryptographer())); |
+ trans.GetCryptographer()->SetNigoriHandler(encryption_handler_.get()); |
+ } |
+ |
protected: |
MessageLoop message_loop_; |
TestUserShare test_user_share_; |
+ scoped_ptr<SyncEncryptionHandlerImpl> encryption_handler_; |
}; |
TEST_F(SyncApiTest, SanityCheckTest) { |
@@ -472,8 +484,8 @@ TEST_F(SyncApiTest, WriteEncryptedTitle) { |
{ |
ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); |
trans.GetCryptographer()->AddKey(params); |
- trans.GetCryptographer()->set_encrypt_everything(); |
} |
+ encryption_handler_->EnableEncryptEverything(); |
{ |
WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); |
ReadNode root_node(&trans); |
@@ -680,18 +692,24 @@ class SyncManagerObserverMock : public SyncManager::Observer { |
void(const WeakHandle<JsBackend>&, bool, |
syncer::ModelTypeSet)); // NOLINT |
MOCK_METHOD1(OnConnectionStatusChange, void(ConnectionStatus)); // NOLINT |
+ MOCK_METHOD0(OnStopSyncingPermanently, void()); // NOLINT |
+ MOCK_METHOD1(OnUpdatedToken, void(const std::string&)); // NOLINT |
+ MOCK_METHOD1(OnActionableError, |
+ void(const SyncProtocolError&)); // NOLINT |
+}; |
+ |
+class SyncEncryptionHandlerObserverMock |
+ : public SyncEncryptionHandler::Observer { |
+ public: |
MOCK_METHOD2(OnPassphraseRequired, |
void(PassphraseRequiredReason, |
const sync_pb::EncryptedData&)); // NOLINT |
MOCK_METHOD0(OnPassphraseAccepted, void()); // NOLINT |
MOCK_METHOD1(OnBootstrapTokenUpdated, void(const std::string&)); // NOLINT |
- MOCK_METHOD0(OnStopSyncingPermanently, void()); // NOLINT |
- MOCK_METHOD1(OnUpdatedToken, void(const std::string&)); // NOLINT |
MOCK_METHOD2(OnEncryptedTypesChanged, |
void(ModelTypeSet, bool)); // NOLINT |
MOCK_METHOD0(OnEncryptionComplete, void()); // NOLINT |
- MOCK_METHOD1(OnActionableError, |
- void(const SyncProtocolError&)); // NOLINT |
+ MOCK_METHOD1(OnCryptographerStateChanged, void(Cryptographer*)); // NOLINT |
}; |
class SyncNotifierMock : public SyncNotifier { |
@@ -743,8 +761,8 @@ class SyncManagerTest : public testing::Test, |
EXPECT_CALL(*sync_notifier_mock_, |
UpdateCredentials(credentials.email, credentials.sync_token)); |
- sync_manager_.AddObserver(&observer_); |
- EXPECT_CALL(observer_, OnInitializationComplete(_, _, _)). |
+ sync_manager_.AddObserver(&manager_observer_); |
+ EXPECT_CALL(manager_observer_, OnInitializationComplete(_, _, _)). |
WillOnce(SaveArg<0>(&js_backend_)); |
EXPECT_FALSE(js_backend_.IsInitialized()); |
@@ -770,6 +788,8 @@ class SyncManagerTest : public testing::Test, |
&handler_, |
NULL); |
+ sync_manager_.GetEncryptionHandler()->AddObserver(&encryption_observer_); |
+ |
EXPECT_TRUE(js_backend_.IsInitialized()); |
for (ModelSafeRoutingInfo::iterator i = routing_info.begin(); |
@@ -781,7 +801,7 @@ class SyncManagerTest : public testing::Test, |
} |
void TearDown() { |
- sync_manager_.RemoveObserver(&observer_); |
+ sync_manager_.RemoveObserver(&manager_observer_); |
EXPECT_CALL(*sync_notifier_mock_, UpdateRegisteredIds(_, ObjectIdSet())); |
sync_manager_.ShutdownOnSyncThread(); |
sync_notifier_mock_ = NULL; |
@@ -816,6 +836,9 @@ class SyncManagerTest : public testing::Test, |
return false; |
// Set the nigori cryptographer information. |
+ if (encryption_status == FULL_ENCRYPTION) |
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); |
+ |
WriteTransaction trans(FROM_HERE, share); |
Cryptographer* cryptographer = trans.GetCryptographer(); |
if (!cryptographer) |
@@ -826,8 +849,6 @@ class SyncManagerTest : public testing::Test, |
} else { |
DCHECK_NE(nigori_status, WRITE_TO_NIGORI); |
} |
- if (encryption_status == FULL_ENCRYPTION) |
- cryptographer->set_encrypt_everything(); |
if (nigori_status == WRITE_TO_NIGORI) { |
sync_pb::NigoriSpecifics nigori; |
cryptographer->GetKeys(nigori.mutable_encrypted()); |
@@ -887,8 +908,7 @@ class SyncManagerTest : public testing::Test, |
// Returns true if we are currently encrypting all sync data. May |
// be called on any thread. |
bool EncryptEverythingEnabledForTest() { |
- ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
- return trans.GetCryptographer()->encrypt_everything(); |
+ return sync_manager_.GetEncryptionHandler()->EncryptEverythingEnabled(); |
} |
// Gets the set of encrypted types from the cryptographer |
@@ -949,7 +969,8 @@ class SyncManagerTest : public testing::Test, |
StrictMock<SyncNotifierMock>* sync_notifier_mock_; |
SyncManagerImpl sync_manager_; |
WeakHandle<JsBackend> js_backend_; |
- StrictMock<SyncManagerObserverMock> observer_; |
+ StrictMock<SyncManagerObserverMock> manager_observer_; |
+ StrictMock<SyncEncryptionHandlerObserverMock> encryption_observer_; |
}; |
TEST_F(SyncManagerTest, UpdateEnabledTypes) { |
@@ -1330,9 +1351,10 @@ TEST_F(SyncManagerTest, OnIncomingNotification) { |
TEST_F(SyncManagerTest, RefreshEncryptionReady) { |
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); |
+ sync_manager_.GetEncryptionHandler()->ReloadNigori(); |
PumpLoop(); |
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); |
@@ -1356,8 +1378,11 @@ TEST_F(SyncManagerTest, RefreshEncryptionReady) { |
TEST_F(SyncManagerTest, RefreshEncryptionNotReady) { |
// Don't set up encryption (no nigori node created). |
- // Should fail. |
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); |
+ // Should fail. Triggers an OnPassphraseRequired because the cryptographer |
+ // is not ready. |
+ EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_, _)).Times(1); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->ReloadNigori(); |
PumpLoop(); |
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); |
@@ -1368,10 +1393,11 @@ TEST_F(SyncManagerTest, RefreshEncryptionNotReady) { |
// Attempt to refresh encryption when nigori is empty. |
TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) { |
EXPECT_TRUE(SetUpEncryption(DONT_WRITE_NIGORI, DEFAULT_ENCRYPTION)); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(1); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
// Should write to nigori. |
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); |
+ sync_manager_.GetEncryptionHandler()->ReloadNigori(); |
PumpLoop(); |
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest(); |
@@ -1393,11 +1419,11 @@ TEST_F(SyncManagerTest, RefreshEncryptionEmptyNigori) { |
TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) { |
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, DEFAULT_ENCRYPTION)); |
- EXPECT_CALL(observer_, |
+ EXPECT_CALL(encryption_observer_, |
OnEncryptedTypesChanged( |
HasModelTypes(ModelTypeSet::All()), true)); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.EnableEncryptEverything(); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); |
EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
} |
@@ -1432,7 +1458,7 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) { |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
EXPECT_TRUE(GetEncryptedTypes(&trans).Equals( |
- Cryptographer::SensitiveTypes())); |
+ SyncEncryptionHandler::SensitiveTypes())); |
EXPECT_TRUE(syncable::VerifyDataTypeEncryptionForTest( |
trans.GetWrappedTrans(), |
trans.GetCryptographer(), |
@@ -1450,11 +1476,11 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) { |
false /* not encrypted */)); |
} |
- EXPECT_CALL(observer_, |
+ EXPECT_CALL(encryption_observer_, |
OnEncryptedTypesChanged( |
HasModelTypes(ModelTypeSet::All()), true)); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.EnableEncryptEverything(); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); |
EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1478,11 +1504,13 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) { |
} |
// Trigger's a ReEncryptEverything with new passphrase. |
- testing::Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true); |
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "new_passphrase", true); |
EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1505,12 +1533,11 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) { |
} |
// Calling EncryptDataTypes with an empty encrypted types should not trigger |
// a reencryption and should just notify immediately. |
- // TODO(zea): add logic to ensure nothing was written. |
- testing::Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)).Times(0); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()).Times(0); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.EnableEncryptEverything(); |
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)).Times(0); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()).Times(0); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()).Times(0); |
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); |
} |
// Test that when there are no pending keys and the cryptographer is not |
@@ -1518,10 +1545,15 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) { |
// (case 1 in SyncManager::SyncInternal::SetEncryptionPassphrase) |
TEST_F(SyncManagerTest, SetInitialGaiaPass) { |
EXPECT_FALSE(SetUpEncryption(DONT_WRITE_NIGORI, UNINITIALIZED)); |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("new_passphrase", false); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "new_passphrase", |
+ false); |
+ EXPECT_FALSE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1547,10 +1579,15 @@ TEST_F(SyncManagerTest, UpdateGaiaPass) { |
cryptographer->GetBootstrapToken(&bootstrap_token); |
verifier.Bootstrap(bootstrap_token); |
} |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("new_passphrase", false); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "new_passphrase", |
+ false); |
+ EXPECT_FALSE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1589,10 +1626,15 @@ TEST_F(SyncManagerTest, SetPassphraseWithPassword) { |
data.set_password_value("secret"); |
password_node.SetPasswordSpecifics(data); |
} |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "new_passphrase", |
+ true); |
+ EXPECT_TRUE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1635,14 +1677,17 @@ TEST_F(SyncManagerTest, SupplyPendingGAIAPass) { |
EXPECT_EQ(BaseNode::INIT_OK, node.InitByTagLookup(kNigoriTag)); |
sync_pb::NigoriSpecifics nigori; |
other_cryptographer.GetKeys(nigori.mutable_encrypted()); |
- cryptographer->Update(nigori); |
+ cryptographer->SetPendingKeys(nigori.encrypted()); |
EXPECT_TRUE(cryptographer->has_pending_keys()); |
node.SetNigoriSpecifics(nigori); |
} |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetDecryptionPassphrase("passphrase2"); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("passphrase2"); |
+ EXPECT_FALSE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1680,7 +1725,7 @@ TEST_F(SyncManagerTest, SupplyPendingOldGAIAPass) { |
sync_pb::NigoriSpecifics nigori; |
other_cryptographer.GetKeys(nigori.mutable_encrypted()); |
node.SetNigoriSpecifics(nigori); |
- cryptographer->Update(nigori); |
+ cryptographer->SetPendingKeys(nigori.encrypted()); |
// other_cryptographer now contains all encryption keys, and is encrypting |
// with the newest gaia. |
@@ -1690,12 +1735,17 @@ TEST_F(SyncManagerTest, SupplyPendingOldGAIAPass) { |
// The bootstrap token should have been updated. Save it to ensure it's based |
// on the new GAIA password. |
std::string bootstrap_token; |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)) |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)) |
.WillOnce(SaveArg<0>(&bootstrap_token)); |
- EXPECT_CALL(observer_, OnPassphraseRequired(_,_)); |
- sync_manager_.SetEncryptionPassphrase("new_gaia", false); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseRequired(_,_)); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "new_gaia", |
+ false); |
+ EXPECT_FALSE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
- testing::Mock::VerifyAndClearExpectations(&observer_); |
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
Cryptographer* cryptographer = trans.GetCryptographer(); |
@@ -1707,10 +1757,15 @@ TEST_F(SyncManagerTest, SupplyPendingOldGAIAPass) { |
other_cryptographer.GetKeys(&encrypted); |
EXPECT_TRUE(cryptographer->CanDecrypt(encrypted)); |
} |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("old_gaia", false); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "old_gaia", |
+ false); |
+ EXPECT_FALSE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
Cryptographer* cryptographer = trans.GetCryptographer(); |
@@ -1750,15 +1805,18 @@ TEST_F(SyncManagerTest, SupplyPendingExplicitPass) { |
EXPECT_EQ(BaseNode::INIT_OK, node.InitByTagLookup(kNigoriTag)); |
sync_pb::NigoriSpecifics nigori; |
other_cryptographer.GetKeys(nigori.mutable_encrypted()); |
- cryptographer->Update(nigori); |
+ cryptographer->SetPendingKeys(nigori.encrypted()); |
EXPECT_TRUE(cryptographer->has_pending_keys()); |
nigori.set_using_explicit_passphrase(true); |
node.SetNigoriSpecifics(nigori); |
} |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetDecryptionPassphrase("explicit"); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetDecryptionPassphrase("explicit"); |
+ EXPECT_TRUE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1790,13 +1848,18 @@ TEST_F(SyncManagerTest, SupplyPendingGAIAPassUserProvided) { |
sync_pb::NigoriSpecifics nigori; |
other_cryptographer.GetKeys(nigori.mutable_encrypted()); |
node.SetNigoriSpecifics(nigori); |
- cryptographer->Update(nigori); |
+ cryptographer->SetPendingKeys(nigori.encrypted()); |
EXPECT_FALSE(cryptographer->is_ready()); |
} |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("passphrase", false); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "passphrase", |
+ false); |
+ EXPECT_FALSE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1820,10 +1883,15 @@ TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) { |
EXPECT_EQ(WriteNode::INIT_SUCCESS, result); |
node_id = password_node.GetId(); |
} |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "new_passphrase", |
+ true); |
+ EXPECT_TRUE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_FALSE(EncryptEverythingEnabledForTest()); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -1925,11 +1993,11 @@ TEST_F(SyncManagerTest, EncryptBookmarksWithLegacyData) { |
false /* not encrypted */)); |
} |
- EXPECT_CALL(observer_, |
+ EXPECT_CALL(encryption_observer_, |
OnEncryptedTypesChanged( |
HasModelTypes(ModelTypeSet::All()), true)); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.EnableEncryptEverything(); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ sync_manager_.GetEncryptionHandler()->EnableEncryptEverything(); |
EXPECT_TRUE(EncryptEverythingEnabledForTest()); |
{ |
@@ -2013,13 +2081,14 @@ TEST_F(SyncManagerTest, UpdateEntryWithEncryption) { |
EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
// Encrypt the datatatype, should set is_unsynced. |
- EXPECT_CALL(observer_, |
+ EXPECT_CALL(encryption_observer_, |
OnEncryptedTypesChanged( |
HasModelTypes(ModelTypeSet::All()), true)); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); |
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->ReloadNigori(); |
PumpLoop(); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
@@ -2038,11 +2107,14 @@ TEST_F(SyncManagerTest, UpdateEntryWithEncryption) { |
EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
// Set a new passphrase. Should set is_unsynced. |
- testing::Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true); |
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "new_passphrase", |
+ true); |
{ |
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
ReadNode node(&trans); |
@@ -2060,10 +2132,11 @@ TEST_F(SyncManagerTest, UpdateEntryWithEncryption) { |
EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
// Force a re-encrypt everything. Should not set is_unsynced. |
- testing::Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); |
+ sync_manager_.GetEncryptionHandler()->ReloadNigori(); |
PumpLoop(); |
{ |
@@ -2229,11 +2302,16 @@ TEST_F(SyncManagerTest, UpdatePasswordNewPassphrase) { |
EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
// Set a new passphrase. Should set is_unsynced. |
- testing::Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_CALL(observer_, OnBootstrapTokenUpdated(_)); |
- EXPECT_CALL(observer_, OnPassphraseAccepted()); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.SetEncryptionPassphrase("new_passphrase", true); |
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
+ EXPECT_CALL(encryption_observer_, OnBootstrapTokenUpdated(_)); |
+ EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->SetEncryptionPassphrase( |
+ "new_passphrase", |
+ true); |
+ EXPECT_TRUE( |
+ sync_manager_.GetEncryptionHandler()->IsUsingExplicitPassphrase()); |
EXPECT_TRUE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
} |
@@ -2260,9 +2338,10 @@ TEST_F(SyncManagerTest, UpdatePasswordReencryptEverything) { |
EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
// Force a re-encrypt everything. Should not set is_unsynced. |
- testing::Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); |
+ testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->ReloadNigori(); |
PumpLoop(); |
EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
} |
@@ -2318,12 +2397,13 @@ TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) { |
EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
// Encrypt the datatatype, should set is_unsynced. |
- EXPECT_CALL(observer_, |
+ EXPECT_CALL(encryption_observer_, |
OnEncryptedTypesChanged( |
HasModelTypes(ModelTypeSet::All()), true)); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); |
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->ReloadNigori(); |
PumpLoop(); |
EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
@@ -2413,12 +2493,13 @@ TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) { |
EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); |
// Encrypt the datatatype, should set is_unsynced. |
- EXPECT_CALL(observer_, |
+ EXPECT_CALL(encryption_observer_, |
OnEncryptedTypesChanged( |
HasModelTypes(ModelTypeSet::All()), true)); |
- EXPECT_CALL(observer_, OnEncryptionComplete()); |
+ EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
EXPECT_TRUE(SetUpEncryption(WRITE_TO_NIGORI, FULL_ENCRYPTION)); |
- sync_manager_.RefreshNigori(kTestChromeVersion, base::Bind(&DoNothing)); |
+ EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
+ sync_manager_.GetEncryptionHandler()->ReloadNigori(); |
PumpLoop(); |
EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag)); |