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 GOOGLE_APIS_GCM_ENGINE_ACCOUNT_MAPPING_H_ 6 #define GOOGLE_APIS_GCM_ENGINE_ACCOUNT_MAPPING_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/time/time.h" 12 #include "google_apis/gcm/base/gcm_export.h" 13 14 namespace gcm { 15 16 // Stores information about Account mapping and a last message sent regarding 17 // that mapping. 18 struct GCM_EXPORT AccountMapping { 19 // Status of the account mapping. 20 enum MappingStatus { 21 NEW, // This is a new account mapping entry. 22 ADDING, // A mapping message has been sent, but it has not been confirmed 23 // yet. 24 MAPPED, // Account is mapped. At least one message has been confirmed to 25 // reached the GCM. 26 REMOVING, // Account is removed, but a message removing the mapping has not 27 // been confirmed yet. 28 }; 29 30 AccountMapping(); 31 ~AccountMapping(); 32 33 // Serializes account mapping to string without |account_id|, |status| or 34 // |access_token|. 35 std::string SerializeAsString() const; 36 // Parses account mapping from store, without |account_id| or |access_token|. 37 // |status| is infered. 38 bool ParseFromString(const std::string& value); 39 40 // Gaia ID of the account. (Acts as key for persistence.) 41 std::string account_id; 42 // Email address of the tracked account. 43 std::string email; 44 // OAuth2 access token used to authenticate mappings (not persisted). 45 std::string access_token; 46 // Status of the account mapping (not persisted). 47 MappingStatus status; 48 // Time of the mapping status change. 49 base::Time status_change_timestamp; 50 // ID of the last mapping message sent to GCM. 51 std::string last_message_id; 52 }; 53 54 } // namespace gcm 55 56 #endif // GOOGLE_APIS_GCM_ENGINE_ACCOUNT_MAPPING_H_ 57