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_http_post_provider.h" | 5 #include "sync/test/fake_server/fake_server_http_post_provider.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/synchronization/waitable_event.h" | |
| 10 #include "content/public/browser/browser_thread.h" | |
| 9 #include "sync/test/fake_server/fake_server.h" | 11 #include "sync/test/fake_server/fake_server.h" |
| 10 | 12 |
| 13 using content::BrowserThread; | |
| 11 using syncer::HttpPostProviderInterface; | 14 using syncer::HttpPostProviderInterface; |
| 12 | 15 |
| 13 namespace fake_server { | 16 namespace fake_server { |
| 14 | 17 |
| 15 FakeServerHttpPostProviderFactory::FakeServerHttpPostProviderFactory( | 18 FakeServerHttpPostProviderFactory::FakeServerHttpPostProviderFactory( |
| 16 FakeServer* fake_server) : fake_server_(fake_server) { } | 19 FakeServer* fake_server) : fake_server_(fake_server) { } |
| 17 | 20 |
| 18 FakeServerHttpPostProviderFactory::~FakeServerHttpPostProviderFactory() { } | 21 FakeServerHttpPostProviderFactory::~FakeServerHttpPostProviderFactory() { } |
| 19 | 22 |
| 20 void FakeServerHttpPostProviderFactory::Init(const std::string& user_agent) { } | 23 void FakeServerHttpPostProviderFactory::Init(const std::string& user_agent) { } |
| 21 | 24 |
| 22 HttpPostProviderInterface* FakeServerHttpPostProviderFactory::Create() { | 25 HttpPostProviderInterface* FakeServerHttpPostProviderFactory::Create() { |
| 23 FakeServerHttpPostProvider* http = | 26 FakeServerHttpPostProvider* http = |
| 24 new FakeServerHttpPostProvider(fake_server_); | 27 new FakeServerHttpPostProvider(fake_server_); |
| 25 http->AddRef(); | 28 http->AddRef(); |
| 26 return http; | 29 return http; |
| 27 } | 30 } |
| 28 | 31 |
| 29 void FakeServerHttpPostProviderFactory::Destroy( | 32 void FakeServerHttpPostProviderFactory::Destroy( |
| 30 HttpPostProviderInterface* http) { | 33 HttpPostProviderInterface* http) { |
| 31 static_cast<FakeServerHttpPostProvider*>(http)->Release(); | 34 static_cast<FakeServerHttpPostProvider*>(http)->Release(); |
| 32 } | 35 } |
| 33 | 36 |
| 34 FakeServerHttpPostProvider::FakeServerHttpPostProvider( | 37 FakeServerHttpPostProvider::FakeServerHttpPostProvider( |
| 35 FakeServer* fake_server) : fake_server_(fake_server) { } | 38 FakeServer* fake_server) : fake_server_(fake_server), |
| 39 post_complete_(false, false) { } | |
| 36 | 40 |
| 37 FakeServerHttpPostProvider::~FakeServerHttpPostProvider() { } | 41 FakeServerHttpPostProvider::~FakeServerHttpPostProvider() { } |
| 38 | 42 |
| 39 void FakeServerHttpPostProvider::SetExtraRequestHeaders(const char* headers) { | 43 void FakeServerHttpPostProvider::SetExtraRequestHeaders(const char* headers) { |
| 40 // TODO(pvalenzuela): Add assertions on this value. | 44 // TODO(pvalenzuela): Add assertions on this value. |
| 41 extra_request_headers_.assign(headers); | 45 extra_request_headers_.assign(headers); |
| 42 } | 46 } |
| 43 | 47 |
| 44 void FakeServerHttpPostProvider::SetURL(const char* url, int port) { | 48 void FakeServerHttpPostProvider::SetURL(const char* url, int port) { |
| 45 // TODO(pvalenzuela): Add assertions on these values. | 49 // TODO(pvalenzuela): Add assertions on these values. |
| 46 request_url_.assign(url); | 50 request_url_.assign(url); |
| 47 request_port_ = port; | 51 request_port_ = port; |
| 48 } | 52 } |
| 49 | 53 |
| 50 void FakeServerHttpPostProvider::SetPostPayload(const char* content_type, | 54 void FakeServerHttpPostProvider::SetPostPayload(const char* content_type, |
| 51 int content_length, | 55 int content_length, |
| 52 const char* content) { | 56 const char* content) { |
| 53 request_content_type_.assign(content_type); | 57 request_content_type_.assign(content_type); |
| 54 request_content_.assign(content, content_length); | 58 request_content_.assign(content, content_length); |
| 55 } | 59 } |
| 56 | 60 |
| 61 void FakeServerHttpPostProvider::OnPostComplete() { | |
| 62 post_complete_.Signal(); | |
| 63 } | |
| 64 | |
| 57 bool FakeServerHttpPostProvider::MakeSynchronousPost(int* error_code, | 65 bool FakeServerHttpPostProvider::MakeSynchronousPost(int* error_code, |
| 58 int* response_code) { | 66 int* response_code) { |
| 59 // This assumes that a POST is being made to /command. | 67 // It is assumed that a POST is being made to /command. |
| 60 *error_code = fake_server_->HandleCommand(request_content_, | 68 base::Closure callback = base::Bind( |
| 61 response_code, | 69 &FakeServerHttpPostProvider::OnPostComplete, base::Unretained(this)); |
| 62 &response_); | 70 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.
| |
| 63 return (*error_code == 0); | 71 FROM_HERE, |
| 72 base::Bind(&FakeServer::HandleCommand, | |
| 73 base::Unretained(fake_server_), | |
| 74 base::ConstRef(request_content_), | |
| 75 base::ConstRef(callback), | |
| 76 error_code, | |
| 77 response_code, | |
| 78 &response_)); | |
| 79 const int kTimeoutSecs = 5; | |
| 80 bool signaled = post_complete_.TimedWait( | |
| 81 base::TimeDelta::FromSeconds(kTimeoutSecs)); | |
| 82 return signaled && *error_code == 0; | |
| 64 } | 83 } |
| 65 | 84 |
| 66 int FakeServerHttpPostProvider::GetResponseContentLength() const { | 85 int FakeServerHttpPostProvider::GetResponseContentLength() const { |
| 67 return response_.length(); | 86 return response_.length(); |
| 68 } | 87 } |
| 69 | 88 |
| 70 const char* FakeServerHttpPostProvider::GetResponseContent() const { | 89 const char* FakeServerHttpPostProvider::GetResponseContent() const { |
| 71 return response_.c_str(); | 90 return response_.c_str(); |
| 72 } | 91 } |
| 73 | 92 |
| 74 const std::string FakeServerHttpPostProvider::GetResponseHeaderValue( | 93 const std::string FakeServerHttpPostProvider::GetResponseHeaderValue( |
| 75 const std::string& name) const { | 94 const std::string& name) const { |
| 76 return std::string(); | 95 return std::string(); |
| 77 } | 96 } |
| 78 | 97 |
| 79 void FakeServerHttpPostProvider::Abort() { | 98 void FakeServerHttpPostProvider::Abort() { |
| 80 } | 99 } |
| 81 | 100 |
| 82 } // namespace fake_server | 101 } // namespace fake_server |
| OLD | NEW |