Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/password_manager/native_backend_gnome_x.h" | 5 #include "chrome/browser/password_manager/native_backend_gnome_x.h" |
| 6 | 6 |
| 7 #include <dlfcn.h> | 7 #include <dlfcn.h> |
| 8 #include <gnome-keyring.h> | 8 #include <gnome-keyring.h> |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 #include <stdint.h> | 10 #include <stdint.h> |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 35 using base::UTF8ToUTF16; | 35 using base::UTF8ToUTF16; |
| 36 using base::UTF16ToUTF8; | 36 using base::UTF16ToUTF8; |
| 37 using content::BrowserThread; | 37 using content::BrowserThread; |
| 38 using namespace password_manager::metrics_util; | 38 using namespace password_manager::metrics_util; |
| 39 using password_manager::PasswordStore; | 39 using password_manager::PasswordStore; |
| 40 | 40 |
| 41 namespace { | 41 namespace { |
| 42 const int kMaxPossibleTimeTValue = std::numeric_limits<int>::max(); | 42 const int kMaxPossibleTimeTValue = std::numeric_limits<int>::max(); |
| 43 } | 43 } |
| 44 | 44 |
| 45 #define GNOME_KEYRING_DEFINE_POINTER(name) \ | 45 typeof(&::gnome_keyring_is_available) |
|
vasilii
2016/08/01 09:51:26
decltype
cfroussios
2016/08/01 10:54:52
Done.
| |
| 46 typeof(&::gnome_keyring_##name) GnomeKeyringLoader::gnome_keyring_##name; | 46 GnomeKeyringLoader::gnome_keyring_is_available; |
| 47 GNOME_KEYRING_FOR_EACH_FUNC(GNOME_KEYRING_DEFINE_POINTER) | 47 typeof(&::gnome_keyring_store_password) |
| 48 #undef GNOME_KEYRING_DEFINE_POINTER | 48 GnomeKeyringLoader::gnome_keyring_store_password; |
| 49 typeof(&::gnome_keyring_delete_password) | |
| 50 GnomeKeyringLoader::gnome_keyring_delete_password; | |
| 51 typeof(&::gnome_keyring_find_items) | |
| 52 GnomeKeyringLoader::gnome_keyring_find_items; | |
| 53 typeof(&::gnome_keyring_result_to_message) | |
| 54 GnomeKeyringLoader::gnome_keyring_result_to_message; | |
| 55 typeof(&::gnome_keyring_attribute_list_free) | |
| 56 GnomeKeyringLoader::gnome_keyring_attribute_list_free; | |
| 57 typeof(&::gnome_keyring_attribute_list_new) | |
| 58 GnomeKeyringLoader::gnome_keyring_attribute_list_new; | |
| 59 typeof(&::gnome_keyring_attribute_list_append_string) | |
| 60 GnomeKeyringLoader::gnome_keyring_attribute_list_append_string; | |
| 61 typeof(&::gnome_keyring_attribute_list_append_uint32) | |
| 62 GnomeKeyringLoader::gnome_keyring_attribute_list_append_uint32; | |
| 49 | 63 |
| 50 bool GnomeKeyringLoader::keyring_loaded = false; | 64 bool GnomeKeyringLoader::keyring_loaded = false; |
| 51 | 65 |
| 52 #define GNOME_KEYRING_FUNCTION_INFO(name) \ | |
| 53 {"gnome_keyring_"#name, reinterpret_cast<void**>(&gnome_keyring_##name)}, | |
| 54 const GnomeKeyringLoader::FunctionInfo GnomeKeyringLoader::functions[] = { | 66 const GnomeKeyringLoader::FunctionInfo GnomeKeyringLoader::functions[] = { |
| 55 GNOME_KEYRING_FOR_EACH_FUNC(GNOME_KEYRING_FUNCTION_INFO) | 67 {"gnome_keyring_is_available", |
| 56 {nullptr, nullptr} | 68 reinterpret_cast<void**>(&gnome_keyring_is_available)}, |
|
vasilii
2016/08/01 09:51:26
Will static_cast work here?
cfroussios
2016/08/01 10:54:52
The compiler does not allow it.
| |
| 57 }; | 69 {"gnome_keyring_store_password", |
| 58 #undef GNOME_KEYRING_FUNCTION_INFO | 70 reinterpret_cast<void**>(&gnome_keyring_store_password)}, |
| 71 {"gnome_keyring_delete_password", | |
| 72 reinterpret_cast<void**>(&gnome_keyring_delete_password)}, | |
| 73 {"gnome_keyring_find_items", | |
| 74 reinterpret_cast<void**>(&gnome_keyring_find_items)}, | |
| 75 {"gnome_keyring_result_to_message", | |
| 76 reinterpret_cast<void**>(&gnome_keyring_result_to_message)}, | |
| 77 {"gnome_keyring_attribute_list_free", | |
| 78 reinterpret_cast<void**>(&gnome_keyring_attribute_list_free)}, | |
| 79 {"gnome_keyring_attribute_list_new", | |
| 80 reinterpret_cast<void**>(&gnome_keyring_attribute_list_new)}, | |
| 81 {"gnome_keyring_attribute_list_append_string", | |
| 82 reinterpret_cast<void**>(&gnome_keyring_attribute_list_append_string)}, | |
| 83 {"gnome_keyring_attribute_list_append_uint32", | |
| 84 reinterpret_cast<void**>(&gnome_keyring_attribute_list_append_uint32)}}; | |
| 59 | 85 |
| 60 /* Load the library and initialize the function pointers. */ | 86 /* Load the library and initialize the function pointers. */ |
| 61 bool GnomeKeyringLoader::LoadGnomeKeyring() { | 87 bool GnomeKeyringLoader::LoadGnomeKeyring() { |
| 62 if (keyring_loaded) | 88 if (keyring_loaded) |
| 63 return true; | 89 return true; |
| 64 | 90 |
| 65 void* handle = dlopen("libgnome-keyring.so.0", RTLD_NOW | RTLD_GLOBAL); | 91 void* handle = dlopen("libgnome-keyring.so.0", RTLD_NOW | RTLD_GLOBAL); |
| 66 if (!handle) { | 92 if (!handle) { |
| 67 // We wanted to use GNOME Keyring, but we couldn't load it. Warn, because | 93 // We wanted to use GNOME Keyring, but we couldn't load it. Warn, because |
| 68 // either the user asked for this, or we autodetected it incorrectly. (Or | 94 // either the user asked for this, or we autodetected it incorrectly. (Or |
| (...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 824 ScopedVector<PasswordForm> forms; | 850 ScopedVector<PasswordForm> forms; |
| 825 if (!GetLoginsBetween(get_begin, get_end, date_to_compare, &forms)) | 851 if (!GetLoginsBetween(get_begin, get_end, date_to_compare, &forms)) |
| 826 return false; | 852 return false; |
| 827 | 853 |
| 828 for (size_t i = 0; i < forms.size(); ++i) { | 854 for (size_t i = 0; i < forms.size(); ++i) { |
| 829 if (!RemoveLogin(*forms[i], changes)) | 855 if (!RemoveLogin(*forms[i], changes)) |
| 830 return false; | 856 return false; |
| 831 } | 857 } |
| 832 return true; | 858 return true; |
| 833 } | 859 } |
| OLD | NEW |