1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
93dff810fe0cc4962a5fa554318e9bf8bc45f5274Kristian Monsen#include "base/scoped_ptr.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/password_manager/password_store_default.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass LoginDatabase;
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Profile;
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass WebDataService;
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace webkit_glue {
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenstruct PasswordForm;
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Windows PasswordStore implementation that uses the default implementation,
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// but also uses IE7 passwords if no others found.
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PasswordStoreWin : public PasswordStoreDefault {
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // FilePath specifies path to WebDatabase.
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PasswordStoreWin(LoginDatabase* login_database,
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                   Profile* profile,
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                   WebDataService* web_data_service);
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
303dff810fe0cc4962a5fa554318e9bf8bc45f5274Kristian Monsen  class DBHandler;
313dff810fe0cc4962a5fa554318e9bf8bc45f5274Kristian Monsen
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~PasswordStoreWin();
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
343dff810fe0cc4962a5fa554318e9bf8bc45f5274Kristian Monsen  // Invoked from Shutdown, but run on the DB thread.
353dff810fe0cc4962a5fa554318e9bf8bc45f5274Kristian Monsen  void ShutdownOnDBThread();
363dff810fe0cc4962a5fa554318e9bf8bc45f5274Kristian Monsen
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual GetLoginsRequest* NewGetLoginsRequest(
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      GetLoginsCallback* callback) OVERRIDE;
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // See PasswordStoreDefault.
413dff810fe0cc4962a5fa554318e9bf8bc45f5274Kristian Monsen  virtual void Shutdown() OVERRIDE;
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void ForwardLoginsResult(GetLoginsRequest* request) OVERRIDE;
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Overridden so that we can save the form for later use.
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void GetLoginsImpl(GetLoginsRequest* request,
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                             const webkit_glue::PasswordForm& form) OVERRIDE;
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
483dff810fe0cc4962a5fa554318e9bf8bc45f5274Kristian Monsen  scoped_ptr<DBHandler> db_handler_;
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(PasswordStoreWin);
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_WIN_H_
54