Chromium Code Reviews| Index: google_apis/gcm/engine/account_mapping.cc |
| diff --git a/google_apis/gcm/engine/account_mapping.cc b/google_apis/gcm/engine/account_mapping.cc |
| index 0049b2a9f59f9c766f7b7ae541da846d6658b988..ad3a599163d75bf37dd56e12f8398b16377f4c66 100644 |
| --- a/google_apis/gcm/engine/account_mapping.cc |
| +++ b/google_apis/gcm/engine/account_mapping.cc |
| @@ -13,38 +13,43 @@ namespace { |
| const char kSeparator[] = "&"; |
| uint32 kEmailIndex = 0; |
|
Nicolas Zea
2014/08/29 19:45:02
these should all be const
fgorski
2014/09/03 21:37:02
Done.
|
| -uint32 kMappingChangeTimestampIndex = 1; |
| -uint32 kMessageTypeIndex = 2; |
| +uint32 kStatusIndex = 1; |
| +uint32 kStatusChangeTimestampIndex = 2; |
| +uint32 kSizeWithNoMessage = kStatusChangeTimestampIndex + 1; |
| uint32 kMessageIdIndex = 3; |
| -uint32 kSizeWithNoMessage = kMessageTypeIndex + 1; |
| uint32 kSizeWithMessage = kMessageIdIndex + 1; |
| -const char kMessageTypeNoneString[] = "none"; |
| -const char kMessageTypeAddString[] = "add"; |
| -const char kMessageTypeRemoveString[] = "remove"; |
| - |
| -std::string MessageTypeToString(AccountMapping::MessageType type) { |
| - switch (type) { |
| - case AccountMapping::MSG_NONE: |
| - return kMessageTypeNoneString; |
| - case AccountMapping::MSG_ADD: |
| - return kMessageTypeAddString; |
| - case AccountMapping::MSG_REMOVE: |
| - return kMessageTypeRemoveString; |
| +const char kStatusNew[] = "new"; |
| +const char kStatusAdding[] = "adding"; |
| +const char kStatusMapped[] = "mapped"; |
| +const char kStatusRemoving[] = "removing"; |
| + |
| +std::string StatusToString(AccountMapping::MappingStatus status) { |
| + switch (status) { |
| + case AccountMapping::NEW: |
| + return kStatusNew; |
| + case AccountMapping::ADDING: |
| + return kStatusAdding; |
| + case AccountMapping::MAPPED: |
| + return kStatusMapped; |
| + case AccountMapping::REMOVING: |
| + return kStatusRemoving; |
| default: |
| NOTREACHED(); |
| } |
| return std::string(); |
| } |
| -bool StringToMessageType(const std::string& type_str, |
| - AccountMapping::MessageType* type) { |
| - if (type_str.compare(kMessageTypeAddString) == 0) |
| - *type = AccountMapping::MSG_ADD; |
| - else if (type_str.compare(kMessageTypeRemoveString) == 0) |
| - *type = AccountMapping::MSG_REMOVE; |
| - else if (type_str.compare(kMessageTypeNoneString) == 0) |
| - *type = AccountMapping::MSG_NONE; |
| +bool StringToStatus(const std::string& status_str, |
| + AccountMapping::MappingStatus* status) { |
| + if (status_str.compare(kStatusAdding) == 0) |
| + *status = AccountMapping::ADDING; |
| + else if (status_str.compare(kStatusMapped) == 0) |
| + *status = AccountMapping::MAPPED; |
| + else if (status_str.compare(kStatusRemoving) == 0) |
| + *status = AccountMapping::REMOVING; |
| + else if (status_str.compare(kStatusNew) == 0) |
| + *status = AccountMapping::NEW; |
| else |
| return false; |
| @@ -53,7 +58,7 @@ bool StringToMessageType(const std::string& type_str, |
| } // namespace |
| -AccountMapping::AccountMapping() { |
| +AccountMapping::AccountMapping() : status(NEW) { |
| } |
| AccountMapping::~AccountMapping() { |
| @@ -63,10 +68,10 @@ std::string AccountMapping::SerializeAsString() const { |
| std::string value; |
| value.append(email); |
| value.append(kSeparator); |
| - value.append(base::Int64ToString(status_change_timestamp.ToInternalValue())); |
| + value.append(StatusToString(status)); |
| value.append(kSeparator); |
| - value.append(MessageTypeToString(last_message_type)); |
| - if (last_message_type != MSG_NONE) { |
| + value.append(base::Int64ToString(status_change_timestamp.ToInternalValue())); |
| + if (!last_message_id.empty()) { |
| value.append(kSeparator); |
| value.append(last_message_id); |
| } |
| @@ -83,8 +88,8 @@ bool AccountMapping::ParseFromString(const std::string& value) { |
| } |
| if (values[kEmailIndex].empty() || |
| - values[kMappingChangeTimestampIndex].empty() || |
| - values[kMessageTypeIndex].empty()) { |
| + values[kStatusChangeTimestampIndex].empty() || |
| + values[kStatusIndex].empty()) { |
| return false; |
| } |
| @@ -92,40 +97,32 @@ bool AccountMapping::ParseFromString(const std::string& value) { |
| return false; |
| } |
| - MessageType message_type; |
| - if (!StringToMessageType(values[kMessageTypeIndex], &message_type)) |
| + MappingStatus temp_status; |
| + if (!StringToStatus(values[kStatusIndex], &temp_status)) |
| return false; |
| - if ((message_type == MSG_NONE && values.size() == kSizeWithMessage) || |
| - (message_type != MSG_NONE && values.size() != kSizeWithMessage)) { |
| + if (values.size() == kSizeWithNoMessage && |
| + (temp_status == REMOVING || temp_status == ADDING)) { |
| return false; |
| } |
| - last_message_type = message_type; |
| - |
| int64 status_change_ts_internal = 0LL; |
| - if (!base::StringToInt64(values[kMappingChangeTimestampIndex], |
| + if (!base::StringToInt64(values[kStatusChangeTimestampIndex], |
| &status_change_ts_internal)) { |
| return false; |
| } |
| - if (status_change_ts_internal == 0LL) |
| - status = ADDING; |
| - else if (last_message_type == MSG_REMOVE) |
| - status = REMOVING; |
| - else |
| - status = MAPPED; |
| + status_change_timestamp = |
| + base::Time::FromInternalValue(status_change_ts_internal); |
| + status = temp_status; |
| + email = values[kEmailIndex]; |
| + access_token.clear(); |
| if (values.size() == kSizeWithMessage) |
| last_message_id = values[kMessageIdIndex]; |
| else |
| last_message_id.clear(); |
| - email = values[kEmailIndex]; |
| - status_change_timestamp = |
| - base::Time::FromInternalValue(status_change_ts_internal); |
| - access_token.clear(); |
| - |
| return true; |
| } |