Upstream version 8.37.180.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
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_