| Index: chrome/browser/password_manager/password_store_kwallet.h
|
| ===================================================================
|
| --- chrome/browser/password_manager/password_store_kwallet.h (revision 48891)
|
| +++ chrome/browser/password_manager/password_store_kwallet.h (working copy)
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2010 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.
|
|
|
| @@ -12,8 +12,9 @@
|
| #include <vector>
|
|
|
| #include "base/lock.h"
|
| -#include "base/thread.h"
|
| +#include "chrome/browser/password_manager/login_database.h"
|
| #include "chrome/browser/password_manager/password_store.h"
|
| +#include "chrome/browser/webdata/web_data_service.h"
|
| #include "webkit/glue/password_form.h"
|
|
|
| class Pickle;
|
| @@ -22,38 +23,54 @@
|
|
|
| class PasswordStoreKWallet : public PasswordStore {
|
| public:
|
| - PasswordStoreKWallet();
|
| + PasswordStoreKWallet(LoginDatabase* login_db,
|
| + Profile* profile,
|
| + WebDataService* web_data_service);
|
|
|
| bool Init();
|
|
|
| private:
|
| - typedef std::vector<PasswordForm*> PasswordFormList;
|
| + typedef std::vector<webkit_glue::PasswordForm*> PasswordFormList;
|
|
|
| virtual ~PasswordStoreKWallet();
|
|
|
| // Implements PasswordStore interface.
|
| - void AddLoginImpl(const PasswordForm& form);
|
| - void UpdateLoginImpl(const PasswordForm& form);
|
| - void RemoveLoginImpl(const PasswordForm& form);
|
| - void GetLoginsImpl(GetLoginsRequest* request);
|
| + virtual void AddLoginImpl(const webkit_glue::PasswordForm& form);
|
| + virtual void UpdateLoginImpl(const webkit_glue::PasswordForm& form);
|
| + virtual void RemoveLoginImpl(const webkit_glue::PasswordForm& form);
|
| + virtual void RemoveLoginsCreatedBetweenImpl(const base::Time& delete_begin,
|
| + const base::Time& delete_end);
|
| + virtual void GetLoginsImpl(GetLoginsRequest* request,
|
| + const webkit_glue::PasswordForm& form);
|
| + virtual void GetAutofillableLoginsImpl(GetLoginsRequest* request);
|
| + virtual void GetBlacklistLoginsImpl(GetLoginsRequest* request);
|
| + virtual bool FillAutofillableLogins(
|
| + std::vector<webkit_glue::PasswordForm*>* forms);
|
| + virtual bool FillBlacklistLogins(
|
| + std::vector<webkit_glue::PasswordForm*>* forms);
|
|
|
| - // Initialisation.
|
| + // Initialization.
|
| bool StartKWalletd();
|
| bool InitWallet();
|
|
|
| - // Reads a list of PasswordForms from the wallet that match the signon_realm
|
| - // of key.
|
| - void GetLoginsList(PasswordFormList* forms, const PasswordForm& key,
|
| + // Reads a list of PasswordForms from the wallet that match the signon_realm.
|
| + void GetLoginsList(PasswordFormList* forms,
|
| + const std::string& signon_realm,
|
| int wallet_handle);
|
|
|
| - // Writes a list of PasswordForms to the wallet with the signon_realm from
|
| - // key. Overwrites any existing list for this key.
|
| - void SetLoginsList(const PasswordFormList& forms, const PasswordForm& key,
|
| + // Writes a list of PasswordForms to the wallet with the given signon_realm.
|
| + // Overwrites any existing list for this signon_realm. Removes the entry if
|
| + // |forms| is empty.
|
| + void SetLoginsList(const PasswordFormList& forms,
|
| + const std::string& signon_realm,
|
| int wallet_handle);
|
|
|
| - // Checks if the last dbus call returned an error. If it did, logs the error
|
| + // Helper for FillAutofillableLogins() and FillBlacklistLogins().
|
| + bool FillSomeLogins(bool autofillable, PasswordFormList* forms);
|
| +
|
| + // Checks if the last DBus call returned an error. If it did, logs the error
|
| // message, frees it and returns true.
|
| - // This must be called after every dbus call.
|
| + // This must be called after every DBus call.
|
| bool CheckError();
|
|
|
| // Opens the wallet and ensures that the "Chrome Form Data" folder exists.
|
| @@ -61,27 +78,35 @@
|
| int WalletHandle();
|
|
|
| // Compares two PasswordForms and returns true if they are the same.
|
| - // Checks only the fields that we persist in KWallet, and ignores
|
| - // password_value.
|
| - static bool CompareForms(const PasswordForm& a, const PasswordForm& b);
|
| + // If |update_check| is false, we only check the fields that are checked by
|
| + // LoginDatabase::UpdateLogin() when updating logins; otherwise, we check the
|
| + // fields that are checked by LoginDatabase::RemoveLogin() for removing them.
|
| + static bool CompareForms(const webkit_glue::PasswordForm& a,
|
| + const webkit_glue::PasswordForm& b,
|
| + bool update_check);
|
|
|
| // Serializes a list of PasswordForms to be stored in the wallet.
|
| static void SerializeValue(const PasswordFormList& forms, Pickle* pickle);
|
|
|
| // Deserializes a list of PasswordForms from the wallet.
|
| - static void DeserializeValue(const PasswordForm& key, const Pickle& pickle,
|
| + static void DeserializeValue(const std::string& signon_realm,
|
| + const Pickle& pickle,
|
| PasswordFormList* forms);
|
|
|
| - // Convenience function to read a GURL from a Pickle. Assumes the URL has
|
| + // Convenience function to read a GURL from a Pickle. Assumes the URL has
|
| // been written as a std::string.
|
| static void ReadGURL(const Pickle& pickle, void** iter, GURL* url);
|
|
|
| + // In case the fields in the pickle ever change, version them so we can try to
|
| + // read old pickles. (Note: do not eat old pickles past the expiration date.)
|
| + static const int kPickleVersion = 0;
|
| +
|
| // Name of the application - will appear in kwallet's dialogs.
|
| static const char* kAppId;
|
| // Name of the folder to store passwords in.
|
| static const char* kKWalletFolder;
|
|
|
| - // DBUS stuff.
|
| + // DBus stuff.
|
| static const char* kKWalletServiceName;
|
| static const char* kKWalletPath;
|
| static const char* kKWalletInterface;
|
| @@ -92,18 +117,18 @@
|
| // Invalid handle returned by WalletHandle().
|
| static const int kInvalidKWalletHandle = -1;
|
|
|
| - // Controls all access to kwallet dbus calls.
|
| + // Controls all access to kwallet DBus calls.
|
| Lock kwallet_lock_;
|
|
|
| - // Error from the last dbus call. NULL when there's no error. Freed and
|
| + // Error from the last DBus call. NULL when there's no error. Freed and
|
| // cleared by CheckError().
|
| GError* error_;
|
| - // Connection to the dbus session bus.
|
| + // Connection to the DBus session bus.
|
| DBusGConnection* connection_;
|
| - // Proxy to the kwallet dbus service.
|
| + // Proxy to the kwallet DBus service.
|
| DBusGProxy* proxy_;
|
|
|
| - // The name of the wallet we've opened. Set during Init().
|
| + // The name of the wallet we've opened. Set during Init().
|
| std::string wallet_name_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PasswordStoreKWallet);
|
|
|