| Index: components/sync_driver/data_type_manager_impl_unittest.cc
|
| diff --git a/components/sync_driver/data_type_manager_impl_unittest.cc b/components/sync_driver/data_type_manager_impl_unittest.cc
|
| index 054e2677954bf77d5ca3fec8317d5e55670dc78c..c4d2ec2542f779006445bbce2368b3f79c3d69ea 100644
|
| --- a/components/sync_driver/data_type_manager_impl_unittest.cc
|
| +++ b/components/sync_driver/data_type_manager_impl_unittest.cc
|
| @@ -14,11 +14,11 @@
|
| #include "components/sync_driver/fake_data_type_controller.h"
|
| #include "sync/internal_api/public/base/model_type.h"
|
| #include "sync/internal_api/public/configure_reason.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace sync_driver {
|
|
|
| +using syncer::SyncError;
|
| using syncer::ModelType;
|
| using syncer::ModelTypeSet;
|
| using syncer::ModelTypeToString;
|
| @@ -27,25 +27,48 @@ using syncer::APPS;
|
| using syncer::PASSWORDS;
|
| using syncer::PREFERENCES;
|
| using syncer::NIGORI;
|
| -using testing::_;
|
| -using testing::Mock;
|
| -using testing::ResultOf;
|
|
|
| namespace {
|
|
|
| -// Used by SetConfigureDoneExpectation.
|
| -DataTypeManager::ConfigureStatus GetStatus(
|
| - const DataTypeManager::ConfigureResult& result) {
|
| - return result.status;
|
| -}
|
| -
|
| // Helper for unioning with priority types.
|
| -syncer::ModelTypeSet AddHighPriorityTypesTo(syncer::ModelTypeSet types) {
|
| - syncer::ModelTypeSet result = syncer::ControlTypes();
|
| +ModelTypeSet AddHighPriorityTypesTo(ModelTypeSet types) {
|
| + ModelTypeSet result = syncer::ControlTypes();
|
| result.PutAll(types);
|
| return result;
|
| }
|
|
|
| +DataTypeStatusTable BuildStatusTable(ModelTypeSet crypto_errors,
|
| + ModelTypeSet association_errors,
|
| + ModelTypeSet unready_errors,
|
| + ModelTypeSet unrecoverable_errors) {
|
| + DataTypeStatusTable::TypeErrorMap error_map;
|
| + for (ModelTypeSet::Iterator iter = crypto_errors.First(); iter.Good();
|
| + iter.Inc()) {
|
| + error_map[iter.Get()] = SyncError(
|
| + FROM_HERE, SyncError::CRYPTO_ERROR, "crypto error", iter.Get());
|
| + }
|
| + for (ModelTypeSet::Iterator iter = association_errors.First(); iter.Good();
|
| + iter.Inc()) {
|
| + error_map[iter.Get()] = SyncError(
|
| + FROM_HERE, SyncError::DATATYPE_ERROR, "association error", iter.Get());
|
| + }
|
| + for (ModelTypeSet::Iterator iter = unready_errors.First(); iter.Good();
|
| + iter.Inc()) {
|
| + error_map[iter.Get()] = SyncError(
|
| + FROM_HERE, SyncError::UNREADY_ERROR, "unready errors", iter.Get());
|
| + }
|
| + for (ModelTypeSet::Iterator iter = unrecoverable_errors.First(); iter.Good();
|
| + iter.Inc()) {
|
| + error_map[iter.Get()] = SyncError(FROM_HERE,
|
| + SyncError::UNRECOVERABLE_ERROR,
|
| + "unrecoverable errors",
|
| + iter.Get());
|
| + }
|
| + DataTypeStatusTable status_table;
|
| + status_table.UpdateFailedDataTypes(error_map);
|
| + return status_table;
|
| +}
|
| +
|
| // Fake BackendDataTypeConfigurer implementation that simply stores away the
|
| // callback passed into ConfigureDataTypes.
|
| class FakeBackendDataTypeConfigurer : public BackendDataTypeConfigurer {
|
| @@ -65,9 +88,9 @@ class FakeBackendDataTypeConfigurer : public BackendDataTypeConfigurer {
|
| EXPECT_TRUE(
|
| expected_configure_types_.Equals(
|
| GetDataTypesInState(CONFIGURE_ACTIVE, config_state_map)))
|
| - << syncer::ModelTypeSetToString(expected_configure_types_)
|
| + << ModelTypeSetToString(expected_configure_types_)
|
| << " v.s. "
|
| - << syncer::ModelTypeSetToString(
|
| + << ModelTypeSetToString(
|
| GetDataTypesInState(CONFIGURE_ACTIVE, config_state_map));
|
| }
|
| }
|
| @@ -85,28 +108,72 @@ class FakeBackendDataTypeConfigurer : public BackendDataTypeConfigurer {
|
| return last_ready_task_;
|
| }
|
|
|
| - void set_expected_configure_types(syncer::ModelTypeSet types) {
|
| + void set_expected_configure_types(ModelTypeSet types) {
|
| expected_configure_types_ = types;
|
| }
|
|
|
| - const syncer::ModelTypeSet activated_types() { return activated_types_; }
|
| + const ModelTypeSet activated_types() { return activated_types_; }
|
|
|
| private:
|
| base::Callback<void(ModelTypeSet, ModelTypeSet)> last_ready_task_;
|
| - syncer::ModelTypeSet expected_configure_types_;
|
| - syncer::ModelTypeSet activated_types_;
|
| + ModelTypeSet expected_configure_types_;
|
| + ModelTypeSet activated_types_;
|
| };
|
|
|
| -// Mock DataTypeManagerObserver implementation.
|
| -class DataTypeManagerObserverMock : public DataTypeManagerObserver {
|
| +// DataTypeManagerObserver implementation.
|
| +class FakeDataTypeManagerObserver : public DataTypeManagerObserver {
|
| public:
|
| - DataTypeManagerObserverMock() {}
|
| - virtual ~DataTypeManagerObserverMock() {}
|
| + FakeDataTypeManagerObserver() { ResetExpectations(); }
|
| + virtual ~FakeDataTypeManagerObserver() {
|
| + EXPECT_FALSE(start_expected_);
|
| + DataTypeManager::ConfigureResult default_result;
|
| + EXPECT_EQ(done_expectation_.status, default_result.status);
|
| + EXPECT_TRUE(
|
| + done_expectation_.data_type_status_table.GetFailedTypes().Empty());
|
| + }
|
| +
|
| + void ExpectStart() {
|
| + start_expected_ = true;
|
| + }
|
| + void ExpectDone(const DataTypeManager::ConfigureResult& result) {
|
| + done_expectation_ = result;
|
| + }
|
| + void ResetExpectations() {
|
| + start_expected_ = false;
|
| + done_expectation_ = DataTypeManager::ConfigureResult();
|
| + }
|
| +
|
| + virtual void OnConfigureDone(
|
| + const DataTypeManager::ConfigureResult& result) OVERRIDE {
|
| + EXPECT_EQ(done_expectation_.status, result.status);
|
| + DataTypeStatusTable::TypeErrorMap errors =
|
| + result.data_type_status_table.GetAllErrors();
|
| + DataTypeStatusTable::TypeErrorMap expected_errors =
|
| + done_expectation_.data_type_status_table.GetAllErrors();
|
| + ASSERT_EQ(expected_errors.size(), errors.size());
|
| + for (DataTypeStatusTable::TypeErrorMap::const_iterator iter =
|
| + expected_errors.begin();
|
| + iter != expected_errors.end();
|
| + ++iter) {
|
| + ASSERT_TRUE(errors.find(iter->first) != errors.end());
|
| + ASSERT_EQ(iter->second.error_type(),
|
| + errors.find(iter->first)->second.error_type());
|
| + }
|
| + done_expectation_ = DataTypeManager::ConfigureResult();
|
| + }
|
| +
|
| + virtual void OnConfigureRetry() OVERRIDE{
|
| + // Not verified.
|
| + }
|
| +
|
| + virtual void OnConfigureStart() OVERRIDE {
|
| + EXPECT_TRUE(start_expected_);
|
| + start_expected_ = false;
|
| + }
|
|
|
| - MOCK_METHOD1(OnConfigureDone,
|
| - void(const DataTypeManager::ConfigureResult&));
|
| - MOCK_METHOD0(OnConfigureRetry, void());
|
| - MOCK_METHOD0(OnConfigureStart, void());
|
| + private:
|
| + bool start_expected_ = true;
|
| + DataTypeManager::ConfigureResult done_expectation_;
|
| };
|
|
|
| class FakeDataTypeEncryptionHandler : public DataTypeEncryptionHandler {
|
| @@ -115,17 +182,17 @@ class FakeDataTypeEncryptionHandler : public DataTypeEncryptionHandler {
|
| virtual ~FakeDataTypeEncryptionHandler();
|
|
|
| virtual bool IsPassphraseRequired() const OVERRIDE;
|
| - virtual syncer::ModelTypeSet GetEncryptedDataTypes() const OVERRIDE;
|
| + virtual ModelTypeSet GetEncryptedDataTypes() const OVERRIDE;
|
|
|
| void set_passphrase_required(bool passphrase_required) {
|
| passphrase_required_ = passphrase_required;
|
| }
|
| - void set_encrypted_types(syncer::ModelTypeSet encrypted_types) {
|
| + void set_encrypted_types(ModelTypeSet encrypted_types) {
|
| encrypted_types_ = encrypted_types;
|
| }
|
| private:
|
| bool passphrase_required_;
|
| - syncer::ModelTypeSet encrypted_types_;
|
| + ModelTypeSet encrypted_types_;
|
| };
|
|
|
| FakeDataTypeEncryptionHandler::FakeDataTypeEncryptionHandler()
|
| @@ -136,7 +203,7 @@ bool FakeDataTypeEncryptionHandler::IsPassphraseRequired() const {
|
| return passphrase_required_;
|
| }
|
|
|
| -syncer::ModelTypeSet
|
| +ModelTypeSet
|
| FakeDataTypeEncryptionHandler::GetEncryptedDataTypes() const {
|
| return encrypted_types_;
|
| }
|
| @@ -151,18 +218,16 @@ class TestDataTypeManager : public DataTypeManagerImpl {
|
| BackendDataTypeConfigurer* configurer,
|
| const DataTypeController::TypeMap* controllers,
|
| const DataTypeEncryptionHandler* encryption_handler,
|
| - DataTypeManagerObserver* observer,
|
| - DataTypeStatusTable* data_type_status_table)
|
| + DataTypeManagerObserver* observer)
|
| : DataTypeManagerImpl(base::Closure(),
|
| debug_info_listener,
|
| controllers,
|
| encryption_handler,
|
| configurer,
|
| - observer,
|
| - data_type_status_table),
|
| + observer),
|
| custom_priority_types_(syncer::ControlTypes()) {}
|
|
|
| - void set_priority_types(const syncer::ModelTypeSet& priority_types) {
|
| + void set_priority_types(const ModelTypeSet& priority_types) {
|
| custom_priority_types_ = priority_types;
|
| }
|
|
|
| @@ -177,11 +242,11 @@ class TestDataTypeManager : public DataTypeManagerImpl {
|
| }
|
|
|
| private:
|
| - virtual syncer::ModelTypeSet GetPriorityTypes() const OVERRIDE {
|
| + virtual ModelTypeSet GetPriorityTypes() const OVERRIDE {
|
| return custom_priority_types_;
|
| }
|
|
|
| - syncer::ModelTypeSet custom_priority_types_;
|
| + ModelTypeSet custom_priority_types_;
|
| DataTypeManager::ConfigureResult configure_result_;
|
| };
|
|
|
| @@ -202,21 +267,24 @@ class SyncDataTypeManagerImplTest : public testing::Test {
|
| &configurer_,
|
| &controllers_,
|
| &encryption_handler_,
|
| - &observer_,
|
| - &data_type_status_table_));
|
| + &observer_));
|
| }
|
|
|
| void SetConfigureStartExpectation() {
|
| - EXPECT_CALL(observer_, OnConfigureStart());
|
| + observer_.ExpectStart();
|
| }
|
|
|
| - void SetConfigureDoneExpectation(DataTypeManager::ConfigureStatus status) {
|
| - EXPECT_CALL(observer_, OnConfigureDone(ResultOf(&GetStatus, status)));
|
| + void SetConfigureDoneExpectation(DataTypeManager::ConfigureStatus status,
|
| + const DataTypeStatusTable& status_table) {
|
| + DataTypeManager::ConfigureResult result;
|
| + result.status = status;
|
| + result.data_type_status_table = status_table;
|
| + observer_.ExpectDone(result);
|
| }
|
|
|
| // Configure the given DTM with the given desired types.
|
| void Configure(DataTypeManagerImpl* dtm,
|
| - const syncer::ModelTypeSet& desired_types) {
|
| + const ModelTypeSet& desired_types) {
|
| dtm->Configure(desired_types, syncer::CONFIGURE_REASON_RECONFIGURATION);
|
| }
|
|
|
| @@ -252,7 +320,7 @@ class SyncDataTypeManagerImplTest : public testing::Test {
|
| static_cast<FakeDataTypeController*>(it->second.get()));
|
| }
|
|
|
| - void FailEncryptionFor(syncer::ModelTypeSet encrypted_types) {
|
| + void FailEncryptionFor(ModelTypeSet encrypted_types) {
|
| encryption_handler_.set_passphrase_required(true);
|
| encryption_handler_.set_encrypted_types(encrypted_types);
|
| }
|
| @@ -260,9 +328,8 @@ class SyncDataTypeManagerImplTest : public testing::Test {
|
| base::MessageLoopForUI ui_loop_;
|
| DataTypeController::TypeMap controllers_;
|
| FakeBackendDataTypeConfigurer configurer_;
|
| - DataTypeManagerObserverMock observer_;
|
| + FakeDataTypeManagerObserver observer_;
|
| scoped_ptr<TestDataTypeManager> dtm_;
|
| - DataTypeStatusTable data_type_status_table_;
|
| FakeDataTypeEncryptionHandler encryption_handler_;
|
| };
|
|
|
| @@ -270,7 +337,7 @@ class SyncDataTypeManagerImplTest : public testing::Test {
|
| // and then stop it.
|
| TEST_F(SyncDataTypeManagerImplTest, NoControllers) {
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| Configure(dtm_.get(), ModelTypeSet());
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| @@ -288,7 +355,7 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureOne) {
|
| AddController(BOOKMARKS);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| @@ -314,7 +381,8 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureOneStopWhileDownloadPending) {
|
|
|
| {
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::ABORTED);
|
| + SetConfigureDoneExpectation(DataTypeManager::ABORTED,
|
| + DataTypeStatusTable());
|
|
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| @@ -336,7 +404,8 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureOneStopWhileStartingModel) {
|
|
|
| {
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::ABORTED);
|
| + SetConfigureDoneExpectation(DataTypeManager::ABORTED,
|
| + DataTypeStatusTable());
|
|
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| @@ -364,7 +433,8 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureOneStopWhileAssociating) {
|
|
|
| {
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::ABORTED);
|
| + SetConfigureDoneExpectation(DataTypeManager::ABORTED,
|
| + DataTypeStatusTable());
|
|
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| @@ -394,7 +464,11 @@ TEST_F(SyncDataTypeManagerImplTest, OneWaitingForCrypto) {
|
| AddController(PASSWORDS);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK,
|
| + BuildStatusTable(ModelTypeSet(PASSWORDS),
|
| + ModelTypeSet(),
|
| + ModelTypeSet(),
|
| + ModelTypeSet()));
|
|
|
| const ModelTypeSet types(PASSWORDS);
|
| dtm_->set_priority_types(AddHighPriorityTypesTo(types));
|
| @@ -435,7 +509,7 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureOneThenBoth) {
|
| AddController(PREFERENCES);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Step 1.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| @@ -450,9 +524,9 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureOneThenBoth) {
|
| GetController(BOOKMARKS)->FinishStart(DataTypeController::OK);
|
| EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
|
|
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Step 4.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS, PREFERENCES));
|
| @@ -488,7 +562,7 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureOneThenSwitch) {
|
| AddController(PREFERENCES);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Step 1.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| @@ -503,9 +577,9 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureOneThenSwitch) {
|
| GetController(BOOKMARKS)->FinishStart(DataTypeController::OK);
|
| EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
|
|
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Step 4.
|
| Configure(dtm_.get(), ModelTypeSet(PREFERENCES));
|
| @@ -541,7 +615,7 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureWhileOneInFlight) {
|
| AddController(PREFERENCES);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Step 1.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| @@ -583,7 +657,11 @@ TEST_F(SyncDataTypeManagerImplTest, OneFailingController) {
|
| AddController(BOOKMARKS);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::UNRECOVERABLE_ERROR);
|
| + SetConfigureDoneExpectation(DataTypeManager::UNRECOVERABLE_ERROR,
|
| + BuildStatusTable(ModelTypeSet(),
|
| + ModelTypeSet(),
|
| + ModelTypeSet(),
|
| + ModelTypeSet(BOOKMARKS)));
|
|
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| @@ -612,7 +690,11 @@ TEST_F(SyncDataTypeManagerImplTest, SecondControllerFails) {
|
| AddController(PREFERENCES);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::UNRECOVERABLE_ERROR);
|
| + SetConfigureDoneExpectation(DataTypeManager::UNRECOVERABLE_ERROR,
|
| + BuildStatusTable(ModelTypeSet(),
|
| + ModelTypeSet(),
|
| + ModelTypeSet(),
|
| + ModelTypeSet(PREFERENCES)));
|
|
|
| // Step 1.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS, PREFERENCES));
|
| @@ -651,7 +733,11 @@ TEST_F(SyncDataTypeManagerImplTest, OneControllerFailsAssociation) {
|
| AddController(PREFERENCES);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK,
|
| + BuildStatusTable(ModelTypeSet(),
|
| + ModelTypeSet(PREFERENCES),
|
| + ModelTypeSet(),
|
| + ModelTypeSet()));
|
|
|
| // Step 1.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS, PREFERENCES));
|
| @@ -696,7 +782,7 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureWhileDownloadPending) {
|
| AddController(PREFERENCES);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Step 1.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| @@ -742,7 +828,7 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureWhileDownloadPendingWithFailure) {
|
| AddController(PREFERENCES);
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Step 1.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| @@ -780,7 +866,7 @@ TEST_F(SyncDataTypeManagerImplTest, MigrateAll) {
|
| dtm_->set_priority_types(AddHighPriorityTypesTo(ModelTypeSet(BOOKMARKS)));
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Initial setup.
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| @@ -789,7 +875,7 @@ TEST_F(SyncDataTypeManagerImplTest, MigrateAll) {
|
|
|
| // We've now configured bookmarks and (implicitly) the control types.
|
| EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
|
|
| // Pretend we were told to migrate all types.
|
| ModelTypeSet to_migrate;
|
| @@ -797,7 +883,7 @@ TEST_F(SyncDataTypeManagerImplTest, MigrateAll) {
|
| to_migrate.PutAll(syncer::ControlTypes());
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
| dtm_->PurgeForMigration(to_migrate,
|
| syncer::CONFIGURE_REASON_MIGRATION);
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| @@ -805,11 +891,11 @@ TEST_F(SyncDataTypeManagerImplTest, MigrateAll) {
|
| // The DTM will call ConfigureDataTypes(), even though it is unnecessary.
|
| FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet());
|
| EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
|
|
| // Re-enable the migrated types.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
| Configure(dtm_.get(), to_migrate);
|
| FinishDownload(*dtm_, to_migrate, ModelTypeSet());
|
| GetController(BOOKMARKS)->FinishStart(DataTypeController::OK);
|
| @@ -823,20 +909,20 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureDuringPurge) {
|
|
|
| // Initial configure.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet());
|
| FinishDownload(*dtm_, ModelTypeSet(BOOKMARKS), ModelTypeSet());
|
| GetController(BOOKMARKS)->FinishStart(DataTypeController::OK);
|
| EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
|
|
| // Purge the Nigori type.
|
| SetConfigureStartExpectation();
|
| dtm_->PurgeForMigration(ModelTypeSet(NIGORI),
|
| syncer::CONFIGURE_REASON_MIGRATION);
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
|
|
| // Before the backend configuration completes, ask for a different
|
| // set of types. This request asks for
|
| @@ -849,9 +935,9 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureDuringPurge) {
|
|
|
| // Invoke the callback we've been waiting for since we asked to purge NIGORI.
|
| FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet());
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
|
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
|
|
| // Now invoke the callback for the second configure request.
|
| @@ -871,11 +957,11 @@ TEST_F(SyncDataTypeManagerImplTest, PrioritizedConfiguration) {
|
| AddController(PREFERENCES);
|
|
|
| dtm_->set_priority_types(
|
| - AddHighPriorityTypesTo(syncer::ModelTypeSet(PREFERENCES)));
|
| + AddHighPriorityTypesTo(ModelTypeSet(PREFERENCES)));
|
|
|
| // Initial configure.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Initially only PREFERENCES is configured.
|
| configurer_.set_expected_configure_types(
|
| @@ -902,11 +988,11 @@ TEST_F(SyncDataTypeManagerImplTest, PrioritizedConfigurationReconfigure) {
|
| AddController(APPS);
|
|
|
| dtm_->set_priority_types(
|
| - AddHighPriorityTypesTo(syncer::ModelTypeSet(PREFERENCES)));
|
| + AddHighPriorityTypesTo(ModelTypeSet(PREFERENCES)));
|
|
|
| // Initial configure.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| // Reconfigure while associating PREFERENCES and downloading BOOKMARKS.
|
| configurer_.set_expected_configure_types(
|
| @@ -949,11 +1035,11 @@ TEST_F(SyncDataTypeManagerImplTest, PrioritizedConfigurationStop) {
|
| AddController(PREFERENCES);
|
|
|
| dtm_->set_priority_types(
|
| - AddHighPriorityTypesTo(syncer::ModelTypeSet(PREFERENCES)));
|
| + AddHighPriorityTypesTo(ModelTypeSet(PREFERENCES)));
|
|
|
| // Initial configure.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::ABORTED);
|
| + SetConfigureDoneExpectation(DataTypeManager::ABORTED, DataTypeStatusTable());
|
|
|
| // Initially only PREFERENCES is configured.
|
| configurer_.set_expected_configure_types(
|
| @@ -984,11 +1070,15 @@ TEST_F(SyncDataTypeManagerImplTest, PrioritizedConfigurationDownloadError) {
|
| AddController(PREFERENCES);
|
|
|
| dtm_->set_priority_types(
|
| - AddHighPriorityTypesTo(syncer::ModelTypeSet(PREFERENCES)));
|
| + AddHighPriorityTypesTo(ModelTypeSet(PREFERENCES)));
|
|
|
| // Initial configure.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::UNRECOVERABLE_ERROR);
|
| + SetConfigureDoneExpectation(DataTypeManager::UNRECOVERABLE_ERROR,
|
| + BuildStatusTable(ModelTypeSet(),
|
| + ModelTypeSet(),
|
| + ModelTypeSet(),
|
| + ModelTypeSet(BOOKMARKS)));
|
|
|
| // Initially only PREFERENCES is configured.
|
| configurer_.set_expected_configure_types(
|
| @@ -1020,11 +1110,15 @@ TEST_F(SyncDataTypeManagerImplTest, HighPriorityAssociationFailure) {
|
| AddController(BOOKMARKS); // Will succeed.
|
|
|
| dtm_->set_priority_types(
|
| - AddHighPriorityTypesTo(syncer::ModelTypeSet(PREFERENCES)));
|
| + AddHighPriorityTypesTo(ModelTypeSet(PREFERENCES)));
|
|
|
| // Initial configure.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK,
|
| + BuildStatusTable(ModelTypeSet(),
|
| + ModelTypeSet(PREFERENCES),
|
| + ModelTypeSet(),
|
| + ModelTypeSet()));
|
|
|
| // Initially only PREFERENCES is configured.
|
| configurer_.set_expected_configure_types(
|
| @@ -1072,11 +1166,15 @@ TEST_F(SyncDataTypeManagerImplTest, LowPriorityAssociationFailure) {
|
| AddController(BOOKMARKS); // Will fail.
|
|
|
| dtm_->set_priority_types(
|
| - AddHighPriorityTypesTo(syncer::ModelTypeSet(PREFERENCES)));
|
| + AddHighPriorityTypesTo(ModelTypeSet(PREFERENCES)));
|
|
|
| // Initial configure.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK,
|
| + BuildStatusTable(ModelTypeSet(),
|
| + ModelTypeSet(BOOKMARKS),
|
| + ModelTypeSet(),
|
| + ModelTypeSet()));
|
|
|
| // Initially only PREFERENCES is configured.
|
| configurer_.set_expected_configure_types(
|
| @@ -1125,9 +1223,9 @@ TEST_F(SyncDataTypeManagerImplTest, FilterDesiredTypes) {
|
| dtm_->set_priority_types(AddHighPriorityTypesTo(types));
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
|
|
| - syncer::ModelTypeSet expected_types = syncer::ControlTypes();
|
| + ModelTypeSet expected_types = syncer::ControlTypes();
|
| expected_types.Put(BOOKMARKS);
|
| // APPS is filtered out because there's no controller for it.
|
| configurer_.set_expected_configure_types(expected_types);
|
| @@ -1144,7 +1242,6 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureForBackupRollback) {
|
|
|
| SetConfigureStartExpectation();
|
|
|
| -
|
| ModelTypeSet expected_types = syncer::ControlTypes();
|
| expected_types.Put(BOOKMARKS);
|
| configurer_.set_expected_configure_types(expected_types);
|
| @@ -1155,32 +1252,32 @@ TEST_F(SyncDataTypeManagerImplTest, ConfigureForBackupRollback) {
|
| }
|
|
|
| TEST_F(SyncDataTypeManagerImplTest, ReenableAfterDataTypeError) {
|
| - syncer::SyncError error(FROM_HERE,
|
| - syncer::SyncError::DATATYPE_ERROR,
|
| - "Datatype disabled",
|
| - syncer::BOOKMARKS);
|
| - std::map<syncer::ModelType, syncer::SyncError> errors;
|
| - errors[syncer::BOOKMARKS] = error;
|
| - data_type_status_table_.UpdateFailedDataTypes(errors);
|
| -
|
| AddController(PREFERENCES); // Will succeed.
|
| AddController(BOOKMARKS); // Will be disabled due to datatype error.
|
|
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK,
|
| + BuildStatusTable(ModelTypeSet(),
|
| + ModelTypeSet(BOOKMARKS),
|
| + ModelTypeSet(),
|
| + ModelTypeSet()));
|
|
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS, PREFERENCES));
|
| FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet());
|
| - FinishDownload(*dtm_, ModelTypeSet(PREFERENCES), ModelTypeSet());
|
| + FinishDownload(*dtm_, ModelTypeSet(PREFERENCES, BOOKMARKS), ModelTypeSet());
|
| GetController(PREFERENCES)->FinishStart(DataTypeController::OK);
|
| + GetController(BOOKMARKS)
|
| + ->FinishStart(DataTypeController::ASSOCIATION_FAILED);
|
| + FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet()); // Reconfig for error.
|
| + FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet()); // Reconfig for error.
|
| EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
|
| EXPECT_EQ(DataTypeController::RUNNING, GetController(PREFERENCES)->state());
|
| EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state());
|
|
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
|
|
| // Re-enable bookmarks.
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
| dtm_->ReenableType(syncer::BOOKMARKS);
|
|
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
| @@ -1202,17 +1299,21 @@ TEST_F(SyncDataTypeManagerImplTest, UnreadyType) {
|
|
|
| // Bookmarks is never started due to being unready.
|
| SetConfigureStartExpectation();
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK,
|
| + BuildStatusTable(ModelTypeSet(),
|
| + ModelTypeSet(),
|
| + ModelTypeSet(BOOKMARKS),
|
| + ModelTypeSet()));
|
| Configure(dtm_.get(), ModelTypeSet(BOOKMARKS));
|
| FinishDownload(*dtm_, ModelTypeSet(), ModelTypeSet());
|
| EXPECT_EQ(DataTypeController::NOT_RUNNING, GetController(BOOKMARKS)->state());
|
| EXPECT_EQ(DataTypeManager::CONFIGURED, dtm_->state());
|
| EXPECT_EQ(0U, configurer_.activated_types().Size());
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
|
|
| // Bookmarks should start normally now.
|
| GetController(BOOKMARKS)->SetReadyForStart(true);
|
| - SetConfigureDoneExpectation(DataTypeManager::OK);
|
| + SetConfigureDoneExpectation(DataTypeManager::OK, DataTypeStatusTable());
|
| dtm_->ReenableType(BOOKMARKS);
|
| EXPECT_EQ(DataTypeManager::DOWNLOAD_PENDING, dtm_->state());
|
|
|
| @@ -1225,7 +1326,7 @@ TEST_F(SyncDataTypeManagerImplTest, UnreadyType) {
|
| EXPECT_EQ(1U, configurer_.activated_types().Size());
|
|
|
| // Should do nothing.
|
| - Mock::VerifyAndClearExpectations(&observer_);
|
| + observer_.ResetExpectations();
|
| dtm_->ReenableType(BOOKMARKS);
|
|
|
| dtm_->Stop();
|
|
|