Index: sync/test/fake_server/fake_server.cc |
diff --git a/sync/test/fake_server/fake_server.cc b/sync/test/fake_server/fake_server.cc |
index 3827a85f99291a7e4c872c4f0a8fdf9d5d676dc6..b915c7f547d071d72af27b8d17e5ca26c5b4b553 100644 |
--- a/sync/test/fake_server/fake_server.cc |
+++ b/sync/test/fake_server/fake_server.cc |
@@ -4,6 +4,7 @@ |
#include "sync/test/fake_server/fake_server.h" |
+#include <algorithm> |
#include <limits> |
#include <string> |
#include <vector> |
@@ -29,9 +30,9 @@ |
using std::string; |
using std::vector; |
-using base::AutoLock; |
using syncer::GetModelType; |
using syncer::ModelType; |
+using syncer::ModelTypeSet; |
// The default birthday value. |
static const char kDefaultBirthday[] = "1234567890"; |
@@ -237,11 +238,11 @@ void FakeServer::SaveEntity(FakeServerEntity* entity) { |
entities_[entity->GetId()] = entity; |
} |
-int FakeServer::HandleCommand(const string& request, |
- int* response_code, |
- string* response) { |
- AutoLock lock(lock_); |
- |
+void FakeServer::HandleCommand(const string& request, |
+ const base::Closure& callback, |
+ int* error_code, |
+ int* response_code, |
+ string* response) { |
sync_pb::ClientToServerMessage message; |
bool parsed = message.ParseFromString(request); |
DCHECK(parsed); |
@@ -258,20 +259,25 @@ int FakeServer::HandleCommand(const string& request, |
response_proto.mutable_commit()); |
break; |
default: |
- return net::ERR_NOT_IMPLEMENTED; |
+ *error_code = net::ERR_NOT_IMPLEMENTED; |
+ callback.Run(); |
+ return; |
} |
if (!success) { |
// TODO(pvalenzuela): Add logging here so that tests have more info about |
// the failure. |
- return net::HTTP_BAD_REQUEST; |
pval...(no longer on Chromium)
2014/04/24 01:08:53
this value was incorrect (it's the error code, not
|
+ *error_code = net::HTTP_BAD_REQUEST; |
+ callback.Run(); |
+ return; |
} |
response_proto.set_error_code(sync_pb::SyncEnums::SUCCESS); |
response_proto.set_store_birthday(birthday_); |
*response_code = net::HTTP_OK; |
*response = response_proto.SerializeAsString(); |
- return 0; |
+ *error_code = 0; |
+ callback.Run(); |
} |
bool FakeServer::HandleGetUpdatesRequest( |
@@ -327,6 +333,7 @@ bool FakeServer::CommitEntity( |
const sync_pb::SyncEntity& client_entity, |
sync_pb::CommitResponse_EntryResponse* entry_response, |
string client_guid, |
+ ModelType* model_type, |
rlarocque
2014/04/22 18:22:22
This is starting to look a little awkward. Could
pval...(no longer on Chromium)
2014/04/24 01:08:53
done / looks good to me
|
std::map<string, string>* client_to_server_ids) { |
if (client_entity.version() == 0 && client_entity.deleted()) { |
return false; |
@@ -384,6 +391,7 @@ bool FakeServer::CommitEntity( |
SaveEntity(entity); |
BuildEntryResponseForSuccessfulCommit(entry_response, entity); |
+ *model_type = entity->GetModelType(); |
return true; |
} |
@@ -441,6 +449,7 @@ bool FakeServer::HandleCommitRequest( |
sync_pb::CommitResponse* response) { |
std::map<string, string> client_to_server_ids; |
string guid = commit.cache_guid(); |
+ ModelTypeSet committed_model_types; |
// TODO(pvalenzuela): Add validation of CommitMessage.entries. |
::google::protobuf::RepeatedPtrField<sync_pb::SyncEntity>::const_iterator it; |
@@ -448,12 +457,23 @@ bool FakeServer::HandleCommitRequest( |
sync_pb::CommitResponse_EntryResponse* entry_response = |
response->add_entryresponse(); |
- if (!CommitEntity(*it, entry_response, guid, &client_to_server_ids)) { |
+ ModelType model_type; |
+ if (!CommitEntity(*it, |
+ entry_response, |
+ guid, |
+ &model_type, |
+ &client_to_server_ids)) { |
return false; |
} |
+ committed_model_types.Put(model_type); |
} |
+ FOR_EACH_OBSERVER(Observer, observers_, OnCommit(committed_model_types)); |
return true; |
} |
+void FakeServer::AddObserver(Observer* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
} // namespace fake_server |