1// Copyright (c) 2013 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_PREDICTORS_LOGGED_IN_PREDICTOR_TABLE_H_
6#define CHROME_BROWSER_PREDICTORS_LOGGED_IN_PREDICTOR_TABLE_H_
7
8#include <string>
9
10#include "base/containers/hash_tables.h"
11#include "base/time/time.h"
12#include "chrome/browser/predictors/predictor_table_base.h"
13#include "url/gurl.h"
14
15namespace sql {
16class Statement;
17}
18
19namespace predictors {
20
21// Interface for database table to keep track of what sites a user is logged
22// in to.
23// All methods except the constructor and destructor need to be called on the DB
24// thread.
25// Manages one table { domain (primary key), added_timestamp }.
26class LoggedInPredictorTable : public PredictorTableBase {
27 public:
28  typedef base::hash_map<std::string, int64> LoggedInStateMap;
29
30  // Adds the relevant part of the domain of the URL provided to the database
31  // as the user having performed a login action.
32  void AddDomainFromURL(const GURL& url);
33  // Deletes a record for the domain corresponding to the URL provided.
34  void DeleteDomainFromURL(const GURL& url);
35  // Deletes a record for the domain provided.
36  void DeleteDomain(const std::string& domain);
37  // Checks whether for the relevant part of the domain of the URL provided,
38  // the user has performed a login action in the past.
39  void HasUserLoggedIn(const GURL& url, bool* is_present,
40                       bool* lookup_succeeded);
41  void DeleteAllCreatedBetween(const base::Time& delete_begin,
42                               const base::Time& delete_end);
43  void GetAllData(LoggedInStateMap* state_map);
44
45  static std::string GetKey(const GURL& url);
46  static std::string GetKeyFromDomain(const std::string& domain);
47
48 private:
49  friend class PredictorDatabaseInternal;
50
51  LoggedInPredictorTable();
52  virtual ~LoggedInPredictorTable();
53
54  // PredictorTableBase methods.
55  virtual void CreateTableIfNonExistent() OVERRIDE;
56  virtual void LogDatabaseStats() OVERRIDE;
57
58  DISALLOW_COPY_AND_ASSIGN(LoggedInPredictorTable);
59};
60
61}  // namespace predictors
62
63#endif  // CHROME_BROWSER_PREDICTORS_LOGGED_IN_PREDICTOR_TABLE_H_
64