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_BACKEND_H_
6#define COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_H_
7
8class WebDatabase;
9
10namespace autofill {
11
12class AutofillWebDataServiceObserverOnDBThread;
13
14// Interface for doing Autofill work directly on the DB thread (used by
15// Sync, mostly), without fully exposing the AutofillWebDataBackend to clients.
16class AutofillWebDataBackend {
17 public:
18  virtual ~AutofillWebDataBackend() {}
19
20  // Get a raw pointer to the WebDatabase.
21  virtual WebDatabase* GetDatabase() = 0;
22
23  // Add an observer to be notified of changes on the DB thread.
24  virtual void AddObserver(
25      AutofillWebDataServiceObserverOnDBThread* observer) = 0;
26
27  // Remove an observer.
28  virtual void RemoveObserver(
29      AutofillWebDataServiceObserverOnDBThread* observer) = 0;
30
31  // Remove expired elements from the database and commit if needed.
32  virtual void RemoveExpiredFormElements() = 0;
33
34  // Notifies listeners on the UI thread that multiple changes have been made to
35  // to Autofill records of the database.
36  // NOTE: This method is intended to be called from the DB thread. It
37  // asynchronously notifies listeners on the UI thread.
38  virtual void NotifyOfMultipleAutofillChanges() = 0;
39};
40
41} // namespace autofill
42
43#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_H_
44