Home | History | Annotate | Download | only in engine
      1 // Copyright 2013 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 GOOGLE_APIS_GCM_ENGINE_FAKE_CONNECTION_FACTORY_H_
      6 #define GOOGLE_APIS_GCM_ENGINE_FAKE_CONNECTION_FACTORY_H_
      7 
      8 #include "base/memory/scoped_ptr.h"
      9 #include "google_apis/gcm/engine/connection_factory.h"
     10 
     11 namespace gcm {
     12 
     13 class FakeConnectionHandler;
     14 
     15 // A connection factory that mocks out real connections, using a fake connection
     16 // handler instead.
     17 class FakeConnectionFactory : public ConnectionFactory {
     18  public:
     19   FakeConnectionFactory();
     20   virtual ~FakeConnectionFactory();
     21 
     22   // ConnectionFactory implementation.
     23   virtual void Initialize(
     24       const BuildLoginRequestCallback& request_builder,
     25       const ConnectionHandler::ProtoReceivedCallback& read_callback,
     26       const ConnectionHandler::ProtoSentCallback& write_callback) OVERRIDE;
     27   virtual ConnectionHandler* GetConnectionHandler() const OVERRIDE;
     28   virtual void Connect() OVERRIDE;
     29   virtual bool IsEndpointReachable() const OVERRIDE;
     30   virtual std::string GetConnectionStateString() const OVERRIDE;
     31   virtual base::TimeTicks NextRetryAttempt() const OVERRIDE;
     32   virtual void SignalConnectionReset(ConnectionResetReason reason) OVERRIDE;
     33   virtual void SetConnectionListener(ConnectionListener* listener) OVERRIDE;
     34 
     35   // Whether a connection reset has been triggered and is yet to run.
     36   bool reconnect_pending() const { return reconnect_pending_; }
     37 
     38   // Whether connection resets should be handled immediately or delayed until
     39   // release.
     40   void set_delay_reconnect(bool should_delay) {
     41     delay_reconnect_ = should_delay;
     42   }
     43 
     44  private:
     45   scoped_ptr<FakeConnectionHandler> connection_handler_;
     46 
     47   BuildLoginRequestCallback request_builder_;
     48 
     49   // Logic for handling connection resets.
     50   bool reconnect_pending_;
     51   bool delay_reconnect_;
     52 
     53   DISALLOW_COPY_AND_ASSIGN(FakeConnectionFactory);
     54 };
     55 
     56 }  // namespace gcm
     57 
     58 #endif  // GOOGLE_APIS_GCM_ENGINE_FAKE_CONNECTION_FACTORY_H_
     59