Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / components / gcm_driver / fake_gcm_client.h
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   static std::string GetRegistrationIdFromSenderIds(
76       const std::vector<std::string>& sender_ids);
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   Status status_;
98   StartMode start_mode_;
99   scoped_refptr<base::SequencedTaskRunner> ui_thread_;
100   scoped_refptr<base::SequencedTaskRunner> io_thread_;
101   base::WeakPtrFactory<FakeGCMClient> weak_ptr_factory_;
102
103   DISALLOW_COPY_AND_ASSIGN(FakeGCMClient);
104 };
105
106 }  // namespace gcm
107
108 #endif  // COMPONENTS_GCM_DRIVER_FAKE_GCM_CLIENT_H_