1 // Copyright (c) 2012 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 CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_ 6 #define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "components/password_manager/core/browser/password_store_default.h" 10 11 class PasswordWebDataService; 12 13 namespace autofill { 14 struct PasswordForm; 15 } 16 17 namespace password_manager { 18 class LoginDatabase; 19 } 20 21 // Windows PasswordStore implementation that uses the default implementation, 22 // but also uses IE7 passwords if no others found. 23 class PasswordStoreWin : public password_manager::PasswordStoreDefault { 24 public: 25 // PasswordWebDataService is only used for IE7 password fetching. 26 PasswordStoreWin( 27 scoped_refptr<base::SingleThreadTaskRunner> main_thread_runner, 28 scoped_refptr<base::SingleThreadTaskRunner> db_thread_runner, 29 password_manager::LoginDatabase* login_database, 30 PasswordWebDataService* web_data_service); 31 32 // PasswordStore: 33 virtual void Shutdown() OVERRIDE; 34 35 private: 36 class DBHandler; 37 38 virtual ~PasswordStoreWin(); 39 40 // Invoked from Shutdown, but run on the DB thread. 41 void ShutdownOnDBThread(); 42 43 virtual void GetLoginsImpl( 44 const autofill::PasswordForm& form, 45 AuthorizationPromptPolicy prompt_policy, 46 const ConsumerCallbackRunner& callback_runner) OVERRIDE; 47 48 void GetIE7LoginIfNecessary( 49 const autofill::PasswordForm& form, 50 const ConsumerCallbackRunner& callback_runner, 51 const std::vector<autofill::PasswordForm*>& matched_forms); 52 53 scoped_ptr<DBHandler> db_handler_; 54 55 DISALLOW_COPY_AND_ASSIGN(PasswordStoreWin); 56 }; 57 58 #endif // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_ 59