1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_WEBDATA_LOGINS_TABLE_H_ 6 #define CHROME_BROWSER_WEBDATA_LOGINS_TABLE_H_ 7 #pragma once 8 9 #include <vector> 10 11 #include "chrome/browser/webdata/web_database_table.h" 12 13 namespace base { 14 class Time; 15 } 16 17 namespace webkit_glue { 18 struct PasswordForm; 19 } 20 21 #if defined(OS_WIN) 22 struct IE7PasswordInfo; 23 #endif 24 25 // This class manages the logins table within the SQLite database passed to the 26 // constructor. It expects the following schemas: 27 // 28 // Note: The database stores time in seconds, UTC. 29 // 30 // logins 31 // origin_url 32 // action_url 33 // username_element 34 // username_value 35 // password_element 36 // password_value 37 // submit_element 38 // signon_realm The authority (scheme, host, port). 39 // ssl_valid SSL status of page containing the form at first 40 // impression. 41 // preferred MRU bit. 42 // date_created This column was added after logins support. "Legacy" 43 // entries have a value of 0. 44 // blacklisted_by_user Tracks whether or not the user opted to 'never 45 // remember' 46 // passwords for this site. 47 // 48 class LoginsTable : public WebDatabaseTable { 49 public: LoginsTable(sql::Connection * db,sql::MetaTable * meta_table)50 LoginsTable(sql::Connection* db, sql::MetaTable* meta_table) 51 : WebDatabaseTable(db, meta_table) {} ~LoginsTable()52 virtual ~LoginsTable() {} 53 virtual bool Init(); 54 virtual bool IsSyncable(); 55 56 // Adds |form| to the list of remembered password forms. 57 bool AddLogin(const webkit_glue::PasswordForm& form); 58 59 #if defined(OS_WIN) 60 // Adds |info| to the list of imported passwords from ie7/ie8. 61 bool AddIE7Login(const IE7PasswordInfo& info); 62 63 // Removes |info| from the list of imported passwords from ie7/ie8. 64 bool RemoveIE7Login(const IE7PasswordInfo& info); 65 66 // Return the ie7/ie8 login matching |info|. 67 bool GetIE7Login(const IE7PasswordInfo& info, IE7PasswordInfo* result); 68 #endif 69 70 // Updates remembered password form. 71 bool UpdateLogin(const webkit_glue::PasswordForm& form); 72 73 // Removes |form| from the list of remembered password forms. 74 bool RemoveLogin(const webkit_glue::PasswordForm& form); 75 76 // Removes all logins created from |delete_begin| onwards (inclusive) and 77 // before |delete_end|. You may use a null Time value to do an unbounded 78 // delete in either direction. 79 bool RemoveLoginsCreatedBetween(base::Time delete_begin, 80 base::Time delete_end); 81 82 // Loads a list of matching password forms into the specified vector |forms|. 83 // The list will contain all possibly relevant entries to the observed |form|, 84 // including blacklisted matches. 85 bool GetLogins(const webkit_glue::PasswordForm& form, 86 std::vector<webkit_glue::PasswordForm*>* forms); 87 88 // Loads the complete list of password forms into the specified vector |forms| 89 // if include_blacklisted is true, otherwise only loads those which are 90 // actually autofill-able; i.e haven't been blacklisted by the user selecting 91 // the 'Never for this site' button. 92 bool GetAllLogins(std::vector<webkit_glue::PasswordForm*>* forms, 93 bool include_blacklisted); 94 95 private: 96 DISALLOW_COPY_AND_ASSIGN(LoginsTable); 97 }; 98 99 #endif // CHROME_BROWSER_WEBDATA_LOGINS_TABLE_H_ 100