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

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

Issue 1042353003: Create syncable metadata table for Wallet credit cards and addresses. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: docs Created 5 years, 8 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/autofill_profile.h" 5 #include "components/autofill/core/browser/autofill_profile.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <map> 9 #include <map>
10 #include <ostream> 10 #include <ostream>
11 #include <set> 11 #include <set>
12 12
13 #include "base/basictypes.h" 13 #include "base/basictypes.h"
14 #include "base/guid.h" 14 #include "base/guid.h"
15 #include "base/i18n/case_conversion.h" 15 #include "base/i18n/case_conversion.h"
16 #include "base/i18n/char_iterator.h" 16 #include "base/i18n/char_iterator.h"
17 #include "base/logging.h" 17 #include "base/logging.h"
18 #include "base/sha1.h"
18 #include "base/strings/string_util.h" 19 #include "base/strings/string_util.h"
19 #include "base/strings/utf_string_conversion_utils.h" 20 #include "base/strings/utf_string_conversion_utils.h"
20 #include "base/strings/utf_string_conversions.h" 21 #include "base/strings/utf_string_conversions.h"
21 #include "components/autofill/core/browser/address.h" 22 #include "components/autofill/core/browser/address.h"
22 #include "components/autofill/core/browser/address_i18n.h" 23 #include "components/autofill/core/browser/address_i18n.h"
23 #include "components/autofill/core/browser/autofill_country.h" 24 #include "components/autofill/core/browser/autofill_country.h"
24 #include "components/autofill/core/browser/autofill_field.h" 25 #include "components/autofill/core/browser/autofill_field.h"
25 #include "components/autofill/core/browser/autofill_type.h" 26 #include "components/autofill/core/browser/autofill_type.h"
26 #include "components/autofill/core/browser/contact_info.h" 27 #include "components/autofill/core/browser/contact_info.h"
27 #include "components/autofill/core/browser/phone_number.h" 28 #include "components/autofill/core/browser/phone_number.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 name_(1), 261 name_(1),
261 email_(1), 262 email_(1),
262 phone_number_(1, PhoneNumber(this)) { 263 phone_number_(1, PhoneNumber(this)) {
263 } 264 }
264 265
265 AutofillProfile::AutofillProfile(RecordType type, const std::string& server_id) 266 AutofillProfile::AutofillProfile(RecordType type, const std::string& server_id)
266 : AutofillDataModel(base::GenerateGUID(), std::string()), 267 : AutofillDataModel(base::GenerateGUID(), std::string()),
267 record_type_(type), 268 record_type_(type),
268 name_(1), 269 name_(1),
269 email_(1), 270 email_(1),
270 phone_number_(1, PhoneNumber(this)) { 271 phone_number_(1, PhoneNumber(this)),
272 server_id_(server_id) {
271 DCHECK(type == SERVER_PROFILE); 273 DCHECK(type == SERVER_PROFILE);
272 } 274 }
273 275
274 AutofillProfile::AutofillProfile() 276 AutofillProfile::AutofillProfile()
275 : AutofillDataModel(base::GenerateGUID(), std::string()), 277 : AutofillDataModel(base::GenerateGUID(), std::string()),
276 record_type_(LOCAL_PROFILE), 278 record_type_(LOCAL_PROFILE),
277 name_(1), 279 name_(1),
278 email_(1), 280 email_(1),
279 phone_number_(1, PhoneNumber(this)) { 281 phone_number_(1, PhoneNumber(this)) {
280 } 282 }
(...skipping 23 matching lines...) Expand all
304 email_ = profile.email_; 306 email_ = profile.email_;
305 company_ = profile.company_; 307 company_ = profile.company_;
306 phone_number_ = profile.phone_number_; 308 phone_number_ = profile.phone_number_;
307 309
308 for (size_t i = 0; i < phone_number_.size(); ++i) 310 for (size_t i = 0; i < phone_number_.size(); ++i)
309 phone_number_[i].set_profile(this); 311 phone_number_[i].set_profile(this);
310 312
311 address_ = profile.address_; 313 address_ = profile.address_;
312 set_language_code(profile.language_code()); 314 set_language_code(profile.language_code());
313 315
316 server_id_ = profile.server_id();
317
314 return *this; 318 return *this;
315 } 319 }
316 320
317 void AutofillProfile::GetMatchingTypes( 321 void AutofillProfile::GetMatchingTypes(
318 const base::string16& text, 322 const base::string16& text,
319 const std::string& app_locale, 323 const std::string& app_locale,
320 ServerFieldTypeSet* matching_types) const { 324 ServerFieldTypeSet* matching_types) const {
321 FormGroupList info = FormGroups(); 325 FormGroupList info = FormGroups();
322 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it) 326 for (FormGroupList::const_iterator it = info.begin(); it != info.end(); ++it)
323 (*it)->GetMatchingTypes(text, app_locale, matching_types); 327 (*it)->GetMatchingTypes(text, app_locale, matching_types);
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 (*labels)[profile_index] = label; 821 (*labels)[profile_index] = label;
818 } else { 822 } else {
819 // We have more than one profile with the same label, so add 823 // We have more than one profile with the same label, so add
820 // differentiating fields. 824 // differentiating fields.
821 CreateInferredLabelsHelper(profiles, it->second, fields_to_use, 825 CreateInferredLabelsHelper(profiles, it->second, fields_to_use,
822 minimal_fields_shown, app_locale, labels); 826 minimal_fields_shown, app_locale, labels);
823 } 827 }
824 } 828 }
825 } 829 }
826 830
831 void AutofillProfile::GenerateServerProfileIdentifier() {
832 DCHECK_EQ(SERVER_PROFILE, record_type());
833 std::string contents =
brettw 2015/04/07 18:04:06 I would write this with different lines of content
Evan Stade 2015/04/07 19:23:32 Done.
834 UTF16ToUTF8(MultiString(*this, NAME_FIRST))
835 + UTF16ToUTF8(MultiString(*this, NAME_MIDDLE))
836 + UTF16ToUTF8(MultiString(*this, NAME_LAST))
837 + UTF16ToUTF8(MultiString(*this, EMAIL_ADDRESS))
838 + UTF16ToUTF8(GetRawInfo(COMPANY_NAME))
839 + UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_STREET_ADDRESS))
840 + UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY))
841 + UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_CITY))
842 + UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_STATE))
843 + UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_ZIP))
844 + UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_SORTING_CODE))
845 + UTF16ToUTF8(GetRawInfo(ADDRESS_HOME_COUNTRY))
846 + UTF16ToUTF8(MultiString(*this, PHONE_HOME_WHOLE_NUMBER))
847 + language_code();
848 server_id_ = base::SHA1HashString(contents);
849 }
850
827 // static 851 // static
828 base::string16 AutofillProfile::CanonicalizeProfileString( 852 base::string16 AutofillProfile::CanonicalizeProfileString(
829 const base::string16& str) { 853 const base::string16& str) {
830 base::string16 ret; 854 base::string16 ret;
831 ret.reserve(str.size()); 855 ret.reserve(str.size());
832 856
833 bool previous_was_whitespace = false; 857 bool previous_was_whitespace = false;
834 858
835 // This algorithm isn't designed to be perfect, we could get arbitrarily 859 // This algorithm isn't designed to be perfect, we could get arbitrarily
836 // fancy here trying to canonicalize address lines. Instead, this is designed 860 // fancy here trying to canonicalize address lines. Instead, this is designed
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
1155 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)) 1179 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE))
1156 << " " 1180 << " "
1157 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY)) 1181 << UTF16ToUTF8(profile.GetRawInfo(ADDRESS_HOME_COUNTRY))
1158 << " " 1182 << " "
1159 << profile.language_code() 1183 << profile.language_code()
1160 << " " 1184 << " "
1161 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER)); 1185 << UTF16ToUTF8(MultiString(profile, PHONE_HOME_WHOLE_NUMBER));
1162 } 1186 }
1163 1187
1164 } // namespace autofill 1188 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698