OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "sync/test/fake_server/fake_server.h" | 5 #include "sync/test/fake_server/fake_server.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "sync/test/fake_server/tombstone_entity.h" | 27 #include "sync/test/fake_server/tombstone_entity.h" |
28 #include "sync/test/fake_server/unique_client_entity.h" | 28 #include "sync/test/fake_server/unique_client_entity.h" |
29 | 29 |
30 using std::string; | 30 using std::string; |
31 using std::vector; | 31 using std::vector; |
32 | 32 |
33 using syncer::GetModelType; | 33 using syncer::GetModelType; |
34 using syncer::ModelType; | 34 using syncer::ModelType; |
35 using syncer::ModelTypeSet; | 35 using syncer::ModelTypeSet; |
36 | 36 |
37 // The default birthday value. | 37 // The default store birthday value. |
38 static const char kDefaultBirthday[] = "1234567890"; | 38 static const char kDefaultStoreBirthday[] = "1234567890"; |
39 | 39 |
40 // The default keystore key. | 40 // The default keystore key. |
41 static const char kDefaultKeystoreKey[] = "1111111111111111"; | 41 static const char kDefaultKeystoreKey[] = "1111111111111111"; |
42 | 42 |
43 namespace fake_server { | 43 namespace fake_server { |
44 | 44 |
45 class FakeServerEntity; | 45 class FakeServerEntity; |
46 | 46 |
47 namespace { | 47 namespace { |
48 | 48 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 if (version < min_version) | 138 if (version < min_version) |
139 min_version = version; | 139 min_version = version; |
140 } | 140 } |
141 | 141 |
142 return scoped_ptr<UpdateSieve>( | 142 return scoped_ptr<UpdateSieve>( |
143 new UpdateSieve(request_from_version, min_version)); | 143 new UpdateSieve(request_from_version, min_version)); |
144 } | 144 } |
145 | 145 |
146 } // namespace | 146 } // namespace |
147 | 147 |
148 FakeServer::FakeServer() : version_(0), birthday_(kDefaultBirthday) { | 148 FakeServer::FakeServer() : version_(0), store_birthday_(kDefaultStoreBirthday) { |
149 keystore_keys_.push_back(kDefaultKeystoreKey); | 149 keystore_keys_.push_back(kDefaultKeystoreKey); |
150 CHECK(CreateDefaultPermanentItems()); | 150 CHECK(CreateDefaultPermanentItems()); |
151 } | 151 } |
152 | 152 |
153 FakeServer::~FakeServer() { | 153 FakeServer::~FakeServer() { |
154 STLDeleteContainerPairSecondPointers(entities_.begin(), entities_.end()); | 154 STLDeleteContainerPairSecondPointers(entities_.begin(), entities_.end()); |
155 } | 155 } |
156 | 156 |
157 bool FakeServer::CreateDefaultPermanentItems() { | 157 bool FakeServer::CreateDefaultPermanentItems() { |
158 ModelTypeSet all_types = syncer::ProtocolTypes(); | 158 ModelTypeSet all_types = syncer::ProtocolTypes(); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 entity->SetVersion(++version_); | 211 entity->SetVersion(++version_); |
212 entities_[entity->GetId()] = entity; | 212 entities_[entity->GetId()] = entity; |
213 } | 213 } |
214 | 214 |
215 void FakeServer::HandleCommand(const string& request, | 215 void FakeServer::HandleCommand(const string& request, |
216 const HandleCommandCallback& callback) { | 216 const HandleCommandCallback& callback) { |
217 sync_pb::ClientToServerMessage message; | 217 sync_pb::ClientToServerMessage message; |
218 bool parsed = message.ParseFromString(request); | 218 bool parsed = message.ParseFromString(request); |
219 DCHECK(parsed); | 219 DCHECK(parsed); |
220 | 220 |
| 221 sync_pb::SyncEnums_ErrorType error_code; |
221 sync_pb::ClientToServerResponse response_proto; | 222 sync_pb::ClientToServerResponse response_proto; |
222 bool success; | 223 |
223 switch (message.message_contents()) { | 224 if (message.has_store_birthday() && |
224 case sync_pb::ClientToServerMessage::GET_UPDATES: | 225 message.store_birthday() != store_birthday_) { |
225 success = HandleGetUpdatesRequest(message.get_updates(), | 226 error_code = sync_pb::SyncEnums::NOT_MY_BIRTHDAY; |
226 response_proto.mutable_get_updates()); | 227 } else { |
227 break; | 228 bool success = false; |
228 case sync_pb::ClientToServerMessage::COMMIT: | 229 switch (message.message_contents()) { |
229 success = HandleCommitRequest(message.commit(), | 230 case sync_pb::ClientToServerMessage::GET_UPDATES: |
230 message.invalidator_client_id(), | 231 success = HandleGetUpdatesRequest(message.get_updates(), |
231 response_proto.mutable_commit()); | 232 response_proto.mutable_get_updates()); |
232 break; | 233 break; |
233 default: | 234 case sync_pb::ClientToServerMessage::COMMIT: |
234 callback.Run(net::ERR_NOT_IMPLEMENTED, 0, string());; | 235 success = HandleCommitRequest(message.commit(), |
| 236 message.invalidator_client_id(), |
| 237 response_proto.mutable_commit()); |
| 238 break; |
| 239 default: |
| 240 callback.Run(net::ERR_NOT_IMPLEMENTED, 0, string());; |
| 241 return; |
| 242 } |
| 243 |
| 244 if (!success) { |
| 245 // TODO(pvalenzuela): Add logging here so that tests have more info about |
| 246 // the failure. |
| 247 callback.Run(net::ERR_FAILED, 0, string()); |
235 return; | 248 return; |
| 249 } |
| 250 |
| 251 error_code = sync_pb::SyncEnums::SUCCESS; |
236 } | 252 } |
237 | 253 |
238 if (!success) { | 254 response_proto.set_error_code(error_code); |
239 // TODO(pvalenzuela): Add logging here so that tests have more info about | 255 response_proto.set_store_birthday(store_birthday_); |
240 // the failure. | |
241 callback.Run(net::ERR_FAILED, 0, string()); | |
242 return; | |
243 } | |
244 | |
245 response_proto.set_error_code(sync_pb::SyncEnums::SUCCESS); | |
246 response_proto.set_store_birthday(birthday_); | |
247 callback.Run(0, net::HTTP_OK, response_proto.SerializeAsString()); | 256 callback.Run(0, net::HTTP_OK, response_proto.SerializeAsString()); |
248 } | 257 } |
249 | 258 |
250 bool FakeServer::HandleGetUpdatesRequest( | 259 bool FakeServer::HandleGetUpdatesRequest( |
251 const sync_pb::GetUpdatesMessage& get_updates, | 260 const sync_pb::GetUpdatesMessage& get_updates, |
252 sync_pb::GetUpdatesResponse* response) { | 261 sync_pb::GetUpdatesResponse* response) { |
253 // TODO(pvalenzuela): Implement batching instead of sending all information | 262 // TODO(pvalenzuela): Implement batching instead of sending all information |
254 // at once. | 263 // at once. |
255 response->set_changes_remaining(0); | 264 response->set_changes_remaining(0); |
256 | 265 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 list_value->Append(new base::StringValue(entity->GetName())); | 475 list_value->Append(new base::StringValue(entity->GetName())); |
467 } | 476 } |
468 | 477 |
469 return dictionary.Pass(); | 478 return dictionary.Pass(); |
470 } | 479 } |
471 | 480 |
472 void FakeServer::InjectEntity(scoped_ptr<FakeServerEntity> entity) { | 481 void FakeServer::InjectEntity(scoped_ptr<FakeServerEntity> entity) { |
473 SaveEntity(entity.release()); | 482 SaveEntity(entity.release()); |
474 } | 483 } |
475 | 484 |
| 485 bool FakeServer::SetNewStoreBirthday(const string& store_birthday) { |
| 486 if (store_birthday_ == store_birthday) |
| 487 return false; |
| 488 |
| 489 store_birthday_ = store_birthday; |
| 490 return true; |
| 491 } |
| 492 |
476 void FakeServer::AddObserver(Observer* observer) { | 493 void FakeServer::AddObserver(Observer* observer) { |
477 observers_.AddObserver(observer); | 494 observers_.AddObserver(observer); |
478 } | 495 } |
479 | 496 |
480 void FakeServer::RemoveObserver(Observer* observer) { | 497 void FakeServer::RemoveObserver(Observer* observer) { |
481 observers_.RemoveObserver(observer); | 498 observers_.RemoveObserver(observer); |
482 } | 499 } |
483 | 500 |
484 } // namespace fake_server | 501 } // namespace fake_server |
OLD | NEW |