Home | History | Annotate | Download | only in gcm_driver
      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