• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "google_apis/gcm/engine/registration_info.h"
6 
7 #include "base/strings/string_util.h"
8 
9 namespace gcm {
10 
RegistrationInfo()11 RegistrationInfo::RegistrationInfo() {
12 }
13 
~RegistrationInfo()14 RegistrationInfo::~RegistrationInfo() {
15 }
16 
SerializeAsString() const17 std::string RegistrationInfo::SerializeAsString() const {
18   if (sender_ids.empty() || registration_id.empty())
19     return std::string();
20 
21   // Serialize as:
22   //    sender1,sender2,...=reg_id
23   std::string value;
24   for (std::vector<std::string>::const_iterator iter = sender_ids.begin();
25        iter != sender_ids.end(); ++iter) {
26     DCHECK(!iter->empty() &&
27            iter->find(',') == std::string::npos &&
28            iter->find('=') == std::string::npos);
29     if (!value.empty())
30       value += ",";
31     value += *iter;
32   }
33 
34   DCHECK(registration_id.find('=') == std::string::npos);
35   value += '=';
36   value += registration_id;
37   return value;
38 }
39 
ParseFromString(const std::string & value)40 bool RegistrationInfo::ParseFromString(const std::string& value) {
41   if (value.empty())
42     return true;
43 
44   size_t pos = value.find('=');
45   if (pos == std::string::npos)
46     return false;
47 
48   std::string senders = value.substr(0, pos);
49   registration_id = value.substr(pos + 1);
50 
51   Tokenize(senders, ",", &sender_ids);
52 
53   if (sender_ids.empty() || registration_id.empty()) {
54     sender_ids.clear();
55     registration_id.clear();
56     return false;
57   }
58 
59   return true;
60 }
61 
62 }  // namespace gcm
63