| Index: chrome/browser/chromeos/cros/cros_library.h
|
| ===================================================================
|
| --- chrome/browser/chromeos/cros/cros_library.h (revision 42341)
|
| +++ chrome/browser/chromeos/cros/cros_library.h (working copy)
|
| @@ -7,31 +7,111 @@
|
|
|
| #include <string>
|
| #include "base/basictypes.h"
|
| +#include "base/singleton.h"
|
|
|
| namespace chromeos {
|
|
|
| -// This class handles the loading of the ChromeOS shared library.
|
| +class CryptohomeLibrary;
|
| +class LanguageLibrary;
|
| +class LibraryLoader;
|
| +class LoginLibrary;
|
| +class MountLibrary;
|
| +class NetworkLibrary;
|
| +class PowerLibrary;
|
| +class SynapticsLibrary;
|
| +
|
| +// This class handles access to sub-parts of ChromeOS library. it provides
|
| +// a level of indirection so individual libraries that it exposes can
|
| +// be mocked for testing.
|
| class CrosLibrary {
|
| public:
|
| +
|
| + // This class provides access to internal members of CrosLibrary class for
|
| + // purpose of testing (i.e. replacement of members' implementation with
|
| + // mock objects).
|
| + class TestApi {
|
| + public:
|
| + // Setter for LibraryLoader.
|
| + void SetLibraryLoader(LibraryLoader* loader);
|
| + // Setter for CryptohomeLibrary.
|
| + void SetCryptohomeLibrary(CryptohomeLibrary* library);
|
| + // Setter for LanguageLibrary
|
| + void SetLanguageLibrary(LanguageLibrary* library);
|
| + // Setter for LoginLibrary.
|
| + void SetLoginLibrary(LoginLibrary* library);
|
| + // Setter for MountLibrary.
|
| + void SetMountLibrary(MountLibrary* library);
|
| + // Setter for NetworkLibrary.
|
| + void SetNetworkLibrary(NetworkLibrary* library);
|
| + // Setter for PowerLibrary.
|
| + void SetPowerLibrary(PowerLibrary* library);
|
| + // Setter for SynapticsLibrary.
|
| + void SetSynapticsLibrary(SynapticsLibrary* library);
|
| +
|
| + private:
|
| + friend class CrosLibrary;
|
| + explicit TestApi(CrosLibrary* library) : library_(library) {}
|
| + CrosLibrary* library_;
|
| + };
|
| +
|
| + // This gets the CrosLibrary.
|
| + static CrosLibrary* Get();
|
| +
|
| + // Getter for CryptohomeLibrary.
|
| + CryptohomeLibrary* GetCryptohomeLibrary();
|
| +
|
| + // // Getter for LanguageLibrary
|
| + LanguageLibrary* GetLanguageLibrary();
|
| +
|
| + // Getter for LoginLibrary.
|
| + LoginLibrary* GetLoginLibrary();
|
| +
|
| + // Getter for MountLibrary
|
| + MountLibrary* GetMountLibrary();
|
| +
|
| + // Getter for NetworkLibrary
|
| + NetworkLibrary* GetNetworkLibrary();
|
| +
|
| + // Getter for PowerLibrary
|
| + PowerLibrary* GetPowerLibrary();
|
| +
|
| + // This gets the singleton SynapticsLibrary.
|
| + SynapticsLibrary* GetSynapticsLibrary();
|
| +
|
| + // Getter for Test API that gives access to internal members of this class.
|
| + TestApi* GetTestApi();
|
| +
|
| // Ensures that the library is loaded, loading it if needed. If the library
|
| // could not be loaded, returns false.
|
| - static bool EnsureLoaded();
|
| + bool EnsureLoaded();
|
|
|
| // Returns an unlocalized string describing the last load error (if any).
|
| - static const std::string& load_error_string() {
|
| + const std::string& load_error_string() {
|
| return load_error_string_;
|
| }
|
|
|
| private:
|
| - CrosLibrary() {}
|
| - ~CrosLibrary() {}
|
| + friend struct DefaultSingletonTraits<chromeos::CrosLibrary>;
|
| + friend class CrosLibrary::TestApi;
|
|
|
| + CrosLibrary();
|
| + virtual ~CrosLibrary();
|
| +
|
| + LibraryLoader* library_loader_;
|
| + CryptohomeLibrary* crypto_lib_;
|
| + LanguageLibrary* language_lib_;
|
| + LoginLibrary* login_lib_;
|
| + MountLibrary* mount_lib_;
|
| + NetworkLibrary* network_lib_;
|
| + PowerLibrary* power_lib_;
|
| + SynapticsLibrary* synaptics_lib_;
|
| // True if libcros was successfully loaded.
|
| - static bool loaded_;
|
| + bool loaded_;
|
| // True if the last load attempt had an error.
|
| - static bool load_error_;
|
| + bool load_error_;
|
| // Contains the error string from the last load attempt.
|
| - static std::string load_error_string_;
|
| + std::string load_error_string_;
|
| + TestApi* test_api_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(CrosLibrary);
|
| };
|
|
|