1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file.
4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_SYNC_INTERFACE_H_
6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_SYNC_INTERFACE_H_
7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include <vector>
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "components/password_manager/core/browser/password_store_change.h"
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace password_manager {
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// PasswordStore interface for PasswordSyncableService. It provides access to
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// synchronous methods of PasswordStore which shouldn't be accessible to other
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// classes. These methods are to be called on the PasswordStore background
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// thread only.
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class PasswordStoreSync {
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public:
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Finds all non-blacklist PasswordForms, and fills the vector.
21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual bool FillAutofillableLogins(
22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      std::vector<autofill::PasswordForm*>* forms) = 0;
23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Finds all blacklist PasswordForms, and fills the vector.
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual bool FillBlacklistLogins(
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      std::vector<autofill::PasswordForm*>* forms) = 0;
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Synchronous implementation to add the given login.
29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual PasswordStoreChangeList AddLoginImpl(
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      const autofill::PasswordForm& form) = 0;
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Synchronous implementation to update the given login.
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual PasswordStoreChangeList UpdateLoginImpl(
34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      const autofill::PasswordForm& form) = 0;
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Synchronous implementation to remove the given login.
37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual PasswordStoreChangeList RemoveLoginImpl(
38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      const autofill::PasswordForm& form) = 0;
39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Notifies observers that password store data may have been changed.
41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual void NotifyLoginsChanged(const PasswordStoreChangeList& changes) = 0;
42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) protected:
44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual ~PasswordStoreSync();
45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)};
46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace password_manager
48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_SYNC_INTERFACE_H_
50