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..9d2285a57d1ee05dc7a7ac1af461595fb64e3383 100644 |
--- a/sync/test/fake_server/fake_server_http_post_provider.cc |
+++ b/sync/test/fake_server/fake_server_http_post_provider.cc |
@@ -6,8 +6,11 @@ |
#include <string> |
+#include "base/synchronization/waitable_event.h" |
+#include "content/public/browser/browser_thread.h" |
#include "sync/test/fake_server/fake_server.h" |
+using content::BrowserThread; |
using syncer::HttpPostProviderInterface; |
namespace fake_server { |
@@ -32,7 +35,8 @@ void FakeServerHttpPostProviderFactory::Destroy( |
} |
FakeServerHttpPostProvider::FakeServerHttpPostProvider( |
- FakeServer* fake_server) : fake_server_(fake_server) { } |
+ FakeServer* fake_server) : fake_server_(fake_server), |
+ post_complete_(false, false) { } |
FakeServerHttpPostProvider::~FakeServerHttpPostProvider() { } |
@@ -54,13 +58,28 @@ void FakeServerHttpPostProvider::SetPostPayload(const char* content_type, |
request_content_.assign(content, content_length); |
} |
+void FakeServerHttpPostProvider::OnPostComplete() { |
+ 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. |
+ base::Closure callback = base::Bind( |
+ &FakeServerHttpPostProvider::OnPostComplete, base::Unretained(this)); |
+ BrowserThread::PostTask(BrowserThread::UI, |
rlarocque
2014/04/22 18:22:22
If this code is to live in sync/test, then I'm not
pval...(no longer on Chromium)
2014/04/24 01:08:53
Done.
|
+ FROM_HERE, |
+ base::Bind(&FakeServer::HandleCommand, |
+ base::Unretained(fake_server_), |
+ base::ConstRef(request_content_), |
+ base::ConstRef(callback), |
+ error_code, |
+ response_code, |
+ &response_)); |
+ const int kTimeoutSecs = 5; |
+ bool signaled = post_complete_.TimedWait( |
+ base::TimeDelta::FromSeconds(kTimeoutSecs)); |
+ return signaled && *error_code == 0; |
} |
int FakeServerHttpPostProvider::GetResponseContentLength() const { |