| Index: chrome/browser/chromeos/cros/cros_library.cc
|
| ===================================================================
|
| --- chrome/browser/chromeos/cros/cros_library.cc (revision 42341)
|
| +++ chrome/browser/chromeos/cros/cros_library.cc (working copy)
|
| @@ -4,39 +4,162 @@
|
|
|
| #include "chrome/browser/chromeos/cros/cros_library.h"
|
|
|
| -#include <dlfcn.h>
|
| +#include "chrome/browser/chromeos/cros/cros_library_loader.h"
|
| +#include "chrome/browser/chromeos/cros/cryptohome_library.h"
|
| +#include "chrome/browser/chromeos/cros/language_library.h"
|
| +#include "chrome/browser/chromeos/cros/login_library.h"
|
| +#include "chrome/browser/chromeos/cros/mount_library.h"
|
| +#include "chrome/browser/chromeos/cros/network_library.h"
|
| +#include "chrome/browser/chromeos/cros/power_library.h"
|
| +#include "chrome/browser/chromeos/cros/synaptics_library.h"
|
|
|
| -#include "base/file_path.h"
|
| -#include "base/logging.h"
|
| -#include "base/path_service.h"
|
| -#include "chrome/common/chrome_paths.h"
|
| -#include "third_party/cros/chromeos_cros_api.h"
|
| -
|
| namespace chromeos {
|
|
|
| -// static
|
| -bool CrosLibrary::loaded_ = false;
|
| +CrosLibrary::CrosLibrary() : library_loader_(NULL),
|
| + crypto_lib_(NULL),
|
| + language_lib_(NULL),
|
| + login_lib_(NULL),
|
| + mount_lib_(NULL),
|
| + network_lib_(NULL),
|
| + power_lib_(NULL),
|
| + synaptics_lib_(NULL),
|
| + loaded_(false),
|
| + load_error_(false),
|
| + test_api_(NULL) {
|
|
|
| -// static
|
| -bool CrosLibrary::load_error_ = false;
|
| +}
|
|
|
| +CrosLibrary::~CrosLibrary() {
|
| + if (library_loader_)
|
| + delete library_loader_;
|
| + if (crypto_lib_)
|
| + delete crypto_lib_;
|
| + if (language_lib_)
|
| + delete language_lib_;
|
| + if (login_lib_)
|
| + delete login_lib_;
|
| + if (mount_lib_)
|
| + delete mount_lib_;
|
| + if (network_lib_)
|
| + delete network_lib_;
|
| + if (power_lib_)
|
| + delete power_lib_;
|
| + if (synaptics_lib_)
|
| + delete synaptics_lib_;
|
| + if (test_api_)
|
| + delete test_api_;
|
| +}
|
| +
|
| // static
|
| -std::string CrosLibrary::load_error_string_;
|
| +CrosLibrary* CrosLibrary::Get() {
|
| + return Singleton<CrosLibrary>::get();
|
| +}
|
|
|
| -// static
|
| +CryptohomeLibrary* CrosLibrary::GetCryptohomeLibrary() {
|
| + if (!crypto_lib_)
|
| + crypto_lib_ = new CryptohomeLibraryImpl();
|
| + return crypto_lib_;
|
| +}
|
| +
|
| +LanguageLibrary* CrosLibrary::GetLanguageLibrary() {
|
| + if (!language_lib_)
|
| + language_lib_ = new LanguageLibraryImpl();
|
| + return language_lib_;
|
| +}
|
| +
|
| +LoginLibrary* CrosLibrary::GetLoginLibrary() {
|
| + if (!login_lib_)
|
| + login_lib_ = new LoginLibraryImpl();
|
| + return login_lib_;
|
| +}
|
| +
|
| +MountLibrary* CrosLibrary::GetMountLibrary() {
|
| + if (!mount_lib_)
|
| + mount_lib_ = new MountLibraryImpl();
|
| + return mount_lib_;
|
| +}
|
| +
|
| +NetworkLibrary* CrosLibrary::GetNetworkLibrary() {
|
| + if (!network_lib_)
|
| + network_lib_ = new NetworkLibraryImpl();
|
| + return network_lib_;
|
| +}
|
| +
|
| +PowerLibrary* CrosLibrary::GetPowerLibrary() {
|
| + if (!power_lib_)
|
| + power_lib_ = new PowerLibraryImpl();
|
| + return power_lib_;
|
| +}
|
| +
|
| +SynapticsLibrary* CrosLibrary::GetSynapticsLibrary() {
|
| + if (!synaptics_lib_)
|
| + synaptics_lib_ = new SynapticsLibraryImpl();
|
| + return synaptics_lib_;
|
| +}
|
| +
|
| bool CrosLibrary::EnsureLoaded() {
|
| if (!loaded_ && !load_error_) {
|
| - FilePath path;
|
| - if (PathService::Get(chrome::FILE_CHROMEOS_API, &path))
|
| - loaded_ = LoadLibcros(path.value().c_str(), load_error_string_);
|
| -
|
| - if (!loaded_) {
|
| - load_error_ = true;
|
| - LOG(ERROR) << "Problem loading chromeos shared object: "
|
| - << load_error_string_;
|
| - }
|
| + if (!library_loader_)
|
| + library_loader_ = new CrosLibraryLoader();
|
| + loaded_ = library_loader_->Load(&load_error_string_);
|
| + load_error_ = !loaded_;
|
| }
|
| return loaded_;
|
| }
|
|
|
| -} // namespace chromeos
|
| +CrosLibrary::TestApi* CrosLibrary::GetTestApi() {
|
| + if (!test_api_)
|
| + test_api_ = new TestApi(this);
|
| + return test_api_;
|
| +}
|
| +
|
| +void CrosLibrary::TestApi::SetLibraryLoader(LibraryLoader* loader) {
|
| + if (library_->library_loader_)
|
| + delete library_->library_loader_;
|
| + library_->library_loader_ = loader;
|
| +}
|
| +
|
| +void CrosLibrary::TestApi::SetCryptohomeLibrary(CryptohomeLibrary* library) {
|
| + if (library_->crypto_lib_)
|
| + delete library_->crypto_lib_;
|
| + library_->crypto_lib_ = library;
|
| +}
|
| +
|
| +void CrosLibrary::TestApi::SetLanguageLibrary(LanguageLibrary* library) {
|
| + if (library_->language_lib_)
|
| + delete library_->language_lib_;
|
| + library_->language_lib_ = library;
|
| +}
|
| +
|
| +void CrosLibrary::TestApi::SetLoginLibrary(LoginLibrary* library) {
|
| + if (library_->login_lib_)
|
| + delete library_->login_lib_;
|
| + library_->login_lib_ = library;
|
| +}
|
| +
|
| +void CrosLibrary::TestApi::SetMountLibrary(MountLibrary* library) {
|
| + if (library_->mount_lib_)
|
| + delete library_->mount_lib_;
|
| + library_->mount_lib_ = library;
|
| +}
|
| +
|
| +void CrosLibrary::TestApi::SetNetworkLibrary(NetworkLibrary* library) {
|
| + if (library_->network_lib_)
|
| + delete library_->network_lib_;
|
| + library_->network_lib_ = library;
|
| +}
|
| +
|
| +void CrosLibrary::TestApi::SetPowerLibrary(PowerLibrary* library) {
|
| + if (library_->power_lib_)
|
| + delete library_->power_lib_;
|
| + library_->power_lib_ = library;
|
| +}
|
| +
|
| +void CrosLibrary::TestApi::SetSynapticsLibrary(SynapticsLibrary* library) {
|
| + if (library_->synaptics_lib_)
|
| + delete library_->synaptics_lib_;
|
| + library_->synaptics_lib_ = library;
|
| +}
|
| +
|
| +} // end namespace.
|
| +
|
|
|