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 12namespace base { 13class SequencedTaskRunner; 14} 15 16namespace gcm { 17 18class 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 60 // Initiate the loading that has been delayed. 61 // Called on UI thread. 62 void PerformDelayedLoading(); 63 64 // Simulate receiving something from the server. 65 // Called on UI thread. 66 void ReceiveMessage(const std::string& app_id, 67 const IncomingMessage& message); 68 void DeleteMessages(const std::string& app_id); 69 70 static std::string GetRegistrationIdFromSenderIds( 71 const std::vector<std::string>& sender_ids); 72 73 Status status() const { return status_; } 74 75 private: 76 // Called on IO thread. 77 void DoLoading(); 78 void CheckinFinished(); 79 void RegisterFinished(const std::string& app_id, 80 const std::string& registrion_id); 81 void UnregisterFinished(const std::string& app_id); 82 void SendFinished(const std::string& app_id, const OutgoingMessage& message); 83 void MessageReceived(const std::string& app_id, 84 const IncomingMessage& message); 85 void MessagesDeleted(const std::string& app_id); 86 void MessageSendError(const std::string& app_id, 87 const SendErrorDetails& send_error_details); 88 89 Delegate* delegate_; 90 Status status_; 91 StartMode start_mode_; 92 scoped_refptr<base::SequencedTaskRunner> ui_thread_; 93 scoped_refptr<base::SequencedTaskRunner> io_thread_; 94 base::WeakPtrFactory<FakeGCMClient> weak_ptr_factory_; 95 96 DISALLOW_COPY_AND_ASSIGN(FakeGCMClient); 97}; 98 99} // namespace gcm 100 101#endif // COMPONENTS_GCM_DRIVER_FAKE_GCM_CLIENT_H_ 102