1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_MODEL_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_MODEL_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/autofill/core/common/password_form.h"
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/public/browser/web_contents_observer.h"
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class ManagePasswordsIconController;
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace content {
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class WebContents;
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// This model provides data for the ManagePasswordsBubble and controls the
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// password management actions.
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class ManagePasswordsBubbleModel : public content::WebContentsObserver {
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  explicit ManagePasswordsBubbleModel(content::WebContents* web_contents);
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual ~ManagePasswordsBubbleModel();
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  enum ManagePasswordsBubbleState {
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    PASSWORD_TO_BE_SAVED,
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    MANAGE_PASSWORDS_AFTER_SAVING,
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    MANAGE_PASSWORDS
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  };
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Called by the view code when the cancel button in clicked by the user.
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void OnCancelClicked();
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Called by the view code when the save button in clicked by the user.
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void OnSaveClicked();
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Called by the view code when the manage link is clicked by the user.
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void OnManageLinkClicked();
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Called by the view code to delete or add a password form to the
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // PasswordStore.
41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void OnPasswordAction(autofill::PasswordForm password_form, bool remove);
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Called by the view code when the ManagePasswordItemView is destroyed and
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // the user chose to delete the password.
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TODO(npentrel): Remove this once best_matches_ are newly made on bubble
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // opening.
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void DeleteFromBestMatches(autofill::PasswordForm password_form);
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ManagePasswordsBubbleState manage_passwords_bubble_state() {
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return manage_passwords_bubble_state_;
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool password_submitted() { return password_submitted_; }
54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  const base::string16& title() { return title_; }
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const autofill::PasswordForm& pending_credentials() {
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return pending_credentials_;
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const autofill::PasswordFormMap& best_matches() { return best_matches_; }
59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  const base::string16& manage_link() { return manage_link_; }
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private:
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // content::WebContentsObserver
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void WebContentsDestroyed(
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      content::WebContents* web_contents) OVERRIDE;
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* web_contents_;
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ManagePasswordsBubbleState manage_passwords_bubble_state_;
68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool password_submitted_;
69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 title_;
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  autofill::PasswordForm pending_credentials_;
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  autofill::PasswordFormMap best_matches_;
72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 manage_link_;
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ManagePasswordsBubbleModel);
75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_MODEL_H_
78