| Index: sync/test/fake_server/fake_server_http_post_provider.cc
|
| diff --git a/sync/test/fake_server/fake_server_http_post_provider.cc b/sync/test/fake_server/fake_server_http_post_provider.cc
|
| index e0b34368fa349a1241a3ab0b228ed2634b889119..fbfe16f35aecae5827169669c3ee1031da2b5025 100644
|
| --- a/sync/test/fake_server/fake_server_http_post_provider.cc
|
| +++ b/sync/test/fake_server/fake_server_http_post_provider.cc
|
| @@ -6,6 +6,11 @@
|
|
|
| #include <string>
|
|
|
| +#include "base/bind.h"
|
| +#include "base/location.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "base/sequenced_task_runner.h"
|
| +#include "base/synchronization/waitable_event.h"
|
| #include "sync/test/fake_server/fake_server.h"
|
|
|
| using syncer::HttpPostProviderInterface;
|
| @@ -13,7 +18,9 @@ using syncer::HttpPostProviderInterface;
|
| namespace fake_server {
|
|
|
| FakeServerHttpPostProviderFactory::FakeServerHttpPostProviderFactory(
|
| - FakeServer* fake_server) : fake_server_(fake_server) { }
|
| + FakeServer* fake_server,
|
| + scoped_refptr<base::SequencedTaskRunner> task_runner)
|
| + : fake_server_(fake_server), task_runner_(task_runner) { }
|
|
|
| FakeServerHttpPostProviderFactory::~FakeServerHttpPostProviderFactory() { }
|
|
|
| @@ -21,7 +28,7 @@ void FakeServerHttpPostProviderFactory::Init(const std::string& user_agent) { }
|
|
|
| HttpPostProviderInterface* FakeServerHttpPostProviderFactory::Create() {
|
| FakeServerHttpPostProvider* http =
|
| - new FakeServerHttpPostProvider(fake_server_);
|
| + new FakeServerHttpPostProvider(fake_server_, task_runner_);
|
| http->AddRef();
|
| return http;
|
| }
|
| @@ -32,7 +39,11 @@ void FakeServerHttpPostProviderFactory::Destroy(
|
| }
|
|
|
| FakeServerHttpPostProvider::FakeServerHttpPostProvider(
|
| - FakeServer* fake_server) : fake_server_(fake_server) { }
|
| + FakeServer* fake_server,
|
| + scoped_refptr<base::SequencedTaskRunner> task_runner)
|
| + : fake_server_(fake_server),
|
| + task_runner_(task_runner),
|
| + post_complete_(false, false) { }
|
|
|
| FakeServerHttpPostProvider::~FakeServerHttpPostProvider() { }
|
|
|
| @@ -54,13 +65,29 @@ void FakeServerHttpPostProvider::SetPostPayload(const char* content_type,
|
| request_content_.assign(content, content_length);
|
| }
|
|
|
| +void FakeServerHttpPostProvider::OnPostComplete(int error_code,
|
| + int response_code,
|
| + const std::string& response) {
|
| + post_error_code_ = error_code;
|
| + post_response_code_ = response_code;
|
| + response_ = response;
|
| + post_complete_.Signal();
|
| +}
|
| +
|
| bool FakeServerHttpPostProvider::MakeSynchronousPost(int* error_code,
|
| int* response_code) {
|
| - // This assumes that a POST is being made to /command.
|
| - *error_code = fake_server_->HandleCommand(request_content_,
|
| - response_code,
|
| - &response_);
|
| - return (*error_code == 0);
|
| + // It is assumed that a POST is being made to /command.
|
| + FakeServer::HandleCommandCallback callback = base::Bind(
|
| + &FakeServerHttpPostProvider::OnPostComplete, base::Unretained(this));
|
| + task_runner_->PostNonNestableTask(FROM_HERE,
|
| + base::Bind(&FakeServer::HandleCommand,
|
| + base::Unretained(fake_server_),
|
| + base::ConstRef(request_content_),
|
| + base::ConstRef(callback)));
|
| + post_complete_.Wait();
|
| + *error_code = post_error_code_;
|
| + *response_code = post_response_code_;
|
| + return *error_code == 0;
|
| }
|
|
|
| int FakeServerHttpPostProvider::GetResponseContentLength() const {
|
|
|