| Index: chrome/browser/password_manager/native_backend_gnome_x.cc
|
| diff --git a/chrome/browser/password_manager/native_backend_gnome_x.cc b/chrome/browser/password_manager/native_backend_gnome_x.cc
|
| index 9d262852c9d313ec3d30146d18beff006cdd946b..0199311e2d468d5468b75af6576be723081170b9 100644
|
| --- a/chrome/browser/password_manager/native_backend_gnome_x.cc
|
| +++ b/chrome/browser/password_manager/native_backend_gnome_x.cc
|
| @@ -4,11 +4,6 @@
|
|
|
| #include "chrome/browser/password_manager/native_backend_gnome_x.h"
|
|
|
| -#include <dlfcn.h>
|
| -#include <gnome-keyring.h>
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -
|
| #include <limits>
|
| #include <map>
|
| #include <memory>
|
| @@ -42,79 +37,6 @@ namespace {
|
| const int kMaxPossibleTimeTValue = std::numeric_limits<int>::max();
|
| }
|
|
|
| -decltype(&::gnome_keyring_is_available)
|
| - GnomeKeyringLoader::gnome_keyring_is_available_ptr;
|
| -decltype(&::gnome_keyring_store_password)
|
| - GnomeKeyringLoader::gnome_keyring_store_password_ptr;
|
| -decltype(&::gnome_keyring_delete_password)
|
| - GnomeKeyringLoader::gnome_keyring_delete_password_ptr;
|
| -decltype(&::gnome_keyring_find_items)
|
| - GnomeKeyringLoader::gnome_keyring_find_items_ptr;
|
| -decltype(&::gnome_keyring_result_to_message)
|
| - GnomeKeyringLoader::gnome_keyring_result_to_message_ptr;
|
| -decltype(&::gnome_keyring_attribute_list_free)
|
| - GnomeKeyringLoader::gnome_keyring_attribute_list_free_ptr;
|
| -decltype(&::gnome_keyring_attribute_list_new)
|
| - GnomeKeyringLoader::gnome_keyring_attribute_list_new_ptr;
|
| -decltype(&::gnome_keyring_attribute_list_append_string)
|
| - GnomeKeyringLoader::gnome_keyring_attribute_list_append_string_ptr;
|
| -decltype(&::gnome_keyring_attribute_list_append_uint32)
|
| - GnomeKeyringLoader::gnome_keyring_attribute_list_append_uint32_ptr;
|
| -
|
| -bool GnomeKeyringLoader::keyring_loaded = false;
|
| -
|
| -const GnomeKeyringLoader::FunctionInfo GnomeKeyringLoader::functions[] = {
|
| - {"gnome_keyring_is_available",
|
| - reinterpret_cast<void**>(&gnome_keyring_is_available_ptr)},
|
| - {"gnome_keyring_store_password",
|
| - reinterpret_cast<void**>(&gnome_keyring_store_password_ptr)},
|
| - {"gnome_keyring_delete_password",
|
| - reinterpret_cast<void**>(&gnome_keyring_delete_password_ptr)},
|
| - {"gnome_keyring_find_items",
|
| - reinterpret_cast<void**>(&gnome_keyring_find_items_ptr)},
|
| - {"gnome_keyring_result_to_message",
|
| - reinterpret_cast<void**>(&gnome_keyring_result_to_message_ptr)},
|
| - {"gnome_keyring_attribute_list_free",
|
| - reinterpret_cast<void**>(&gnome_keyring_attribute_list_free_ptr)},
|
| - {"gnome_keyring_attribute_list_new",
|
| - reinterpret_cast<void**>(&gnome_keyring_attribute_list_new_ptr)},
|
| - {"gnome_keyring_attribute_list_append_string",
|
| - reinterpret_cast<void**>(&gnome_keyring_attribute_list_append_string_ptr)},
|
| - {"gnome_keyring_attribute_list_append_uint32",
|
| - reinterpret_cast<void**>(
|
| - &gnome_keyring_attribute_list_append_uint32_ptr)}};
|
| -
|
| -/* Load the library and initialize the function pointers. */
|
| -bool GnomeKeyringLoader::LoadGnomeKeyring() {
|
| - if (keyring_loaded)
|
| - return true;
|
| -
|
| - void* handle = dlopen("libgnome-keyring.so.0", RTLD_NOW | RTLD_GLOBAL);
|
| - if (!handle) {
|
| - // We wanted to use GNOME Keyring, but we couldn't load it. Warn, because
|
| - // either the user asked for this, or we autodetected it incorrectly. (Or
|
| - // the system has broken libraries, which is also good to warn about.)
|
| - LOG(WARNING) << "Could not load libgnome-keyring.so.0: " << dlerror();
|
| - return false;
|
| - }
|
| -
|
| - for (size_t i = 0; i < arraysize(functions); ++i) {
|
| - dlerror();
|
| - *functions[i].pointer = dlsym(handle, functions[i].name);
|
| - const char* error = dlerror();
|
| - if (error) {
|
| - LOG(ERROR) << "Unable to load symbol "
|
| - << functions[i].name << ": " << error;
|
| - dlclose(handle);
|
| - return false;
|
| - }
|
| - }
|
| -
|
| - keyring_loaded = true;
|
| - // We leak the library handle. That's OK: this function is called only once.
|
| - return true;
|
| -}
|
| -
|
| namespace {
|
|
|
| const char kGnomeKeyringAppString[] = "chrome";
|
|
|