• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_GENERATION_MANAGER_H_
6 #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_GENERATION_MANAGER_H_
7 
8 #include <vector>
9 
10 #include "base/basictypes.h"
11 
12 namespace autofill {
13 class FormStructure;
14 }
15 
16 namespace password_manager {
17 
18 class PasswordManagerClient;
19 class PasswordManagerDriver;
20 
21 // Per-tab manager for password generation. Will enable this feature only if
22 //
23 // -  Password manager is enabled
24 // -  Password sync is enabled
25 //
26 // NOTE: At the moment, the creation of the renderer PasswordGenerationManager
27 // is controlled by a switch (--enable-password-generation) so this feature will
28 // not be enabled regardless of the above criteria without the switch being
29 // present.
30 //
31 // This class is used to determine what forms we should offer to generate
32 // passwords for and manages the popup which is created if the user chooses to
33 // generate a password.
34 class PasswordGenerationManager {
35  public:
36   explicit PasswordGenerationManager(PasswordManagerClient* client);
37   virtual ~PasswordGenerationManager();
38 
39   // Detect account creation forms from forms with autofill type annotated.
40   // Will send a message to the renderer if we find a correctly annotated form
41   // and the feature is enabled.
42   void DetectAccountCreationForms(
43       const std::vector<autofill::FormStructure*>& forms);
44 
45  private:
46   friend class PasswordGenerationManagerTest;
47 
48   // Determines current state of password generation
49   bool IsGenerationEnabled() const;
50 
51   // The PasswordManagerClient instance associated with this instance. Must
52   // outlive this instance.
53   PasswordManagerClient* client_;
54 
55   // The PasswordManagerDriver instance associated with this instance. Must
56   // outlive this instance.
57   PasswordManagerDriver* driver_;
58 
59   DISALLOW_COPY_AND_ASSIGN(PasswordGenerationManager);
60 };
61 
62 }  // namespace password_manager
63 
64 #endif  // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_GENERATION_MANAGER_H_
65