| Index: chrome/browser/password_manager/password_store_kwallet.h
|
| ===================================================================
|
| --- chrome/browser/password_manager/password_store_kwallet.h (revision 0)
|
| +++ chrome/browser/password_manager/password_store_kwallet.h (revision 0)
|
| @@ -0,0 +1,111 @@
|
| +// Copyright (c) 2006-2009 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_KWALLET
|
| +#define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_KWALLET
|
| +
|
| +#include <dbus/dbus-glib.h>
|
| +#include <glib.h>
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/lock.h"
|
| +#include "base/thread.h"
|
| +#include "chrome/browser/password_manager/password_store.h"
|
| +#include "webkit/glue/password_form.h"
|
| +
|
| +class Pickle;
|
| +class Profile;
|
| +class Task;
|
| +
|
| +class PasswordStoreKWallet : public PasswordStore {
|
| + public:
|
| + PasswordStoreKWallet();
|
| + virtual ~PasswordStoreKWallet();
|
| +
|
| + bool Init();
|
| +
|
| + private:
|
| + typedef std::vector<PasswordForm*> PasswordFormList;
|
| +
|
| + // Implements PasswordStore interface.
|
| + void AddLoginImpl(const PasswordForm& form);
|
| + void UpdateLoginImpl(const PasswordForm& form);
|
| + void RemoveLoginImpl(const PasswordForm& form);
|
| + void GetLoginsImpl(GetLoginsRequest* request);
|
| +
|
| + // Initialisation.
|
| + 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,
|
| + 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,
|
| + int wallet_handle);
|
| +
|
| + // 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.
|
| + bool CheckError();
|
| +
|
| + // Opens the wallet and ensures that the "Chrome Form Data" folder exists.
|
| + // Returns kInvalidWalletHandle on error.
|
| + 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);
|
| +
|
| + // 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,
|
| + PasswordFormList* forms);
|
| +
|
| + // 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);
|
| +
|
| + // 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.
|
| + static const char* kKWalletServiceName;
|
| + static const char* kKWalletPath;
|
| + static const char* kKWalletInterface;
|
| + static const char* kKLauncherServiceName;
|
| + static const char* kKLauncherPath;
|
| + static const char* kKLauncherInterface;
|
| +
|
| + // Invalid handle returned by WalletHandle().
|
| + static const int kInvalidKWalletHandle = -1;
|
| +
|
| + // Controls all access to kwallet dbus calls.
|
| + Lock kwallet_lock_;
|
| +
|
| + // 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.
|
| + DBusGConnection* connection_;
|
| + // Proxy to the kwallet dbus service.
|
| + DBusGProxy* proxy_;
|
| +
|
| + // The name of the wallet we've opened. Set during Init().
|
| + std::string wallet_name_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PasswordStoreKWallet);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_STORE_KWALLET
|
|
|