1// Copyright 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 COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WEBDATA_H_
6#define COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WEBDATA_H_
7
8#include <string>
9#include <vector>
10
11#include "base/memory/scoped_ptr.h"
12#include "base/strings/string16.h"
13#include "components/webdata/common/web_data_service_base.h"
14
15namespace base {
16
17class Time;
18
19}  // namespace base
20
21class Profile;
22class WebDataServiceConsumer;
23
24namespace autofill {
25
26class AutofillEntry;
27class AutofillProfile;
28class CreditCard;
29struct FormFieldData;
30
31// Pure virtual interface for retrieving Autofill data.  API users
32// should use AutofillWebDataService.
33class AutofillWebData {
34 public:
35  virtual ~AutofillWebData() {}
36
37  // Schedules a task to add form fields to the web database.
38  virtual void AddFormFields(
39      const std::vector<FormFieldData>& fields) = 0;
40
41  // Initiates the request for a vector of values which have been entered in
42  // form input fields named |name|.  The method OnWebDataServiceRequestDone of
43  // |consumer| gets called back when the request is finished, with the vector
44  // included in the argument |result|.
45  virtual WebDataServiceBase::Handle GetFormValuesForElementName(
46      const base::string16& name,
47      const base::string16& prefix,
48      int limit,
49      WebDataServiceConsumer* consumer) = 0;
50
51  // Checks if there are any form elements in the database.
52  virtual WebDataServiceBase::Handle HasFormElements(
53      WebDataServiceConsumer* consumer) = 0;
54
55  // Removes form elements recorded for Autocomplete from the database.
56  virtual void RemoveFormElementsAddedBetween(
57      const base::Time& delete_begin, const base::Time& delete_end) = 0;
58
59  virtual void RemoveFormValueForElementName(const base::string16& name,
60                                             const base::string16& value) = 0;
61
62  // Schedules a task to add an Autofill profile to the web database.
63  virtual void AddAutofillProfile(const AutofillProfile& profile) = 0;
64
65  // Schedules a task to update an Autofill profile in the web database.
66  virtual void UpdateAutofillProfile(const AutofillProfile& profile) = 0;
67
68  // Schedules a task to remove an Autofill profile from the web database.
69  // |guid| is the identifer of the profile to remove.
70  virtual void RemoveAutofillProfile(const std::string& guid) = 0;
71
72  // Initiates the request for all Autofill profiles.  The method
73  // OnWebDataServiceRequestDone of |consumer| gets called when the request is
74  // finished, with the profiles included in the argument |result|.  The
75  // consumer owns the profiles.
76  virtual WebDataServiceBase::Handle GetAutofillProfiles(
77      WebDataServiceConsumer* consumer) = 0;
78
79  // Schedules a task to update autofill entries in the web database.
80  virtual void UpdateAutofillEntries(
81      const std::vector<AutofillEntry>& autofill_entries) = 0;
82
83  // Schedules a task to add credit card to the web database.
84  virtual void AddCreditCard(const CreditCard& credit_card) = 0;
85
86  // Schedules a task to update credit card in the web database.
87  virtual void UpdateCreditCard(const CreditCard& credit_card) = 0;
88
89  // Schedules a task to remove a credit card from the web database.
90  // |guid| is identifer of the credit card to remove.
91  virtual void RemoveCreditCard(const std::string& guid) = 0;
92
93  // Initiates the request for all credit cards.  The method
94  // OnWebDataServiceRequestDone of |consumer| gets called when the request is
95  // finished, with the credit cards included in the argument |result|.  The
96  // consumer owns the credit cards.
97  virtual WebDataServiceBase::Handle GetCreditCards(
98      WebDataServiceConsumer* consumer) = 0;
99
100  // Removes Autofill records from the database.
101  virtual void RemoveAutofillDataModifiedBetween(
102      const base::Time& delete_begin, const base::Time& delete_end) = 0;
103
104  // Removes origin URLs associated with Autofill profiles and credit cards from
105  // the database.
106  virtual void RemoveOriginURLsModifiedBetween(
107      const base::Time& delete_begin, const base::Time& delete_end) = 0;
108};
109
110}  // namespace autofill
111
112#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WEBDATA_H_
113