• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 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_GCM_APP_HANDLER_H_
6 #define COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_
7 
8 #include <string>
9 
10 #include "base/basictypes.h"
11 #include "components/gcm_driver/gcm_client.h"
12 
13 namespace gcm {
14 
15 // Defines the interface to provide handling and event routing logic for a given
16 // app.
17 class GCMAppHandler {
18  public:
19   GCMAppHandler();
20   virtual ~GCMAppHandler();
21 
22   // Called to do all the cleanup when GCM is shutting down.
23   // In the case that multiple apps share the same app handler, it should be
24   // make safe for ShutdownHandler to be called multiple times.
25   virtual void ShutdownHandler() = 0;
26 
27   // Called when a GCM message has been received.
28   virtual void OnMessage(const std::string& app_id,
29                          const GCMClient::IncomingMessage& message) = 0;
30 
31   // Called when some GCM messages have been deleted from the server.
32   virtual void OnMessagesDeleted(const std::string& app_id) = 0;
33 
34   // Called when a GCM message failed to be delivered.
35   virtual void OnSendError(
36       const std::string& app_id,
37       const GCMClient::SendErrorDetails& send_error_details) = 0;
38 
39   // Called when a GCM message was received by GCM server.
40   virtual void OnSendAcknowledged(const std::string& app_id,
41                                   const std::string& message_id) = 0;
42 
43   // If no app handler has been added with the exact app_id of an incoming
44   // event, all handlers will be asked (in arbitrary order) whether they can
45   // handle the app_id, and the first to return true will receive the event.
46   virtual bool CanHandle(const std::string& app_id) const;
47 };
48 
49 }  // namespace gcm
50 
51 #endif  // COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_
52