blob: 26d25e8b98b8aa6616c24357502be2ef2f03c166 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_
#define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_
#include <memory>
#include "base/macros.h"
#include "base/sequenced_task_runner.h"
#include "components/password_manager/core/browser/password_store_default.h"
class PasswordWebDataService;
namespace password_manager {
class LoginDatabase;
}
// Windows PasswordStore implementation that uses the default implementation,
// but also uses IE7 passwords if no others found.
class PasswordStoreWin : public password_manager::PasswordStoreDefault {
public:
// The |login_db| must not have been Init()-ed yet. It will be initialized in
// a deferred manner on the DB thread. The |web_data_service| is only used for
// IE7 password fetching.
PasswordStoreWin(
scoped_refptr<base::SequencedTaskRunner> main_thread_runner,
scoped_refptr<base::SequencedTaskRunner> background_thread_runner,
std::unique_ptr<password_manager::LoginDatabase> login_db,
const scoped_refptr<PasswordWebDataService>& web_data_service);
// PasswordStore:
void ShutdownOnUIThread() override;
private:
class DBHandler;
~PasswordStoreWin() override;
// Invoked from ShutdownOnUIThread, but run on the background thread.
void ShutdownOnBackgroundThread();
// password_manager::PasswordStore:
void GetLoginsImpl(const password_manager::PasswordStore::FormDigest& form,
std::unique_ptr<GetLoginsRequest> request) override;
std::unique_ptr<DBHandler> db_handler_;
DISALLOW_COPY_AND_ASSIGN(PasswordStoreWin);
};
#endif // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_