Index: chrome/browser/sync/sessions/sync_session_unittest.cc |
diff --git a/chrome/browser/sync/sessions/sync_session_unittest.cc b/chrome/browser/sync/sessions/sync_session_unittest.cc |
index 9bb1e3be80ef7427afdd08245b671210f00444a8..681c0ad4027f0057d01b10e2885f6c2a2af68aa6 100644 |
--- a/chrome/browser/sync/sessions/sync_session_unittest.cc |
+++ b/chrome/browser/sync/sessions/sync_session_unittest.cc |
@@ -4,7 +4,9 @@ |
#include "chrome/browser/sync/sessions/sync_session.h" |
+#include "base/ref_counted.h" |
#include "chrome/browser/sync/engine/conflict_resolver.h" |
+#include "chrome/browser/sync/engine/mock_model_safe_workers.h" |
#include "chrome/browser/sync/engine/syncer_types.h" |
#include "chrome/browser/sync/engine/syncer_util.h" |
#include "chrome/browser/sync/syncable/directory_manager.h" |
@@ -108,7 +110,7 @@ TEST_F(SyncSessionTest, ScopedContextHelpers) { |
TEST_F(SyncSessionTest, SetWriteTransaction) { |
TestDirectorySetterUpper db; |
db.SetUp(); |
- session_.reset(NULL); |
+ session_.reset(); |
context_.reset(new SyncSessionContext(NULL, db.manager(), this, |
std::vector<SyncEngineEventListener*>())); |
session_.reset(MakeSession()); |
@@ -250,6 +252,47 @@ TEST_F(SyncSessionTest, MoreToSyncIfConflictsResolved) { |
EXPECT_TRUE(session_->HasMoreToSync()); |
} |
+TEST_F(SyncSessionTest, ResetTransientState) { |
+ status()->update_conflicts_resolved(true); |
+ status()->increment_num_successful_commits(); |
+ EXPECT_TRUE(session_->HasMoreToSync()); |
+ session_->ResetTransientState(); |
+ EXPECT_FALSE(status()->conflicts_resolved()); |
+ EXPECT_FALSE(session_->HasMoreToSync()); |
+ EXPECT_FALSE(status()->TestAndClearIsDirty()); |
+} |
+ |
+TEST_F(SyncSessionTest, Coalesce) { |
+ std::vector<ModelSafeWorker*> workers_one, workers_two; |
+ ModelSafeRoutingInfo routes_one, routes_two; |
+ SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, |
+ ParamsMeaningJustOneEnabledType()); |
+ SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, |
+ ParamsMeaningAllEnabledTypes()); |
+ scoped_refptr<MockDBModelWorker> db_worker(new MockDBModelWorker()); |
+ scoped_refptr<MockUIModelWorker> ui_worker(new MockUIModelWorker()); |
+ workers_one.push_back(db_worker); |
+ workers_two.push_back(db_worker); |
+ workers_two.push_back(ui_worker); |
+ routes_one[syncable::AUTOFILL] = GROUP_DB; |
+ routes_two[syncable::AUTOFILL] = GROUP_DB; |
+ routes_two[syncable::BOOKMARKS] = GROUP_UI; |
+ SyncSession one(context_.get(), this, source_one, routes_one, workers_one); |
+ SyncSession two(context_.get(), this, source_two, routes_two, workers_two); |
+ |
+ one.Coalesce(two); |
+ |
+ EXPECT_EQ(two.source().first, one.source().first); |
+ EXPECT_EQ(ParamsMeaningAllEnabledTypes(), one.source().second); |
+ std::vector<ModelSafeWorker*>::const_iterator it_db = |
+ std::find(one.workers().begin(), one.workers().end(), db_worker); |
+ std::vector<ModelSafeWorker*>::const_iterator it_ui = |
+ std::find(one.workers().begin(), one.workers().end(), ui_worker); |
+ EXPECT_NE(it_db, one.workers().end()); |
+ EXPECT_NE(it_ui, one.workers().end()); |
+ EXPECT_EQ(routes_two, one.routing_info()); |
+} |
+ |
} // namespace |
} // namespace sessions |
} // namespace browser_sync |