Home | History | Annotate | Download | only in password_manager
      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