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