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.
5 #ifndef GOOGLE_APIS_GCM_ENGINE_ACCOUNT_MAPPING_H_
6 #define GOOGLE_APIS_GCM_ENGINE_ACCOUNT_MAPPING_H_
10 #include "base/basictypes.h"
11 #include "base/time/time.h"
12 #include "google_apis/gcm/base/gcm_export.h"
16 // Stores information about Account mapping and a last message sent regarding
18 struct GCM_EXPORT AccountMapping
{
19 // Status of the account mapping.
21 NEW
, // This is a new account mapping entry.
22 ADDING
, // A mapping message has been sent, but it has not been confirmed
24 MAPPED
, // Account is mapped. At least one message has been confirmed to
26 REMOVING
, // Account is removed, but a message removing the mapping has not
27 // been confirmed yet.
28 REMOVED
, // Account is removed, and at least one message has been
29 // confirmed to have reached the GCM.
32 // Indicates whether a message, if sent, was adding or removing account
35 MSG_NONE
, // No message has been sent.
36 MSG_ADD
, // Account was mapped to device by the message.
37 MSG_REMOVE
, // Account mapping to device was removed by the message.
43 // Serializes account mapping to string without |account_id|, |status| or
45 std::string
SerializeAsString() const;
46 // Parses account mapping from store, without |account_id| or |access_token|.
47 // |status| is infered.
48 bool ParseFromString(const std::string
& value
);
50 // Gaia ID of the account. (Acts as key for persistence.)
51 std::string account_id
;
52 // Email address of the tracked account.
54 // OAuth2 access token used to authenticate mappings (not persisted).
55 std::string access_token
;
56 // Status of the account mapping (not persisted).
58 // Time of the mapping status change.
59 base::Time status_change_timestamp
;
60 // Type of the last mapping message sent to GCM.
61 MessageType last_message_type
;
62 // ID of the last mapping message sent to GCM.
63 std::string last_message_id
;
68 #endif // GOOGLE_APIS_GCM_ENGINE_ACCOUNT_MAPPING_H_