| Index: chrome/browser/password_manager/password_store_gnome.cc
|
| diff --git a/chrome/browser/password_manager/password_store_gnome.cc b/chrome/browser/password_manager/password_store_gnome.cc
|
| deleted file mode 100644
|
| index 93f3b6f1e2eb57c4f84da77f7e9a0ecd056db439..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/password_manager/password_store_gnome.cc
|
| +++ /dev/null
|
| @@ -1,177 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "chrome/browser/password_manager/password_store_gnome.h"
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/string_util.h"
|
| -#include "base/task.h"
|
| -#include "base/time.h"
|
| -
|
| -using std::map;
|
| -using std::string;
|
| -using std::vector;
|
| -
|
| -// Schema is analagous to the fields in PasswordForm.
|
| -const GnomeKeyringPasswordSchema PasswordStoreGnome::kGnomeSchema = {
|
| - GNOME_KEYRING_ITEM_GENERIC_SECRET, {
|
| - { "origin_url", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
|
| - { "action_url", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
|
| - { "username_element", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
|
| - { "username_value", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
|
| - { "password_element", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
|
| - { "submit_element", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
|
| - { "signon_realm", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
|
| - { "ssl_valid", GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32 },
|
| - { "preferred", GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32 },
|
| - { "date_created", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
|
| - { "blacklisted_by_user", GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32 },
|
| - { "scheme", GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32 },
|
| - { NULL }
|
| - }
|
| -};
|
| -
|
| -PasswordStoreGnome::PasswordStoreGnome() {
|
| -}
|
| -
|
| -PasswordStoreGnome::~PasswordStoreGnome() {
|
| -}
|
| -
|
| -bool PasswordStoreGnome::Init() {
|
| - return PasswordStore::Init() && gnome_keyring_is_available();
|
| -}
|
| -
|
| -void PasswordStoreGnome::AddLoginImpl(const PasswordForm& form) {
|
| - AutoLock l(gnome_keyring_lock_);
|
| - GnomeKeyringResult result = gnome_keyring_store_password_sync(
|
| - &kGnomeSchema,
|
| - NULL, // Default keyring.
|
| - // TODO(johnmaguire@google.com): Localise this.
|
| - "Form password stored by Chrome",
|
| - WideToASCII(form.password_value).c_str(),
|
| - "origin_url", form.origin.spec().c_str(),
|
| - "action_url", form.action.spec().c_str(),
|
| - "username_element", form.username_element.c_str(),
|
| - "username_value", form.username_value.c_str(),
|
| - "password_element", form.password_element.c_str(),
|
| - "submit_element", form.submit_element.c_str(),
|
| - "signon_realm", form.signon_realm.c_str(),
|
| - "ssl_valid", form.ssl_valid,
|
| - "preferred", form.preferred,
|
| - "date_created", Int64ToString(base::Time::Now().ToTimeT()).c_str(),
|
| - "blacklisted_by_user", form.blacklisted_by_user,
|
| - "scheme", form.scheme,
|
| - NULL);
|
| -
|
| - if (result != GNOME_KEYRING_RESULT_OK) {
|
| - LOG(ERROR) << "Keyring save failed: "
|
| - << gnome_keyring_result_to_message(result);
|
| - }
|
| -}
|
| -
|
| -void PasswordStoreGnome::UpdateLoginImpl(const PasswordForm& form) {
|
| - AddLoginImpl(form); // Add & Update are the same in gnome keyring.
|
| -}
|
| -
|
| -void PasswordStoreGnome::RemoveLoginImpl(const PasswordForm& form) {
|
| - AutoLock l(gnome_keyring_lock_);
|
| - GnomeKeyringResult result = gnome_keyring_delete_password_sync(
|
| - &kGnomeSchema,
|
| - "origin_url", form.origin.spec().c_str(),
|
| - "action_url", form.action.spec().c_str(),
|
| - "username_element", form.username_element.c_str(),
|
| - "username_value", form.username_value.c_str(),
|
| - "password_element", form.password_element.c_str(),
|
| - "submit_element", form.submit_element.c_str(),
|
| - "signon_realm", form.signon_realm.c_str(),
|
| - "ssl_valid", form.ssl_valid,
|
| - "preferred", form.preferred,
|
| - "date_created", Int64ToString(form.date_created.ToTimeT()).c_str(),
|
| - "blacklisted_by_user", form.blacklisted_by_user,
|
| - "scheme", form.scheme,
|
| - NULL);
|
| - if (result != GNOME_KEYRING_RESULT_OK) {
|
| - LOG(ERROR) << "Keyring delete failed: "
|
| - << gnome_keyring_result_to_message(result);
|
| - }
|
| -}
|
| -
|
| -void PasswordStoreGnome::GetLoginsImpl(GetLoginsRequest* request) {
|
| - AutoLock l(gnome_keyring_lock_);
|
| - GList* found = NULL;
|
| - // Search gnome keyring for matching passwords.
|
| - GnomeKeyringResult result = gnome_keyring_find_itemsv_sync(
|
| - GNOME_KEYRING_ITEM_GENERIC_SECRET,
|
| - &found,
|
| - "signon_realm", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING,
|
| - request->form.signon_realm.c_str(),
|
| - NULL);
|
| - vector<PasswordForm*> forms;
|
| - if (result == GNOME_KEYRING_RESULT_NO_MATCH) {
|
| - NotifyConsumer(request, forms);
|
| - return;
|
| - } else if (result != GNOME_KEYRING_RESULT_OK) {
|
| - LOG(ERROR) << "Keyring find failed: "
|
| - << gnome_keyring_result_to_message(result);
|
| - NotifyConsumer(request, forms);
|
| - return;
|
| - }
|
| -
|
| - // Parse all the results from the returned GList into a
|
| - // vector<PasswordForm*>. PasswordForms are allocated on the heap. These
|
| - // will be deleted by the consumer.
|
| - GList* element = g_list_first(found);
|
| - while (element != NULL) {
|
| - GnomeKeyringFound* data = static_cast<GnomeKeyringFound*>(element->data);
|
| - char* password = data->secret;
|
| -
|
| - GnomeKeyringAttributeList* attributes = data->attributes;
|
| - // Read the string & int attributes into the appropriate map.
|
| - map<string, string> string_attribute_map;
|
| - map<string, uint32> uint_attribute_map;
|
| - for (unsigned int i = 0; i < attributes->len; ++i) {
|
| - GnomeKeyringAttribute attribute =
|
| - gnome_keyring_attribute_list_index(attributes, i);
|
| - if (attribute.type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
|
| - string_attribute_map[string(attribute.name)] =
|
| - string(attribute.value.string);
|
| - } else if (attribute.type == GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32) {
|
| - uint_attribute_map[string(attribute.name)] = attribute.value.integer;
|
| - }
|
| - }
|
| -
|
| - PasswordForm* form = new PasswordForm();
|
| - form->origin = GURL(string_attribute_map["origin_url"]);
|
| - form->action = GURL(string_attribute_map["action_url"]);
|
| - form->username_element =
|
| - ASCIIToWide(string(string_attribute_map["username_element"]));
|
| - form->username_value =
|
| - ASCIIToWide(string(string_attribute_map["username_value"]));
|
| - form->password_element =
|
| - ASCIIToWide(string(string_attribute_map["password_element"]));
|
| - form->password_value = ASCIIToWide(string(password));
|
| - form->submit_element =
|
| - ASCIIToWide(string(string_attribute_map["submit_element"]));
|
| - form->signon_realm = uint_attribute_map["signon_realm"];
|
| - form->ssl_valid = uint_attribute_map["ssl_valid"];
|
| - form->preferred = uint_attribute_map["preferred"];
|
| - string date = string_attribute_map["date_created"];
|
| - int64 date_created = 0;
|
| - DCHECK(StringToInt64(date, &date_created) && date_created != 0);
|
| - form->date_created = base::Time::FromTimeT(date_created);
|
| - form->blacklisted_by_user = uint_attribute_map["blacklisted_by_user"];
|
| - form->scheme =
|
| - static_cast<PasswordForm::Scheme>(uint_attribute_map["scheme"]);
|
| -
|
| - forms.push_back(form);
|
| -
|
| - element = g_list_next(element);
|
| - }
|
| - gnome_keyring_found_list_free(found);
|
| - found = NULL;
|
| -
|
| - NotifyConsumer(request, forms);
|
| -}
|
|
|