Chromium Code Reviews| 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; |
|
Nicolas Zea
2014/06/02 22:02:04
nit: initialize to false
pval...(no longer on Chromium)
2014/06/02 23:06:54
Done.
| |
| 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 |