Home | History | Annotate | Download | only in fake_server
      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 
     16 namespace fake_server {
     17 
     18 class FakeServer;
     19 
     20 class 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 
     66 class 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