| OLD | NEW |
| 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 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 } | 676 } |
| 677 form->date_synced = | 677 form->date_synced = |
| 678 base::Time::FromInternalValue(s.ColumnInt64(COLUMN_DATE_SYNCED)); | 678 base::Time::FromInternalValue(s.ColumnInt64(COLUMN_DATE_SYNCED)); |
| 679 form->display_name = s.ColumnString16(COLUMN_DISPLAY_NAME); | 679 form->display_name = s.ColumnString16(COLUMN_DISPLAY_NAME); |
| 680 form->avatar_url = GURL(s.ColumnString(COLUMN_AVATAR_URL)); | 680 form->avatar_url = GURL(s.ColumnString(COLUMN_AVATAR_URL)); |
| 681 form->federation_url = GURL(s.ColumnString(COLUMN_FEDERATION_URL)); | 681 form->federation_url = GURL(s.ColumnString(COLUMN_FEDERATION_URL)); |
| 682 form->is_zero_click = (s.ColumnInt(COLUMN_IS_ZERO_CLICK) > 0); | 682 form->is_zero_click = (s.ColumnInt(COLUMN_IS_ZERO_CLICK) > 0); |
| 683 return ENCRYPTION_RESULT_SUCCESS; | 683 return ENCRYPTION_RESULT_SUCCESS; |
| 684 } | 684 } |
| 685 | 685 |
| 686 bool LoginDatabase::GetLogins(const PasswordForm& form, | 686 bool LoginDatabase::GetLogins( |
| 687 std::vector<PasswordForm*>* forms) const { | 687 const PasswordForm& form, |
| 688 ScopedVector<autofill::PasswordForm>* forms) const { |
| 688 DCHECK(forms); | 689 DCHECK(forms); |
| 689 // You *must* change LoginTableColumns if this query changes. | 690 // You *must* change LoginTableColumns if this query changes. |
| 690 const std::string sql_query = | 691 const std::string sql_query = |
| 691 "SELECT origin_url, action_url, " | 692 "SELECT origin_url, action_url, " |
| 692 "username_element, username_value, " | 693 "username_element, username_value, " |
| 693 "password_element, password_value, submit_element, " | 694 "password_element, password_value, submit_element, " |
| 694 "signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, " | 695 "signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, " |
| 695 "scheme, password_type, possible_usernames, times_used, form_data, " | 696 "scheme, password_type, possible_usernames, times_used, form_data, " |
| 696 "date_synced, display_name, avatar_url, " | 697 "date_synced, display_name, avatar_url, " |
| 697 "federation_url, is_zero_click FROM logins WHERE signon_realm == ? "; | 698 "federation_url, is_zero_click FROM logins WHERE signon_realm == ? "; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 774 } | 775 } |
| 775 UMA_HISTOGRAM_ENUMERATION("PasswordManager.PslDomainMatchTriggering", | 776 UMA_HISTOGRAM_ENUMERATION("PasswordManager.PslDomainMatchTriggering", |
| 776 psl_domain_match_metric, | 777 psl_domain_match_metric, |
| 777 PSL_DOMAIN_MATCH_COUNT); | 778 PSL_DOMAIN_MATCH_COUNT); |
| 778 return s.Succeeded(); | 779 return s.Succeeded(); |
| 779 } | 780 } |
| 780 | 781 |
| 781 bool LoginDatabase::GetLoginsCreatedBetween( | 782 bool LoginDatabase::GetLoginsCreatedBetween( |
| 782 const base::Time begin, | 783 const base::Time begin, |
| 783 const base::Time end, | 784 const base::Time end, |
| 784 std::vector<autofill::PasswordForm*>* forms) const { | 785 ScopedVector<autofill::PasswordForm>* forms) const { |
| 785 DCHECK(forms); | 786 DCHECK(forms); |
| 786 sql::Statement s(db_.GetCachedStatement( | 787 sql::Statement s(db_.GetCachedStatement( |
| 787 SQL_FROM_HERE, | 788 SQL_FROM_HERE, |
| 788 "SELECT origin_url, action_url, " | 789 "SELECT origin_url, action_url, " |
| 789 "username_element, username_value, " | 790 "username_element, username_value, " |
| 790 "password_element, password_value, submit_element, " | 791 "password_element, password_value, submit_element, " |
| 791 "signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, " | 792 "signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, " |
| 792 "scheme, password_type, possible_usernames, times_used, form_data, " | 793 "scheme, password_type, possible_usernames, times_used, form_data, " |
| 793 "date_synced, display_name, avatar_url, " | 794 "date_synced, display_name, avatar_url, " |
| 794 "federation_url, is_zero_click FROM logins " | 795 "federation_url, is_zero_click FROM logins " |
| (...skipping 12 matching lines...) Expand all Loading... |
| 807 continue; | 808 continue; |
| 808 DCHECK(result == ENCRYPTION_RESULT_SUCCESS); | 809 DCHECK(result == ENCRYPTION_RESULT_SUCCESS); |
| 809 forms->push_back(new_form.release()); | 810 forms->push_back(new_form.release()); |
| 810 } | 811 } |
| 811 return s.Succeeded(); | 812 return s.Succeeded(); |
| 812 } | 813 } |
| 813 | 814 |
| 814 bool LoginDatabase::GetLoginsSyncedBetween( | 815 bool LoginDatabase::GetLoginsSyncedBetween( |
| 815 const base::Time begin, | 816 const base::Time begin, |
| 816 const base::Time end, | 817 const base::Time end, |
| 817 std::vector<autofill::PasswordForm*>* forms) const { | 818 ScopedVector<autofill::PasswordForm>* forms) const { |
| 818 DCHECK(forms); | 819 DCHECK(forms); |
| 819 sql::Statement s(db_.GetCachedStatement( | 820 sql::Statement s(db_.GetCachedStatement( |
| 820 SQL_FROM_HERE, | 821 SQL_FROM_HERE, |
| 821 "SELECT origin_url, action_url, username_element, username_value, " | 822 "SELECT origin_url, action_url, username_element, username_value, " |
| 822 "password_element, password_value, submit_element, signon_realm, " | 823 "password_element, password_value, submit_element, signon_realm, " |
| 823 "ssl_valid, preferred, date_created, blacklisted_by_user, " | 824 "ssl_valid, preferred, date_created, blacklisted_by_user, " |
| 824 "scheme, password_type, possible_usernames, times_used, form_data, " | 825 "scheme, password_type, possible_usernames, times_used, form_data, " |
| 825 "date_synced, display_name, avatar_url, " | 826 "date_synced, display_name, avatar_url, " |
| 826 "federation_url, is_zero_click FROM logins " | 827 "federation_url, is_zero_click FROM logins " |
| 827 "WHERE date_synced >= ? AND date_synced < ?" | 828 "WHERE date_synced >= ? AND date_synced < ?" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 838 return false; | 839 return false; |
| 839 if (result == ENCRYPTION_RESULT_ITEM_FAILURE) | 840 if (result == ENCRYPTION_RESULT_ITEM_FAILURE) |
| 840 continue; | 841 continue; |
| 841 DCHECK(result == ENCRYPTION_RESULT_SUCCESS); | 842 DCHECK(result == ENCRYPTION_RESULT_SUCCESS); |
| 842 forms->push_back(new_form.release()); | 843 forms->push_back(new_form.release()); |
| 843 } | 844 } |
| 844 return s.Succeeded(); | 845 return s.Succeeded(); |
| 845 } | 846 } |
| 846 | 847 |
| 847 bool LoginDatabase::GetAutofillableLogins( | 848 bool LoginDatabase::GetAutofillableLogins( |
| 848 std::vector<PasswordForm*>* forms) const { | 849 ScopedVector<autofill::PasswordForm>* forms) const { |
| 849 return GetAllLoginsWithBlacklistSetting(false, forms); | 850 return GetAllLoginsWithBlacklistSetting(false, forms); |
| 850 } | 851 } |
| 851 | 852 |
| 852 bool LoginDatabase::GetBlacklistLogins( | 853 bool LoginDatabase::GetBlacklistLogins( |
| 853 std::vector<PasswordForm*>* forms) const { | 854 ScopedVector<autofill::PasswordForm>* forms) const { |
| 854 return GetAllLoginsWithBlacklistSetting(true, forms); | 855 return GetAllLoginsWithBlacklistSetting(true, forms); |
| 855 } | 856 } |
| 856 | 857 |
| 857 bool LoginDatabase::GetAllLoginsWithBlacklistSetting( | 858 bool LoginDatabase::GetAllLoginsWithBlacklistSetting( |
| 858 bool blacklisted, | 859 bool blacklisted, |
| 859 std::vector<PasswordForm*>* forms) const { | 860 ScopedVector<autofill::PasswordForm>* forms) const { |
| 860 DCHECK(forms); | 861 DCHECK(forms); |
| 861 // You *must* change LoginTableColumns if this query changes. | 862 // You *must* change LoginTableColumns if this query changes. |
| 862 sql::Statement s(db_.GetCachedStatement( | 863 sql::Statement s(db_.GetCachedStatement( |
| 863 SQL_FROM_HERE, | 864 SQL_FROM_HERE, |
| 864 "SELECT origin_url, action_url, " | 865 "SELECT origin_url, action_url, " |
| 865 "username_element, username_value, " | 866 "username_element, username_value, " |
| 866 "password_element, password_value, submit_element, " | 867 "password_element, password_value, submit_element, " |
| 867 "signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, " | 868 "signon_realm, ssl_valid, preferred, date_created, blacklisted_by_user, " |
| 868 "scheme, password_type, possible_usernames, times_used, form_data, " | 869 "scheme, password_type, possible_usernames, times_used, form_data, " |
| 869 "date_synced, display_name, avatar_url, " | 870 "date_synced, display_name, avatar_url, " |
| (...skipping 16 matching lines...) Expand all Loading... |
| 886 | 887 |
| 887 bool LoginDatabase::DeleteAndRecreateDatabaseFile() { | 888 bool LoginDatabase::DeleteAndRecreateDatabaseFile() { |
| 888 DCHECK(db_.is_open()); | 889 DCHECK(db_.is_open()); |
| 889 meta_table_.Reset(); | 890 meta_table_.Reset(); |
| 890 db_.Close(); | 891 db_.Close(); |
| 891 sql::Connection::Delete(db_path_); | 892 sql::Connection::Delete(db_path_); |
| 892 return Init(); | 893 return Init(); |
| 893 } | 894 } |
| 894 | 895 |
| 895 } // namespace password_manager | 896 } // namespace password_manager |
| OLD | NEW |