| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync/sessions/sync_session.h" | 5 #include "chrome/browser/sync/sessions/sync_session.h" |
| 6 | 6 |
| 7 #include "base/ref_counted.h" |
| 7 #include "chrome/browser/sync/engine/conflict_resolver.h" | 8 #include "chrome/browser/sync/engine/conflict_resolver.h" |
| 9 #include "chrome/browser/sync/engine/mock_model_safe_workers.h" |
| 8 #include "chrome/browser/sync/engine/syncer_types.h" | 10 #include "chrome/browser/sync/engine/syncer_types.h" |
| 9 #include "chrome/browser/sync/engine/syncer_util.h" | 11 #include "chrome/browser/sync/engine/syncer_util.h" |
| 10 #include "chrome/browser/sync/syncable/directory_manager.h" | 12 #include "chrome/browser/sync/syncable/directory_manager.h" |
| 11 #include "chrome/browser/sync/syncable/syncable.h" | 13 #include "chrome/browser/sync/syncable/syncable.h" |
| 12 #include "chrome/test/sync/engine/test_directory_setter_upper.h" | 14 #include "chrome/test/sync/engine/test_directory_setter_upper.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 16 |
| 15 using syncable::WriteTransaction; | 17 using syncable::WriteTransaction; |
| 16 | 18 |
| 17 namespace browser_sync { | 19 namespace browser_sync { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 { | 103 { |
| 102 ScopedSessionContextConflictResolver s_resolver(context_.get(), &resolver); | 104 ScopedSessionContextConflictResolver s_resolver(context_.get(), &resolver); |
| 103 EXPECT_EQ(&resolver, context_->resolver()); | 105 EXPECT_EQ(&resolver, context_->resolver()); |
| 104 } | 106 } |
| 105 EXPECT_FALSE(context_->resolver()); | 107 EXPECT_FALSE(context_->resolver()); |
| 106 } | 108 } |
| 107 | 109 |
| 108 TEST_F(SyncSessionTest, SetWriteTransaction) { | 110 TEST_F(SyncSessionTest, SetWriteTransaction) { |
| 109 TestDirectorySetterUpper db; | 111 TestDirectorySetterUpper db; |
| 110 db.SetUp(); | 112 db.SetUp(); |
| 111 session_.reset(NULL); | 113 session_.reset(); |
| 112 context_.reset(new SyncSessionContext(NULL, db.manager(), this, | 114 context_.reset(new SyncSessionContext(NULL, db.manager(), this, |
| 113 std::vector<SyncEngineEventListener*>())); | 115 std::vector<SyncEngineEventListener*>())); |
| 114 session_.reset(MakeSession()); | 116 session_.reset(MakeSession()); |
| 115 context_->set_account_name(db.name()); | 117 context_->set_account_name(db.name()); |
| 116 syncable::ScopedDirLookup dir(context_->directory_manager(), | 118 syncable::ScopedDirLookup dir(context_->directory_manager(), |
| 117 context_->account_name()); | 119 context_->account_name()); |
| 118 ASSERT_TRUE(dir.good()); | 120 ASSERT_TRUE(dir.good()); |
| 119 | 121 |
| 120 scoped_ptr<SyncSession> session(MakeSession()); | 122 scoped_ptr<SyncSession> session(MakeSession()); |
| 121 EXPECT_TRUE(NULL == session->write_transaction()); | 123 EXPECT_TRUE(NULL == session->write_transaction()); |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 } | 245 } |
| 244 | 246 |
| 245 TEST_F(SyncSessionTest, MoreToSyncIfConflictsResolved) { | 247 TEST_F(SyncSessionTest, MoreToSyncIfConflictsResolved) { |
| 246 // Conflict resolution happens after get updates and commit, | 248 // Conflict resolution happens after get updates and commit, |
| 247 // so we need to loop back and get updates / commit again now | 249 // so we need to loop back and get updates / commit again now |
| 248 // that we have made forward progress. | 250 // that we have made forward progress. |
| 249 status()->update_conflicts_resolved(true); | 251 status()->update_conflicts_resolved(true); |
| 250 EXPECT_TRUE(session_->HasMoreToSync()); | 252 EXPECT_TRUE(session_->HasMoreToSync()); |
| 251 } | 253 } |
| 252 | 254 |
| 255 TEST_F(SyncSessionTest, ResetTransientState) { |
| 256 status()->update_conflicts_resolved(true); |
| 257 status()->increment_num_successful_commits(); |
| 258 EXPECT_TRUE(session_->HasMoreToSync()); |
| 259 session_->ResetTransientState(); |
| 260 EXPECT_FALSE(status()->conflicts_resolved()); |
| 261 EXPECT_FALSE(session_->HasMoreToSync()); |
| 262 EXPECT_FALSE(status()->TestAndClearIsDirty()); |
| 263 } |
| 264 |
| 265 TEST_F(SyncSessionTest, Coalesce) { |
| 266 std::vector<ModelSafeWorker*> workers_one, workers_two; |
| 267 ModelSafeRoutingInfo routes_one, routes_two; |
| 268 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC, |
| 269 ParamsMeaningJustOneEnabledType()); |
| 270 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL, |
| 271 ParamsMeaningAllEnabledTypes()); |
| 272 scoped_refptr<MockDBModelWorker> db_worker(new MockDBModelWorker()); |
| 273 scoped_refptr<MockUIModelWorker> ui_worker(new MockUIModelWorker()); |
| 274 workers_one.push_back(db_worker); |
| 275 workers_two.push_back(db_worker); |
| 276 workers_two.push_back(ui_worker); |
| 277 routes_one[syncable::AUTOFILL] = GROUP_DB; |
| 278 routes_two[syncable::AUTOFILL] = GROUP_DB; |
| 279 routes_two[syncable::BOOKMARKS] = GROUP_UI; |
| 280 SyncSession one(context_.get(), this, source_one, routes_one, workers_one); |
| 281 SyncSession two(context_.get(), this, source_two, routes_two, workers_two); |
| 282 |
| 283 one.Coalesce(two); |
| 284 |
| 285 EXPECT_EQ(two.source().first, one.source().first); |
| 286 EXPECT_EQ(ParamsMeaningAllEnabledTypes(), one.source().second); |
| 287 std::vector<ModelSafeWorker*>::const_iterator it_db = |
| 288 std::find(one.workers().begin(), one.workers().end(), db_worker); |
| 289 std::vector<ModelSafeWorker*>::const_iterator it_ui = |
| 290 std::find(one.workers().begin(), one.workers().end(), ui_worker); |
| 291 EXPECT_NE(it_db, one.workers().end()); |
| 292 EXPECT_NE(it_ui, one.workers().end()); |
| 293 EXPECT_EQ(routes_two, one.routing_info()); |
| 294 } |
| 295 |
| 253 } // namespace | 296 } // namespace |
| 254 } // namespace sessions | 297 } // namespace sessions |
| 255 } // namespace browser_sync | 298 } // namespace browser_sync |
| OLD | NEW |