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 |