Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Side by Side Diff: components/autofill/core/browser/contact_info.cc

Issue 261993006: Modified to allow to preserve two-word string in first-name and last-name in autofill profile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/autofill/core/browser/contact_info.h" 5 #include "components/autofill/core/browser/contact_info.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <ostream> 8 #include <ostream>
9 #include <string> 9 #include <string>
10 10
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 base::string16 NameInfo::MiddleInitial() const { 107 base::string16 NameInfo::MiddleInitial() const {
108 if (middle_.empty()) 108 if (middle_.empty())
109 return base::string16(); 109 return base::string16();
110 110
111 base::string16 middle_name(middle()); 111 base::string16 middle_name(middle());
112 base::string16 initial; 112 base::string16 initial;
113 initial.push_back(middle_name[0]); 113 initial.push_back(middle_name[0]);
114 return initial; 114 return initial;
115 } 115 }
116 116
117 void NameInfo::SetFullName(const base::string16& full) { 117 void NameInfo::SetFullName(const base::string16& full) {
Ilya Sherman 2014/05/15 22:21:27 You shouldn't need to make any changes to this met
Pritam Nikam 2014/05/19 12:09:15 Done.
118 // Clear the names. 118 // search whether full_name_ holds first_, middle_ or last_ names
119 first_ = base::string16(); 119 // parsing the full_name_ gives values for first_, middle_, and last_ fields.
120 middle_ = base::string16(); 120 base::string16 str = (base::string16)full;
121 last_ = base::string16(); 121 std::size_t foundFirst = base::string16::npos;
122 if (!first_.empty())
123 foundFirst = str.find(first_);
122 124
125 std::size_t foundMiddle = base::string16::npos;
126 if (!middle_.empty())
127 foundMiddle = str.find(middle_);
128 std::size_t foundLast = base::string16::npos;
129 if (!last_.empty())
130 foundLast = str.find(last_);
131
132 // tokenize full name
123 std::vector<base::string16> full_name_tokens; 133 std::vector<base::string16> full_name_tokens;
124 Tokenize(full, base::ASCIIToUTF16(" "), &full_name_tokens); 134 Tokenize(str, base::ASCIIToUTF16(" "), &full_name_tokens);
125 135
126 // There are four possibilities: empty; first name; first and last names; 136 // first name
127 // first, middle (possibly multiple strings) and then the last name. 137 if (first_.empty()) {
128 if (full_name_tokens.size() > 0) { 138 if (foundMiddle != base::string16::npos) {
129 first_ = full_name_tokens[0]; 139 if (foundMiddle != 0) {
130 if (full_name_tokens.size() > 1) { 140 base::string16 name = str.substr(0, foundMiddle);
131 last_ = full_name_tokens.back(); 141 TrimWhitespace(name, base::TRIM_ALL, &first_);
132 if (full_name_tokens.size() > 2) {
133 full_name_tokens.erase(full_name_tokens.begin());
134 full_name_tokens.pop_back();
135 middle_ = JoinString(full_name_tokens, ' ');
136 } 142 }
143 } else {
144 if (foundLast != base::string16::npos) {
145 if (foundLast != 0)
146 first_ = full_name_tokens[0];
147 } else
148 first_ = full_name_tokens[0];
137 } 149 }
138 } 150 }
151
152 // last name
153 if (last_.empty()) {
154 if (foundMiddle != base::string16::npos) {
155 if (middle_ != str) {
156 base::string16 name =
157 str.substr(foundMiddle + middle_.length(),
158 str.length() - (foundMiddle + middle_.length()));
159 TrimWhitespace(name, base::TRIM_ALL, &last_);
160 }
161 } else {
162 foundFirst = str.find(first_);
163 if (foundFirst != base::string16::npos) {
164 str.erase(foundFirst, first_.length());
165 if (!str.empty())
166 last_ = full_name_tokens[full_name_tokens.size() - 1];
167 } else
168 last_ = full_name_tokens[full_name_tokens.size() - 1];
169 }
170 }
171
172 // middle name
173 if (middle_.empty()) {
174 foundFirst = str.find(first_);
175
176 if (foundFirst != base::string16::npos)
177 str.erase(foundFirst, first_.length());
178
179 foundLast = str.find(last_);
180 if (foundLast != base::string16::npos)
181 str.erase(foundLast, str.length());
182
183 TrimWhitespace(str, base::TRIM_ALL, &middle_);
184 }
139 } 185 }
140 186
141 EmailInfo::EmailInfo() {} 187 EmailInfo::EmailInfo() {}
142 188
143 EmailInfo::EmailInfo(const EmailInfo& info) : FormGroup() { 189 EmailInfo::EmailInfo(const EmailInfo& info) : FormGroup() {
144 *this = info; 190 *this = info;
145 } 191 }
146 192
147 EmailInfo::~EmailInfo() {} 193 EmailInfo::~EmailInfo() {}
148 194
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 return base::string16(); 243 return base::string16();
198 } 244 }
199 245
200 void CompanyInfo::SetRawInfo(ServerFieldType type, 246 void CompanyInfo::SetRawInfo(ServerFieldType type,
201 const base::string16& value) { 247 const base::string16& value) {
202 DCHECK_EQ(COMPANY_NAME, type); 248 DCHECK_EQ(COMPANY_NAME, type);
203 company_name_ = value; 249 company_name_ = value;
204 } 250 }
205 251
206 } // namespace autofill 252 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698