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 |