• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_APP_HANDLER_H_
6 #define COMPONENTS_GCM_DRIVER_FAKE_GCM_APP_HANDLER_H_
7 
8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "components/gcm_driver/gcm_app_handler.h"
11 
12 namespace base {
13 class RunLoop;
14 }
15 
16 namespace gcm {
17 
18 class FakeGCMAppHandler : public GCMAppHandler {
19  public:
20   enum Event {
21     NO_EVENT,
22     MESSAGE_EVENT,
23     MESSAGES_DELETED_EVENT,
24     SEND_ERROR_EVENT
25   };
26 
27   FakeGCMAppHandler();
28   virtual ~FakeGCMAppHandler();
29 
received_event()30   const Event& received_event() const { return received_event_; }
app_id()31   const std::string& app_id() const { return app_id_; }
message()32   const GCMClient::IncomingMessage& message() const { return message_; }
send_error_details()33   const GCMClient::SendErrorDetails& send_error_details() const {
34     return send_error_details_;
35   }
connected()36   bool connected() const { return connected_; }
37 
38   void WaitForNotification();
39 
40   // GCMAppHandler implementation.
41   virtual void ShutdownHandler() OVERRIDE;
42   virtual void OnMessage(const std::string& app_id,
43                          const GCMClient::IncomingMessage& message) OVERRIDE;
44   virtual void OnMessagesDeleted(const std::string& app_id) OVERRIDE;
45   virtual void OnSendError(
46       const std::string& app_id,
47       const GCMClient::SendErrorDetails& send_error_details) OVERRIDE;
48   virtual void OnConnected(const net::IPEndPoint& ip_endpoint) OVERRIDE;
49   virtual void OnDisconnected() OVERRIDE;
50 
51  private:
52   void ClearResults();
53 
54   scoped_ptr<base::RunLoop> run_loop_;
55 
56   Event received_event_;
57   std::string app_id_;
58   GCMClient::IncomingMessage message_;
59   GCMClient::SendErrorDetails send_error_details_;
60   bool connected_;
61 
62   DISALLOW_COPY_AND_ASSIGN(FakeGCMAppHandler);
63 };
64 
65 }  // namespace gcm
66 
67 #endif  // COMPONENTS_GCM_DRIVER_FAKE_GCM_APP_HANDLER_H_
68