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. 4 5#ifndef SYNC_TEST_FAKE_SERVER_FAKE_SERVER_HTTP_POST_PROVIDER_H_ 6#define SYNC_TEST_FAKE_SERVER_FAKE_SERVER_HTTP_POST_PROVIDER_H_ 7 8#include <string> 9 10#include "base/memory/ref_counted.h" 11#include "base/sequenced_task_runner.h" 12#include "base/synchronization/waitable_event.h" 13#include "sync/internal_api/public/http_post_provider_factory.h" 14#include "sync/internal_api/public/http_post_provider_interface.h" 15 16namespace fake_server { 17 18class FakeServer; 19 20class FakeServerHttpPostProvider 21 : public syncer::HttpPostProviderInterface, 22 public base::RefCountedThreadSafe<FakeServerHttpPostProvider> { 23 public: 24 FakeServerHttpPostProvider( 25 FakeServer* fake_server, 26 scoped_refptr<base::SequencedTaskRunner> task_runner); 27 28 // HttpPostProviderInterface implementation. 29 virtual void SetExtraRequestHeaders(const char* headers) OVERRIDE; 30 virtual void SetURL(const char* url, int port) OVERRIDE; 31 virtual void SetPostPayload(const char* content_type, int content_length, 32 const char* content) OVERRIDE; 33 virtual bool MakeSynchronousPost(int* error_code, 34 int* response_code) OVERRIDE; 35 virtual void Abort() OVERRIDE; 36 virtual int GetResponseContentLength() const OVERRIDE; 37 virtual const char* GetResponseContent() const OVERRIDE; 38 virtual const std::string GetResponseHeaderValue( 39 const std::string& name) const OVERRIDE; 40 41 protected: 42 friend class base::RefCountedThreadSafe<FakeServerHttpPostProvider>; 43 virtual ~FakeServerHttpPostProvider(); 44 45 private: 46 void OnPostComplete(int error_code, 47 int response_code, 48 const std::string& response); 49 50 FakeServer* const fake_server_; 51 scoped_refptr<base::SequencedTaskRunner> task_runner_; 52 53 std::string response_; 54 std::string request_url_; 55 int request_port_; 56 std::string request_content_; 57 std::string request_content_type_; 58 std::string extra_request_headers_; 59 int post_error_code_; 60 int post_response_code_; 61 base::WaitableEvent post_complete_; 62 63 DISALLOW_COPY_AND_ASSIGN(FakeServerHttpPostProvider); 64}; 65 66class FakeServerHttpPostProviderFactory 67 : public syncer::HttpPostProviderFactory { 68 public: 69 FakeServerHttpPostProviderFactory( 70 FakeServer* fake_server, 71 scoped_refptr<base::SequencedTaskRunner> task_runner); 72 virtual ~FakeServerHttpPostProviderFactory(); 73 74 // HttpPostProviderFactory: 75 virtual void Init(const std::string& user_agent) OVERRIDE; 76 virtual syncer::HttpPostProviderInterface* Create() OVERRIDE; 77 virtual void Destroy(syncer::HttpPostProviderInterface* http) OVERRIDE; 78 79 private: 80 FakeServer* const fake_server_; 81 scoped_refptr<base::SequencedTaskRunner> task_runner_; 82 83 DISALLOW_COPY_AND_ASSIGN(FakeServerHttpPostProviderFactory); 84}; 85 86} // namespace fake_server 87 88#endif // SYNC_TEST_FAKE_SERVER_FAKE_SERVER_HTTP_POST_PROVIDER_H_ 89