fake_gcm_app_handler.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
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
12namespace base {
13class RunLoop;
14}
15
16namespace gcm {
17
18class 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
30  const Event& received_event() const { return received_event_; }
31  const std::string& app_id() const { return app_id_; }
32  const GCMClient::IncomingMessage& message() const { return message_; }
33  const GCMClient::SendErrorDetails& send_error_details() const {
34    return send_error_details_;
35  }
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