| Index: components/gcm_driver/registration_info.h
|
| diff --git a/components/gcm_driver/registration_info.h b/components/gcm_driver/registration_info.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..346eca36d9624c13b697ce61c149d7c95b560a32
|
| --- /dev/null
|
| +++ b/components/gcm_driver/registration_info.h
|
| @@ -0,0 +1,130 @@
|
| +// Copyright 2015 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_REGISTRATION_INFO_H_
|
| +#define COMPONENTS_GCM_DRIVER_REGISTRATION_INFO_H_
|
| +
|
| +#include <map>
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/memory/linked_ptr.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +
|
| +namespace gcm {
|
| +
|
| +// Encapsulates the information needed to register with the server.
|
| +struct RegistrationInfo {
|
| + enum RegistrationType {
|
| + GCM_REGISTRATION,
|
| + INSTANCE_ID_TOKEN
|
| + };
|
| +
|
| + // Returns the appropriate RegistrationInfo instance based on the serialized
|
| + // key and value.
|
| + // |registration_id| can be NULL if no interest to it.
|
| + static scoped_ptr<RegistrationInfo> BuildFromString(
|
| + const std::string& serialzied_key,
|
| + const std::string& serialzied_value,
|
| + std::string* registration_id);
|
| +
|
| + RegistrationInfo();
|
| + virtual ~RegistrationInfo();
|
| +
|
| + // Returns the type of the registration info.
|
| + virtual RegistrationType GetType() const = 0;
|
| +
|
| + // For persisting to the store. Depending on the type, part of the
|
| + // registration info is written as key. The remaining of the registration
|
| + // info plus the registration ID are written as value.
|
| + virtual std::string GetSerializedKey() const = 0;
|
| + virtual std::string GetSerializedValue(
|
| + const std::string& registration_id) const = 0;
|
| + // |registration_id| can be NULL if it is of no interest to the caller.
|
| + virtual bool Deserialize(const std::string& serialzied_key,
|
| + const std::string& serialzied_value,
|
| + std::string* registration_id) = 0;
|
| +
|
| + // Every registration is associated with an application.
|
| + std::string app_id;
|
| +};
|
| +
|
| +// For GCM registration.
|
| +struct GCMRegistrationInfo : public RegistrationInfo {
|
| + GCMRegistrationInfo();
|
| + ~GCMRegistrationInfo() override;
|
| +
|
| + // Converts from the base type;
|
| + static const GCMRegistrationInfo* FromRegistrationInfo(
|
| + const RegistrationInfo* registration_info);
|
| + static GCMRegistrationInfo* FromRegistrationInfo(
|
| + RegistrationInfo* registration_info);
|
| +
|
| + // RegistrationInfo overrides:
|
| + RegistrationType GetType() const override;
|
| + std::string GetSerializedKey() const override;
|
| + std::string GetSerializedValue(
|
| + const std::string& registration_id) const override;
|
| + bool Deserialize(const std::string& serialzied_key,
|
| + const std::string& serialzied_value,
|
| + std::string* registration_id) override;
|
| +
|
| + // List of IDs of the servers that are allowed to send the messages to the
|
| + // application. These IDs are assigned by the Google API Console.
|
| + std::vector<std::string> sender_ids;
|
| +};
|
| +
|
| +// For InstanceID token retrieval.
|
| +struct InstanceIDTokenInfo : public RegistrationInfo {
|
| + InstanceIDTokenInfo();
|
| + ~InstanceIDTokenInfo() override;
|
| +
|
| + // Converts from the base type;
|
| + static const InstanceIDTokenInfo* FromRegistrationInfo(
|
| + const RegistrationInfo* registration_info);
|
| + static InstanceIDTokenInfo* FromRegistrationInfo(
|
| + RegistrationInfo* registration_info);
|
| +
|
| + // RegistrationInfo overrides:
|
| + RegistrationType GetType() const override;
|
| + std::string GetSerializedKey() const override;
|
| + std::string GetSerializedValue(
|
| + const std::string& registration_id) const override;
|
| + bool Deserialize(const std::string& serialzied_key,
|
| + const std::string& serialzied_value,
|
| + std::string* registration_id) override;
|
| +
|
| + // Entity that is authorized to access resources associated with the Instance
|
| + // ID. It can be another Instance ID or a project ID assigned by the Google
|
| + // API Console.
|
| + std::string authorized_entity;
|
| +
|
| + // Authorized actions that the authorized entity can take.
|
| + // E.g. for sending GCM messages, 'GCM' scope should be used.
|
| + std::string scope;
|
| +
|
| + // Allows including a small number of string key/value pairs that will be
|
| + // associated with the token and may be used in processing the request.
|
| + std::map<std::string, std::string> options;
|
| +};
|
| +
|
| +struct RegistrationInfoComparer {
|
| + bool operator()(const linked_ptr<RegistrationInfo>& a,
|
| + const linked_ptr<RegistrationInfo>& b) const;
|
| +};
|
| +
|
| +// Collection of registration info.
|
| +// Map from RegistrationInfo instance to registration ID.
|
| +typedef std::map<linked_ptr<RegistrationInfo>,
|
| + std::string,
|
| + RegistrationInfoComparer> RegistrationInfoMap;
|
| +
|
| +// Returns true if a GCM registration for |app_id| exists in |map|.
|
| +bool ExistsGCMRegistrationInMap(const RegistrationInfoMap& map,
|
| + const std::string& app_id);
|
| +
|
| +} // namespace gcm
|
| +
|
| +#endif // COMPONENTS_GCM_DRIVER_REGISTRATION_INFO_H_
|
|
|