• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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