diff options
Diffstat (limited to 'chromium/components/gcm_driver/gcm_app_handler.h')
-rw-r--r-- | chromium/components/gcm_driver/gcm_app_handler.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/chromium/components/gcm_driver/gcm_app_handler.h b/chromium/components/gcm_driver/gcm_app_handler.h new file mode 100644 index 00000000000..676eeea8960 --- /dev/null +++ b/chromium/components/gcm_driver/gcm_app_handler.h @@ -0,0 +1,67 @@ +// Copyright (c) 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_ +#define COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_ + +#include <string> + +#include "components/gcm_driver/gcm_client.h" + +namespace gcm { + +// Defines the interface to provide handling and event routing logic for a given +// app. +class GCMAppHandler { + public: + GCMAppHandler(); + virtual ~GCMAppHandler(); + + // Called to do all the cleanup when GCM is shutting down. + // In the case that multiple apps share the same app handler, it should be + // make safe for ShutdownHandler to be called multiple times. + virtual void ShutdownHandler() = 0; + + // Called when the GCM store is reset (e.g. due to corruption), which changes + // the device ID, invalidating all prior registrations. Any stored state + // related to GCM registrations or InstanceIDs should be deleted. This should + // only be considered a defense in depth, as this method will not be called if + // the store is reset before this app handler is registered; hence it is + // recommended to regularly revalidate any stored registrations/InstanceIDs. + // TODO(johnme): GCMDriver doesn't yet provide an API for revalidating them. + virtual void OnStoreReset() = 0; + + // Called when a GCM message has been received. + virtual void OnMessage(const std::string& app_id, + const IncomingMessage& message) = 0; + + // Called when some GCM messages have been deleted from the server. + virtual void OnMessagesDeleted(const std::string& app_id) = 0; + + // Called when a GCM message failed to be delivered. + virtual void OnSendError( + const std::string& app_id, + const GCMClient::SendErrorDetails& send_error_details) = 0; + + // Called when a GCM message was received by GCM server. + virtual void OnSendAcknowledged(const std::string& app_id, + const std::string& message_id) = 0; + + // Called when a GCM message has been received but decryption failed. + // |message_id| is a message identifier sent by the GCM server. + // |error_message| is human-readable description of the error, for reporting + // purposes. By default this handler does nothing. + virtual void OnMessageDecryptionFailed(const std::string& app_id, + const std::string& message_id, + const std::string& error_message); + + // If no app handler has been added with the exact app_id of an incoming + // event, all handlers will be asked (in arbitrary order) whether they can + // handle the app_id, and the first to return true will receive the event. + virtual bool CanHandle(const std::string& app_id) const; +}; + +} // namespace gcm + +#endif // COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_ |