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/time/time.h" 11 #include "google_apis/gaia/core_account_id.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(const AccountMapping& other); 32 ~AccountMapping(); 33 34 // Serializes account mapping to string without |account_id|, |status| or 35 // |access_token|. 36 std::string SerializeAsString() const; 37 // Parses account mapping from store, without |account_id| or |access_token|. 38 // |status| is infered. 39 bool ParseFromString(const std::string& value); 40 41 // Account Id of the account. (Acts as key for persistence.) 42 CoreAccountId account_id; 43 // Email address of the tracked account. 44 std::string email; 45 // OAuth2 access token used to authenticate mappings (not persisted). 46 std::string access_token; 47 // Status of the account mapping (not persisted). 48 MappingStatus status; 49 // Time of the mapping status change. 50 base::Time status_change_timestamp; 51 // ID of the last mapping message sent to GCM. 52 std::string last_message_id; 53 }; 54 55 } // namespace gcm 56 57 #endif // GOOGLE_APIS_GCM_ENGINE_ACCOUNT_MAPPING_H_ 58