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

Side by Side Diff: components/password_manager/core/browser/login_database.cc

Issue 1154283003: Change most uses of Pickle to base::Pickle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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 2014 The Chromium Authors. All rights reserved. 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 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/password_manager/core/browser/login_database.h" 5 #include "components/password_manager/core/browser/login_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 14 matching lines...) Expand all
25 #include "sql/statement.h" 25 #include "sql/statement.h"
26 #include "sql/transaction.h" 26 #include "sql/transaction.h"
27 27
28 using autofill::PasswordForm; 28 using autofill::PasswordForm;
29 29
30 namespace password_manager { 30 namespace password_manager {
31 31
32 const int kCurrentVersionNumber = 13; 32 const int kCurrentVersionNumber = 13;
33 static const int kCompatibleVersionNumber = 1; 33 static const int kCompatibleVersionNumber = 1;
34 34
35 Pickle SerializeVector(const std::vector<base::string16>& vec) { 35 base::Pickle SerializeVector(const std::vector<base::string16>& vec) {
36 Pickle p; 36 base::Pickle p;
37 for (size_t i = 0; i < vec.size(); ++i) { 37 for (size_t i = 0; i < vec.size(); ++i) {
38 p.WriteString16(vec[i]); 38 p.WriteString16(vec[i]);
39 } 39 }
40 return p; 40 return p;
41 } 41 }
42 42
43 std::vector<base::string16> DeserializeVector(const Pickle& p) { 43 std::vector<base::string16> DeserializeVector(const base::Pickle& p) {
44 std::vector<base::string16> ret; 44 std::vector<base::string16> ret;
45 base::string16 str; 45 base::string16 str;
46 46
47 PickleIterator iterator(p); 47 base::PickleIterator iterator(p);
48 while (iterator.ReadString16(&str)) { 48 while (iterator.ReadString16(&str)) {
49 ret.push_back(str); 49 ret.push_back(str);
50 } 50 }
51 return ret; 51 return ret;
52 } 52 }
53 53
54 namespace { 54 namespace {
55 55
56 // Convenience enum for interacting with SQL queries that use all the columns. 56 // Convenience enum for interacting with SQL queries that use all the columns.
57 enum LoginTableColumns { 57 enum LoginTableColumns {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 s->BindBlob(COLUMN_PASSWORD_VALUE, encrypted_password.data(), 91 s->BindBlob(COLUMN_PASSWORD_VALUE, encrypted_password.data(),
92 static_cast<int>(encrypted_password.length())); 92 static_cast<int>(encrypted_password.length()));
93 s->BindString16(COLUMN_SUBMIT_ELEMENT, form.submit_element); 93 s->BindString16(COLUMN_SUBMIT_ELEMENT, form.submit_element);
94 s->BindString(COLUMN_SIGNON_REALM, form.signon_realm); 94 s->BindString(COLUMN_SIGNON_REALM, form.signon_realm);
95 s->BindInt(COLUMN_SSL_VALID, form.ssl_valid); 95 s->BindInt(COLUMN_SSL_VALID, form.ssl_valid);
96 s->BindInt(COLUMN_PREFERRED, form.preferred); 96 s->BindInt(COLUMN_PREFERRED, form.preferred);
97 s->BindInt64(COLUMN_DATE_CREATED, form.date_created.ToInternalValue()); 97 s->BindInt64(COLUMN_DATE_CREATED, form.date_created.ToInternalValue());
98 s->BindInt(COLUMN_BLACKLISTED_BY_USER, form.blacklisted_by_user); 98 s->BindInt(COLUMN_BLACKLISTED_BY_USER, form.blacklisted_by_user);
99 s->BindInt(COLUMN_SCHEME, form.scheme); 99 s->BindInt(COLUMN_SCHEME, form.scheme);
100 s->BindInt(COLUMN_PASSWORD_TYPE, form.type); 100 s->BindInt(COLUMN_PASSWORD_TYPE, form.type);
101 Pickle usernames_pickle = SerializeVector(form.other_possible_usernames); 101 base::Pickle usernames_pickle =
102 SerializeVector(form.other_possible_usernames);
102 s->BindBlob(COLUMN_POSSIBLE_USERNAMES, 103 s->BindBlob(COLUMN_POSSIBLE_USERNAMES,
103 usernames_pickle.data(), 104 usernames_pickle.data(),
104 usernames_pickle.size()); 105 usernames_pickle.size());
105 s->BindInt(COLUMN_TIMES_USED, form.times_used); 106 s->BindInt(COLUMN_TIMES_USED, form.times_used);
106 Pickle form_data_pickle; 107 base::Pickle form_data_pickle;
107 autofill::SerializeFormData(form.form_data, &form_data_pickle); 108 autofill::SerializeFormData(form.form_data, &form_data_pickle);
108 s->BindBlob(COLUMN_FORM_DATA, 109 s->BindBlob(COLUMN_FORM_DATA,
109 form_data_pickle.data(), 110 form_data_pickle.data(),
110 form_data_pickle.size()); 111 form_data_pickle.size());
111 s->BindInt64(COLUMN_DATE_SYNCED, form.date_synced.ToInternalValue()); 112 s->BindInt64(COLUMN_DATE_SYNCED, form.date_synced.ToInternalValue());
112 s->BindString16(COLUMN_DISPLAY_NAME, form.display_name); 113 s->BindString16(COLUMN_DISPLAY_NAME, form.display_name);
113 s->BindString(COLUMN_AVATAR_URL, form.avatar_url.spec()); 114 s->BindString(COLUMN_AVATAR_URL, form.avatar_url.spec());
114 s->BindString(COLUMN_FEDERATION_URL, form.federation_url.spec()); 115 s->BindString(COLUMN_FEDERATION_URL, form.federation_url.spec());
115 s->BindInt(COLUMN_SKIP_ZERO_CLICK, form.skip_zero_click); 116 s->BindInt(COLUMN_SKIP_ZERO_CLICK, form.skip_zero_click);
116 s->BindInt(COLUMN_GENERATION_UPLOAD_STATUS, form.generation_upload_status); 117 s->BindInt(COLUMN_GENERATION_UPLOAD_STATUS, form.generation_upload_status);
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 "WHERE origin_url = ? AND " 606 "WHERE origin_url = ? AND "
606 "username_element = ? AND " 607 "username_element = ? AND "
607 "username_value = ? AND " 608 "username_value = ? AND "
608 "password_element = ? AND " 609 "password_element = ? AND "
609 "signon_realm = ?")); 610 "signon_realm = ?"));
610 s.BindString(0, form.action.spec()); 611 s.BindString(0, form.action.spec());
611 s.BindBlob(1, encrypted_password.data(), 612 s.BindBlob(1, encrypted_password.data(),
612 static_cast<int>(encrypted_password.length())); 613 static_cast<int>(encrypted_password.length()));
613 s.BindInt(2, form.ssl_valid); 614 s.BindInt(2, form.ssl_valid);
614 s.BindInt(3, form.preferred); 615 s.BindInt(3, form.preferred);
615 Pickle pickle = SerializeVector(form.other_possible_usernames); 616 base::Pickle pickle = SerializeVector(form.other_possible_usernames);
616 s.BindBlob(4, pickle.data(), pickle.size()); 617 s.BindBlob(4, pickle.data(), pickle.size());
617 s.BindInt(5, form.times_used); 618 s.BindInt(5, form.times_used);
618 s.BindString16(6, form.submit_element); 619 s.BindString16(6, form.submit_element);
619 s.BindInt64(7, form.date_synced.ToInternalValue()); 620 s.BindInt64(7, form.date_synced.ToInternalValue());
620 s.BindInt64(8, form.date_created.ToInternalValue()); 621 s.BindInt64(8, form.date_created.ToInternalValue());
621 s.BindInt(9, form.blacklisted_by_user); 622 s.BindInt(9, form.blacklisted_by_user);
622 s.BindInt(10, form.scheme); 623 s.BindInt(10, form.scheme);
623 s.BindInt(11, form.type); 624 s.BindInt(11, form.type);
624 s.BindString16(12, form.display_name); 625 s.BindString16(12, form.display_name);
625 s.BindString(13, form.avatar_url.spec()); 626 s.BindString(13, form.avatar_url.spec());
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 form->date_created = 723 form->date_created =
723 base::Time::FromInternalValue(s.ColumnInt64(COLUMN_DATE_CREATED)); 724 base::Time::FromInternalValue(s.ColumnInt64(COLUMN_DATE_CREATED));
724 form->blacklisted_by_user = (s.ColumnInt(COLUMN_BLACKLISTED_BY_USER) > 0); 725 form->blacklisted_by_user = (s.ColumnInt(COLUMN_BLACKLISTED_BY_USER) > 0);
725 int scheme_int = s.ColumnInt(COLUMN_SCHEME); 726 int scheme_int = s.ColumnInt(COLUMN_SCHEME);
726 DCHECK((scheme_int >= 0) && (scheme_int <= PasswordForm::SCHEME_OTHER)); 727 DCHECK((scheme_int >= 0) && (scheme_int <= PasswordForm::SCHEME_OTHER));
727 form->scheme = static_cast<PasswordForm::Scheme>(scheme_int); 728 form->scheme = static_cast<PasswordForm::Scheme>(scheme_int);
728 int type_int = s.ColumnInt(COLUMN_PASSWORD_TYPE); 729 int type_int = s.ColumnInt(COLUMN_PASSWORD_TYPE);
729 DCHECK(type_int >= 0 && type_int <= PasswordForm::TYPE_GENERATED); 730 DCHECK(type_int >= 0 && type_int <= PasswordForm::TYPE_GENERATED);
730 form->type = static_cast<PasswordForm::Type>(type_int); 731 form->type = static_cast<PasswordForm::Type>(type_int);
731 if (s.ColumnByteLength(COLUMN_POSSIBLE_USERNAMES)) { 732 if (s.ColumnByteLength(COLUMN_POSSIBLE_USERNAMES)) {
732 Pickle pickle( 733 base::Pickle pickle(
733 static_cast<const char*>(s.ColumnBlob(COLUMN_POSSIBLE_USERNAMES)), 734 static_cast<const char*>(s.ColumnBlob(COLUMN_POSSIBLE_USERNAMES)),
734 s.ColumnByteLength(COLUMN_POSSIBLE_USERNAMES)); 735 s.ColumnByteLength(COLUMN_POSSIBLE_USERNAMES));
735 form->other_possible_usernames = DeserializeVector(pickle); 736 form->other_possible_usernames = DeserializeVector(pickle);
736 } 737 }
737 form->times_used = s.ColumnInt(COLUMN_TIMES_USED); 738 form->times_used = s.ColumnInt(COLUMN_TIMES_USED);
738 if (s.ColumnByteLength(COLUMN_FORM_DATA)) { 739 if (s.ColumnByteLength(COLUMN_FORM_DATA)) {
739 Pickle form_data_pickle( 740 base::Pickle form_data_pickle(
740 static_cast<const char*>(s.ColumnBlob(COLUMN_FORM_DATA)), 741 static_cast<const char*>(s.ColumnBlob(COLUMN_FORM_DATA)),
741 s.ColumnByteLength(COLUMN_FORM_DATA)); 742 s.ColumnByteLength(COLUMN_FORM_DATA));
742 PickleIterator form_data_iter(form_data_pickle); 743 base::PickleIterator form_data_iter(form_data_pickle);
743 bool success = 744 bool success =
744 autofill::DeserializeFormData(&form_data_iter, &form->form_data); 745 autofill::DeserializeFormData(&form_data_iter, &form->form_data);
745 metrics_util::FormDeserializationStatus status = 746 metrics_util::FormDeserializationStatus status =
746 success ? metrics_util::LOGIN_DATABASE_SUCCESS 747 success ? metrics_util::LOGIN_DATABASE_SUCCESS
747 : metrics_util::LOGIN_DATABASE_FAILURE; 748 : metrics_util::LOGIN_DATABASE_FAILURE;
748 metrics_util::LogFormDataDeserializationStatus(status); 749 metrics_util::LogFormDataDeserializationStatus(status);
749 } 750 }
750 form->date_synced = 751 form->date_synced =
751 base::Time::FromInternalValue(s.ColumnInt64(COLUMN_DATE_SYNCED)); 752 base::Time::FromInternalValue(s.ColumnInt64(COLUMN_DATE_SYNCED));
752 form->display_name = s.ColumnString16(COLUMN_DISPLAY_NAME); 753 form->display_name = s.ColumnString16(COLUMN_DISPLAY_NAME);
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 UMA_HISTOGRAM_ENUMERATION("PasswordManager.PslDomainMatchTriggering", 955 UMA_HISTOGRAM_ENUMERATION("PasswordManager.PslDomainMatchTriggering",
955 psl_domain_match_metric, PSL_DOMAIN_MATCH_COUNT); 956 psl_domain_match_metric, PSL_DOMAIN_MATCH_COUNT);
956 } 957 }
957 958
958 if (!statement->Succeeded()) 959 if (!statement->Succeeded())
959 return false; 960 return false;
960 return true; 961 return true;
961 } 962 }
962 963
963 } // namespace password_manager 964 } // namespace password_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698