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
3 // found in the LICENSE file.
5 #ifndef SYNC_TEST_FAKE_SERVER_FAKE_SERVER_HTTP_POST_PROVIDER_H_
6 #define SYNC_TEST_FAKE_SERVER_FAKE_SERVER_HTTP_POST_PROVIDER_H_
10 #include "base/callback.h"
11 #include "base/memory/ref_counted.h"
12 #include "base/memory/weak_ptr.h"
13 #include "base/sequenced_task_runner.h"
14 #include "base/synchronization/waitable_event.h"
15 #include "sync/internal_api/public/http_post_provider_factory.h"
16 #include "sync/internal_api/public/http_post_provider_interface.h"
18 namespace fake_server
{
22 class FakeServerHttpPostProvider
23 : public syncer::HttpPostProviderInterface
,
24 public base::RefCountedThreadSafe
<FakeServerHttpPostProvider
> {
26 FakeServerHttpPostProvider(
27 const base::WeakPtr
<FakeServer
>& fake_server
,
28 scoped_refptr
<base::SequencedTaskRunner
> fake_server_task_runner
);
30 // HttpPostProviderInterface implementation.
31 void SetExtraRequestHeaders(const char* headers
) override
;
32 void SetURL(const char* url
, int port
) override
;
33 void SetPostPayload(const char* content_type
,
35 const char* content
) override
;
36 bool MakeSynchronousPost(int* error_code
, int* response_code
) override
;
37 void Abort() override
;
38 int GetResponseContentLength() const override
;
39 const char* GetResponseContent() const override
;
40 const std::string
GetResponseHeaderValue(
41 const std::string
& name
) const override
;
44 friend class base::RefCountedThreadSafe
<FakeServerHttpPostProvider
>;
45 ~FakeServerHttpPostProvider() override
;
48 // |fake_server_| should only be dereferenced on the same thread as
49 // |fake_server_task_runner_| runs on.
50 base::WeakPtr
<FakeServer
> fake_server_
;
51 scoped_refptr
<base::SequencedTaskRunner
> fake_server_task_runner_
;
53 std::string response_
;
54 std::string request_url_
;
56 std::string request_content_
;
57 std::string request_content_type_
;
58 std::string extra_request_headers_
;
60 int post_response_code_
;
62 DISALLOW_COPY_AND_ASSIGN(FakeServerHttpPostProvider
);
65 class FakeServerHttpPostProviderFactory
66 : public syncer::HttpPostProviderFactory
{
68 FakeServerHttpPostProviderFactory(
69 const base::WeakPtr
<FakeServer
>& fake_server
,
70 scoped_refptr
<base::SequencedTaskRunner
> fake_server_task_runner
);
71 ~FakeServerHttpPostProviderFactory() override
;
73 // HttpPostProviderFactory:
75 const std::string
& user_agent
,
76 const syncer::BindToTrackerCallback
& bind_to_tracker_callback
) override
;
77 syncer::HttpPostProviderInterface
* Create() override
;
78 void Destroy(syncer::HttpPostProviderInterface
* http
) override
;
81 // |fake_server_| should only be dereferenced on the same thread as
82 // |fake_server_task_runner_| runs on.
83 base::WeakPtr
<FakeServer
> fake_server_
;
84 scoped_refptr
<base::SequencedTaskRunner
> fake_server_task_runner_
;
86 DISALLOW_COPY_AND_ASSIGN(FakeServerHttpPostProviderFactory
);
89 } // namespace fake_server
91 #endif // SYNC_TEST_FAKE_SERVER_FAKE_SERVER_HTTP_POST_PROVIDER_H_