Home | History | Annotate | Download | only in gcm_driver
      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 COMPONENTS_GCM_DRIVER_FAKE_GCM_CLIENT_H_
      6 #define COMPONENTS_GCM_DRIVER_FAKE_GCM_CLIENT_H_
      7 
      8 #include "base/compiler_specific.h"
      9 #include "base/memory/weak_ptr.h"
     10 #include "components/gcm_driver/gcm_client.h"
     11 
     12 namespace base {
     13 class SequencedTaskRunner;
     14 }
     15 
     16 namespace gcm {
     17 
     18 class FakeGCMClient : public GCMClient {
     19  public:
     20   enum Status {
     21     UNINITIALIZED,
     22     STARTED,
     23     STOPPED,
     24     CHECKED_OUT
     25   };
     26 
     27   enum StartMode {
     28     NO_DELAY_START,
     29     DELAY_START,
     30   };
     31 
     32   FakeGCMClient(StartMode start_mode,
     33                 const scoped_refptr<base::SequencedTaskRunner>& ui_thread,
     34                 const scoped_refptr<base::SequencedTaskRunner>& io_thread);
     35   virtual ~FakeGCMClient();
     36 
     37   // Overridden from GCMClient:
     38   // Called on IO thread.
     39   virtual void Initialize(
     40       const ChromeBuildInfo& chrome_build_info,
     41       const base::FilePath& store_path,
     42       const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner,
     43       const scoped_refptr<net::URLRequestContextGetter>&
     44           url_request_context_getter,
     45       scoped_ptr<Encryptor> encryptor,
     46       Delegate* delegate) OVERRIDE;
     47   virtual void Start() OVERRIDE;
     48   virtual void Stop() OVERRIDE;
     49   virtual void CheckOut() OVERRIDE;
     50   virtual void Register(const std::string& app_id,
     51                         const std::vector<std::string>& sender_ids) OVERRIDE;
     52   virtual void Unregister(const std::string& app_id) OVERRIDE;
     53   virtual void Send(const std::string& app_id,
     54                     const std::string& receiver_id,
     55                     const OutgoingMessage& message) OVERRIDE;
     56   virtual void SetRecording(bool recording) OVERRIDE;
     57   virtual void ClearActivityLogs() OVERRIDE;
     58   virtual GCMStatistics GetStatistics() const OVERRIDE;
     59   virtual void SetAccountsForCheckin(
     60       const std::map<std::string, std::string>& account_tokens) OVERRIDE;
     61   virtual void UpdateAccountMapping(
     62       const AccountMapping& account_mapping) OVERRIDE;
     63   virtual void RemoveAccountMapping(const std::string& account_id) OVERRIDE;
     64 
     65   // Initiate the loading that has been delayed.
     66   // Called on UI thread.
     67   void PerformDelayedLoading();
     68 
     69   // Simulate receiving something from the server.
     70   // Called on UI thread.
     71   void ReceiveMessage(const std::string& app_id,
     72                       const IncomingMessage& message);
     73   void DeleteMessages(const std::string& app_id);
     74 
     75   std::string GetRegistrationIdFromSenderIds(
     76       const std::vector<std::string>& sender_ids) const;
     77 
     78   Status status() const { return status_; }
     79 
     80  private:
     81   // Called on IO thread.
     82   void DoLoading();
     83   void CheckinFinished();
     84   void RegisterFinished(const std::string& app_id,
     85                         const std::string& registrion_id);
     86   void UnregisterFinished(const std::string& app_id);
     87   void SendFinished(const std::string& app_id, const OutgoingMessage& message);
     88   void MessageReceived(const std::string& app_id,
     89                        const IncomingMessage& message);
     90   void MessagesDeleted(const std::string& app_id);
     91   void MessageSendError(const std::string& app_id,
     92                         const SendErrorDetails& send_error_details);
     93   void SendAcknowledgement(const std::string& app_id,
     94                            const std::string& message_id);
     95 
     96   Delegate* delegate_;
     97   // Increased at checkout in order to produce a different registration ID
     98   // after checkout and re-checkin.
     99   int sequence_id_;
    100   Status status_;
    101   StartMode start_mode_;
    102   scoped_refptr<base::SequencedTaskRunner> ui_thread_;
    103   scoped_refptr<base::SequencedTaskRunner> io_thread_;
    104   base::WeakPtrFactory<FakeGCMClient> weak_ptr_factory_;
    105 
    106   DISALLOW_COPY_AND_ASSIGN(FakeGCMClient);
    107 };
    108 
    109 }  // namespace gcm
    110 
    111 #endif  // COMPONENTS_GCM_DRIVER_FAKE_GCM_CLIENT_H_
    112