1// Copyright 2014 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_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_MANAGER_DRIVER_H_
6#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_MANAGER_DRIVER_H_
7
8#include <vector>
9
10#include "base/macros.h"
11#include "base/strings/string16.h"
12
13namespace autofill {
14class AutofillManager;
15struct FormData;
16struct PasswordForm;
17struct PasswordFormFillData;
18}  // namespace autofill
19
20namespace password_manager {
21
22class PasswordAutofillManager;
23class PasswordGenerationManager;
24class PasswordManager;
25
26// Interface that allows PasswordManager core code to interact with its driver
27// (i.e., obtain information from it and give information to it).
28class PasswordManagerDriver {
29 public:
30  PasswordManagerDriver() {}
31  virtual ~PasswordManagerDriver() {}
32
33  // Fills forms matching |form_data|.
34  virtual void FillPasswordForm(
35      const autofill::PasswordFormFillData& form_data) = 0;
36
37  // Returns whether any SSL certificate errors were encountered as a result of
38  // the last page load.
39  virtual bool DidLastPageLoadEncounterSSLErrors() = 0;
40
41  // If this browsing session should not be persisted.
42  virtual bool IsOffTheRecord() = 0;
43
44  // Informs the driver that |form| can be used for password generation.
45  virtual void AllowPasswordGenerationForForm(
46      const autofill::PasswordForm& form) = 0;
47
48  // Notifies the driver that account creation |forms| were found.
49  virtual void AccountCreationFormsFound(
50      const std::vector<autofill::FormData>& forms) = 0;
51
52  // Tells the driver to fill the form with the |username| and |password|.
53  virtual void FillSuggestion(const base::string16& username,
54                              const base::string16& password) = 0;
55
56  // Tells the driver to preview filling form with the |username| and
57  // |password|.
58  virtual void PreviewSuggestion(const base::string16& username,
59                                 const base::string16& password) = 0;
60
61  // Tells the driver to clear previewed password and username fields.
62  virtual void ClearPreviewedForm() = 0;
63
64  // Returns the PasswordGenerationManager associated with this instance.
65  virtual PasswordGenerationManager* GetPasswordGenerationManager() = 0;
66
67  // Returns the PasswordManager associated with this instance.
68  virtual PasswordManager* GetPasswordManager() = 0;
69
70  // Returns the PasswordAutofillManager associated with this instance.
71  virtual PasswordAutofillManager* GetPasswordAutofillManager() = 0;
72
73  // Returns the AutofillManager associated with this instance.
74  virtual autofill::AutofillManager* GetAutofillManager() = 0;
75
76 private:
77  DISALLOW_COPY_AND_ASSIGN(PasswordManagerDriver);
78};
79
80}  // namespace password_manager
81
82#endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_MANAGER_DRIVER_H_
83