summaryrefslogtreecommitdiffstats
path: root/sync/internal_api/sync_manager_impl_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sync/internal_api/sync_manager_impl_unittest.cc')
-rw-r--r--sync/internal_api/sync_manager_impl_unittest.cc295
1 files changed, 189 insertions, 106 deletions
diff --git a/sync/internal_api/sync_manager_impl_unittest.cc b/sync/internal_api/sync_manager_impl_unittest.cc
index c41215c..48b81c1 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 {
@@ -752,8 +770,8 @@ class SyncManagerTest : public testing::Test,
// Called by ShutdownOnSyncThread().
EXPECT_CALL(*sync_notifier_mock_, UnregisterHandler(_));
- 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());
@@ -778,6 +796,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();
@@ -789,7 +809,7 @@ class SyncManagerTest : public testing::Test,
}
void TearDown() {
- sync_manager_.RemoveObserver(&observer_);
+ sync_manager_.RemoveObserver(&manager_observer_);
// |sync_notifier_mock_| is strict, which ensures we don't do anything but
// unregister |sync_manager_| as a handler on shutdown.
sync_manager_.ShutdownOnSyncThread();
@@ -825,6 +845,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)
@@ -835,12 +858,12 @@ 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());
- cryptographer->UpdateNigoriFromEncryptedTypes(&nigori);
+ cryptographer->UpdateNigoriFromEncryptedTypes(
+ &nigori,
+ trans.GetWrappedTrans());
WriteNode node(&trans);
EXPECT_EQ(BaseNode::INIT_OK, node.InitByIdLookup(nigori_id));
node.SetNigoriSpecifics(nigori);
@@ -896,8 +919,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
@@ -962,7 +984,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_;
InternalComponentsFactory::Switches switches_;
};
@@ -1354,9 +1377,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()->Init();
PumpLoop();
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
@@ -1380,8 +1404,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()->Init();
PumpLoop();
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
@@ -1392,10 +1419,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()->Init();
PumpLoop();
const ModelTypeSet encrypted_types = GetEncryptedDataTypesForTest();
@@ -1417,11 +1445,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());
}
@@ -1456,7 +1484,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(),
@@ -1474,11 +1502,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());
@@ -1502,11 +1530,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());
@@ -1529,12 +1559,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
@@ -1542,10 +1571,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());
@@ -1571,10 +1605,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());
@@ -1613,10 +1652,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());
@@ -1659,14 +1703,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());
@@ -1704,7 +1751,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.
@@ -1714,12 +1761,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();
@@ -1731,10 +1783,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();
@@ -1774,15 +1831,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());
@@ -1814,13 +1874,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());
@@ -1844,10 +1909,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());
@@ -1949,11 +2019,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());
{
@@ -2037,13 +2107,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()->Init();
PumpLoop();
{
ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
@@ -2062,11 +2133,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);
@@ -2084,10 +2158,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()->Init();
PumpLoop();
{
@@ -2253,11 +2328,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));
}
@@ -2284,9 +2364,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()->Init();
PumpLoop();
EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
}
@@ -2342,12 +2423,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()->Init();
PumpLoop();
EXPECT_TRUE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
@@ -2437,12 +2519,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()->Init();
PumpLoop();
EXPECT_TRUE(ResetUnsyncedEntry(PREFERENCES, client_tag));