| Index: sync/engine/directory_update_handler_unittest.cc
|
| diff --git a/sync/engine/directory_update_handler_unittest.cc b/sync/engine/directory_update_handler_unittest.cc
|
| index ec0a14ec2196acd9c0f3bc0cd0686ab3661c0c91..837e9f418c4e912e43d62bca5f4384069b468f2a 100644
|
| --- a/sync/engine/directory_update_handler_unittest.cc
|
| +++ b/sync/engine/directory_update_handler_unittest.cc
|
| @@ -86,6 +86,10 @@ class DirectoryUpdateHandlerProcessUpdateTest : public ::testing::Test {
|
| return e.good() && !e.GetIsDel();
|
| }
|
|
|
| + protected:
|
| + // Used in the construction of DirectoryTypeDebugInfoEmitters.
|
| + ObserverList<TypeDebugInfoObserver> type_observers_;
|
| +
|
| private:
|
| base::MessageLoop loop_; // Needed to initialize the directory.
|
| TestDirectorySetterUpper dir_maker_;
|
| @@ -125,7 +129,7 @@ static const char kCacheGuid[] = "IrcjZ2jyzHDV9Io4+zKcXQ==";
|
|
|
| // Test that the bookmark tag is set on newly downloaded items.
|
| TEST_F(DirectoryUpdateHandlerProcessUpdateTest, NewBookmarkTag) {
|
| - DirectoryTypeDebugInfoEmitter emitter;
|
| + DirectoryTypeDebugInfoEmitter emitter(BOOKMARKS, &type_observers_);
|
| DirectoryUpdateHandler handler(dir(), BOOKMARKS, ui_worker(), &emitter);
|
| sync_pb::GetUpdatesResponse gu_response;
|
| sessions::StatusController status;
|
| @@ -164,7 +168,7 @@ TEST_F(DirectoryUpdateHandlerProcessUpdateTest, NewBookmarkTag) {
|
| // Test the receipt of a type root node.
|
| TEST_F(DirectoryUpdateHandlerProcessUpdateTest,
|
| ReceiveServerCreatedBookmarkFolders) {
|
| - DirectoryTypeDebugInfoEmitter emitter;
|
| + DirectoryTypeDebugInfoEmitter emitter(BOOKMARKS, &type_observers_);
|
| DirectoryUpdateHandler handler(dir(), BOOKMARKS, ui_worker(), &emitter);
|
| sync_pb::GetUpdatesResponse gu_response;
|
| sessions::StatusController status;
|
| @@ -199,7 +203,7 @@ TEST_F(DirectoryUpdateHandlerProcessUpdateTest,
|
|
|
| // Test the receipt of a non-bookmark item.
|
| TEST_F(DirectoryUpdateHandlerProcessUpdateTest, ReceiveNonBookmarkItem) {
|
| - DirectoryTypeDebugInfoEmitter emitter;
|
| + DirectoryTypeDebugInfoEmitter emitter(AUTOFILL, &type_observers_);
|
| DirectoryUpdateHandler handler(dir(), AUTOFILL, ui_worker(), &emitter);
|
| sync_pb::GetUpdatesResponse gu_response;
|
| sessions::StatusController status;
|
| @@ -231,7 +235,7 @@ TEST_F(DirectoryUpdateHandlerProcessUpdateTest, ReceiveNonBookmarkItem) {
|
|
|
| // Tests the setting of progress markers.
|
| TEST_F(DirectoryUpdateHandlerProcessUpdateTest, ProcessNewProgressMarkers) {
|
| - DirectoryTypeDebugInfoEmitter emitter;
|
| + DirectoryTypeDebugInfoEmitter emitter(BOOKMARKS, &type_observers_);
|
| DirectoryUpdateHandler handler(dir(), BOOKMARKS, ui_worker(), &emitter);
|
|
|
| sync_pb::DataTypeProgressMarker progress;
|
| @@ -248,7 +252,7 @@ TEST_F(DirectoryUpdateHandlerProcessUpdateTest, ProcessNewProgressMarkers) {
|
| }
|
|
|
| TEST_F(DirectoryUpdateHandlerProcessUpdateTest, GarbageCollectionByVersion) {
|
| - DirectoryTypeDebugInfoEmitter emitter;
|
| + DirectoryTypeDebugInfoEmitter emitter(SYNCED_NOTIFICATIONS, &type_observers_);
|
| DirectoryUpdateHandler handler(dir(), SYNCED_NOTIFICATIONS,
|
| ui_worker(), &emitter);
|
| sessions::StatusController status;
|
| @@ -313,7 +317,7 @@ TEST_F(DirectoryUpdateHandlerProcessUpdateTest, GarbageCollectionByVersion) {
|
| }
|
|
|
| TEST_F(DirectoryUpdateHandlerProcessUpdateTest, ContextVersion) {
|
| - DirectoryTypeDebugInfoEmitter emitter;
|
| + DirectoryTypeDebugInfoEmitter emitter(SYNCED_NOTIFICATIONS, &type_observers_);
|
| DirectoryUpdateHandler handler(dir(), SYNCED_NOTIFICATIONS,
|
| ui_worker(), &emitter);
|
| sessions::StatusController status;
|
| @@ -413,6 +417,8 @@ class DirectoryUpdateHandlerApplyUpdateTest : public ::testing::Test {
|
| : ui_worker_(new FakeModelWorker(GROUP_UI)),
|
| password_worker_(new FakeModelWorker(GROUP_PASSWORD)),
|
| passive_worker_(new FakeModelWorker(GROUP_PASSIVE)),
|
| + bookmarks_emitter_(BOOKMARKS, &type_observers_),
|
| + passwords_emitter_(PASSWORDS, &type_observers_),
|
| update_handler_map_deleter_(&update_handler_map_) {}
|
|
|
| virtual void SetUp() OVERRIDE {
|
| @@ -435,6 +441,14 @@ class DirectoryUpdateHandlerApplyUpdateTest : public ::testing::Test {
|
| dir_maker_.TearDown();
|
| }
|
|
|
| + const UpdateCounters& GetBookmarksUpdateCounters() {
|
| + return bookmarks_emitter_.GetUpdateCounters();
|
| + }
|
| +
|
| + const UpdateCounters& GetPasswordsUpdateCounters() {
|
| + return passwords_emitter_.GetUpdateCounters();
|
| + }
|
| +
|
| protected:
|
| void ApplyBookmarkUpdates(sessions::StatusController* status) {
|
| update_handler_map_[BOOKMARKS]->ApplyUpdates(status);
|
| @@ -463,6 +477,7 @@ class DirectoryUpdateHandlerApplyUpdateTest : public ::testing::Test {
|
| scoped_refptr<FakeModelWorker> password_worker_;
|
| scoped_refptr<FakeModelWorker> passive_worker_;
|
|
|
| + ObserverList<TypeDebugInfoObserver> type_observers_;
|
| DirectoryTypeDebugInfoEmitter bookmarks_emitter_;
|
| DirectoryTypeDebugInfoEmitter passwords_emitter_;
|
|
|
| @@ -492,11 +507,12 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest, SimpleBookmark) {
|
|
|
| ApplyBookmarkUpdates(&status);
|
|
|
| - EXPECT_EQ(0, status.num_encryption_conflicts())
|
| + const UpdateCounters& counter = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(0, counter.num_encryption_conflict_application_failures)
|
| << "Simple update shouldn't result in conflicts";
|
| - EXPECT_EQ(0, status.num_hierarchy_conflicts())
|
| + EXPECT_EQ(0, counter.num_hierarchy_conflict_application_failures)
|
| << "Simple update shouldn't result in conflicts";
|
| - EXPECT_EQ(2, status.num_updates_applied())
|
| + EXPECT_EQ(2, counter.num_updates_applied)
|
| << "All items should have been successfully applied";
|
|
|
| {
|
| @@ -588,9 +604,11 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest, SimpleBookmarkConflict) {
|
|
|
| sessions::StatusController status;
|
| ApplyBookmarkUpdates(&status);
|
| - EXPECT_EQ(1, status.num_server_overwrites())
|
| +
|
| + const UpdateCounters& counters = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(1, counters.num_server_overwrites)
|
| << "Unsynced and unapplied item conflict should be resolved";
|
| - EXPECT_EQ(0, status.num_updates_applied())
|
| + EXPECT_EQ(0, counters.num_updates_applied)
|
| << "Update should not be applied; we should override the server.";
|
|
|
| {
|
| @@ -626,9 +644,11 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest, HierarchyAndSimpleConflict) {
|
|
|
| sessions::StatusController status;
|
| ApplyBookmarkUpdates(&status);
|
| - EXPECT_EQ(0, status.num_updates_applied());
|
| - EXPECT_EQ(0, status.num_server_overwrites());
|
| - EXPECT_EQ(1, status.num_hierarchy_conflicts());
|
| +
|
| + const UpdateCounters& counters = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(0, counters.num_updates_applied);
|
| + EXPECT_EQ(0, counters.num_server_overwrites);
|
| + EXPECT_EQ(1, counters.num_hierarchy_conflict_application_failures);
|
|
|
| {
|
| syncable::ReadTransaction trans(FROM_HERE, directory());
|
| @@ -673,7 +693,8 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest, BookmarkFolderLoop) {
|
| ApplyBookmarkUpdates(&status);
|
|
|
| // This should count as a hierarchy conflict.
|
| - EXPECT_EQ(1, status.num_hierarchy_conflicts());
|
| + const UpdateCounters& counters = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(1, counters.num_hierarchy_conflict_application_failures);
|
|
|
| {
|
| syncable::ReadTransaction trans(FROM_HERE, directory());
|
| @@ -711,7 +732,8 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest,
|
|
|
| sessions::StatusController status;
|
| ApplyBookmarkUpdates(&status);
|
| - EXPECT_EQ(1, status.num_hierarchy_conflicts());
|
| + const UpdateCounters& counters = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(1, counters.num_hierarchy_conflict_application_failures);
|
|
|
| {
|
| syncable::ReadTransaction trans(FROM_HERE, directory());
|
| @@ -755,7 +777,8 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest,
|
| ApplyBookmarkUpdates(&status);
|
|
|
| // This should count as a hierarchy conflict.
|
| - EXPECT_EQ(1, status.num_hierarchy_conflicts());
|
| + const UpdateCounters& counters = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(1, counters.num_hierarchy_conflict_application_failures);
|
|
|
| {
|
| syncable::ReadTransaction trans(FROM_HERE, directory());
|
| @@ -779,9 +802,10 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest,
|
| sessions::StatusController status;
|
| ApplyBookmarkUpdates(&status);
|
|
|
| - EXPECT_EQ(2, status.num_hierarchy_conflicts())
|
| + const UpdateCounters& counters = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(2, counters.num_hierarchy_conflict_application_failures)
|
| << "All updates with an unknown ancestors should be in conflict";
|
| - EXPECT_EQ(0, status.num_updates_applied())
|
| + EXPECT_EQ(0, counters.num_updates_applied)
|
| << "No item with an unknown ancestor should be applied";
|
|
|
| {
|
| @@ -818,9 +842,10 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest, ItemsBothKnownAndUnknown) {
|
| sessions::StatusController status;
|
| ApplyBookmarkUpdates(&status);
|
|
|
| - EXPECT_EQ(2, status.num_hierarchy_conflicts())
|
| + const UpdateCounters& counters = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(2, counters.num_hierarchy_conflict_application_failures)
|
| << "The updates with unknown ancestors should be in conflict";
|
| - EXPECT_EQ(4, status.num_updates_applied())
|
| + EXPECT_EQ(4, counters.num_updates_applied)
|
| << "The updates with known ancestors should be successfully applied";
|
|
|
| {
|
| @@ -872,7 +897,8 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest, DecryptablePassword) {
|
| sessions::StatusController status;
|
| ApplyPasswordUpdates(&status);
|
|
|
| - EXPECT_EQ(1, status.num_updates_applied())
|
| + const UpdateCounters& counters = GetPasswordsUpdateCounters();
|
| + EXPECT_EQ(1, counters.num_updates_applied)
|
| << "The updates that can be decrypted should be applied";
|
|
|
| {
|
| @@ -910,9 +936,16 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest, UndecryptableData) {
|
| ApplyBookmarkUpdates(&status);
|
| ApplyPasswordUpdates(&status);
|
|
|
| - EXPECT_EQ(3, status.num_encryption_conflicts())
|
| + const UpdateCounters& bm_counters = GetBookmarksUpdateCounters();
|
| + EXPECT_EQ(2, bm_counters.num_encryption_conflict_application_failures)
|
| + << "Updates that can't be decrypted should be in encryption conflict";
|
| + EXPECT_EQ(0, bm_counters.num_updates_applied)
|
| + << "No update that can't be decrypted should be applied";
|
| +
|
| + const UpdateCounters& pw_counters = GetPasswordsUpdateCounters();
|
| + EXPECT_EQ(1, pw_counters.num_encryption_conflict_application_failures)
|
| << "Updates that can't be decrypted should be in encryption conflict";
|
| - EXPECT_EQ(0, status.num_updates_applied())
|
| + EXPECT_EQ(0, pw_counters.num_updates_applied)
|
| << "No update that can't be decrypted should be applied";
|
|
|
| {
|
| @@ -973,10 +1006,11 @@ TEST_F(DirectoryUpdateHandlerApplyUpdateTest, SomeUndecryptablePassword) {
|
| sessions::StatusController status;
|
| ApplyPasswordUpdates(&status);
|
|
|
| - EXPECT_EQ(1, status.num_encryption_conflicts())
|
| + const UpdateCounters& counters = GetPasswordsUpdateCounters();
|
| + EXPECT_EQ(1, counters.num_encryption_conflict_application_failures)
|
| << "The updates that can't be decrypted should be in encryption "
|
| << "conflict";
|
| - EXPECT_EQ(1, status.num_updates_applied())
|
| + EXPECT_EQ(1, counters.num_updates_applied)
|
| << "The undecryptable password update shouldn't be applied";
|
|
|
| {
|
|
|