Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1487)

Side by Side Diff: sync/test/fake_server/fake_server_http_post_provider.cc

Issue 234113002: Use FakeServer-based invalidations for Sync tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698