| Index: chrome/browser/chromeos/cros/language_library.h
|
| ===================================================================
|
| --- chrome/browser/chromeos/cros/language_library.h (revision 42341)
|
| +++ chrome/browser/chromeos/cros/language_library.h (working copy)
|
| @@ -8,7 +8,6 @@
|
| #include <string>
|
|
|
| #include "base/observer_list.h"
|
| -#include "base/singleton.h"
|
| #include "base/time.h"
|
| #include "third_party/cros/chromeos_language.h"
|
|
|
| @@ -25,77 +24,106 @@
|
| virtual void LanguageChanged(LanguageLibrary* obj) = 0;
|
| virtual void ImePropertiesChanged(LanguageLibrary* obj) = 0;
|
| };
|
| + virtual ~LanguageLibrary() {}
|
|
|
| - // This gets the singleton LanguageLibrary
|
| - static LanguageLibrary* Get();
|
| + virtual void AddObserver(Observer* observer) = 0;
|
| + virtual void RemoveObserver(Observer* observer) = 0;
|
|
|
| - void AddObserver(Observer* observer);
|
| - void RemoveObserver(Observer* observer);
|
| -
|
| // Returns the list of IMEs and keyboard layouts we can select
|
| // (i.e. active). If the cros library is not found or IBus/DBus daemon
|
| // is not alive, this function returns a fallback language list (and
|
| // never returns NULL).
|
| - InputLanguageList* GetActiveLanguages();
|
| + virtual InputLanguageList* GetActiveLanguages() = 0;
|
|
|
| // Returns the list of IMEs and keyboard layouts we support, including
|
| // ones not active. If the cros library is not found or IBus/DBus
|
| // daemon is not alive, this function returns a fallback language list
|
| // (and never returns NULL).
|
| - InputLanguageList* GetSupportedLanguages();
|
| + virtual InputLanguageList* GetSupportedLanguages() = 0;
|
|
|
| // Changes the current IME engine to |id| and enable IME (when |category|
|
| // is LANGUAGE_CATEGORY_IME). Changes the current XKB layout to |id| and
|
| // disable IME (when |category| is LANGUAGE_CATEGORY_XKB). |id| is a unique
|
| // identifier of a IME engine or XKB layout. Please check chromeos_language.h
|
| // in src third_party/cros/ for details.
|
| - void ChangeLanguage(LanguageCategory category, const std::string& id);
|
| + virtual void ChangeLanguage(LanguageCategory category,
|
| + const std::string& id) = 0;
|
|
|
| // Activates an IME property identified by |key|. Examples of keys are:
|
| // "InputMode.Katakana", "InputMode.HalfWidthKatakana", "TypingMode.Romaji",
|
| // and "TypingMode.Kana."
|
| - void ActivateImeProperty(const std::string& key);
|
| + virtual void ActivateImeProperty(const std::string& key) = 0;
|
|
|
| // Deactivates an IME property identified by |key|.
|
| - void DeactivateImeProperty(const std::string& key);
|
| + virtual void DeactivateImeProperty(const std::string& key) = 0;
|
|
|
| // Activates the language specified by |category| and |id|. Returns true
|
| // on success.
|
| - bool ActivateLanguage(LanguageCategory category, const std::string& id);
|
| + virtual bool ActivateLanguage(LanguageCategory category,
|
| + const std::string& id) = 0;
|
|
|
| // Dectivates the language specified by |category| and |id|. Returns
|
| // true on success.
|
| - bool DeactivateLanguage(LanguageCategory category, const std::string& id);
|
| + virtual bool DeactivateLanguage(LanguageCategory category,
|
| + const std::string& id) = 0;
|
|
|
| // Get a configuration of ibus-daemon or IBus engines and stores it on
|
| // |out_value|. Returns true if |out_value| is successfully updated.
|
| // When you would like to retrieve 'panel/custom_font', |section| should
|
| // be "panel", and |config_name| should be "custom_font".
|
| - bool GetImeConfig(
|
| - const char* section, const char* config_name, ImeConfigValue* out_value);
|
| + virtual bool GetImeConfig(
|
| + const char* section, const char* config_name,
|
| + ImeConfigValue* out_value) = 0;
|
|
|
| // Updates a configuration of ibus-daemon or IBus engines with |value|.
|
| // Returns true if the configuration is successfully updated.
|
| // You can specify |section| and |config_name| arguments in the same way
|
| // as GetImeConfig() above.
|
| - bool SetImeConfig(const char* section,
|
| - const char* config_name,
|
| - const ImeConfigValue& value);
|
| + virtual bool SetImeConfig(const char* section,
|
| + const char* config_name,
|
| + const ImeConfigValue& value) = 0;
|
|
|
| - const InputLanguage& current_language() const {
|
| + virtual const InputLanguage& current_language() const = 0;
|
| +
|
| + virtual const ImePropertyList& current_ime_properties() const = 0;
|
| +
|
| +};
|
| +
|
| +// This class handles the interaction with the ChromeOS language library APIs.
|
| +// Classes can add themselves as observers. Users can get an instance of this
|
| +// library class like this: LanguageLibrary::Get()
|
| +class LanguageLibraryImpl : public LanguageLibrary {
|
| + public:
|
| + LanguageLibraryImpl();
|
| + virtual ~LanguageLibraryImpl();
|
| +
|
| + // LanguageLibrary overrides.
|
| + virtual void AddObserver(Observer* observer);
|
| + virtual void RemoveObserver(Observer* observer);
|
| + virtual InputLanguageList* GetActiveLanguages();
|
| + virtual InputLanguageList* GetSupportedLanguages();
|
| + virtual void ChangeLanguage(LanguageCategory category, const std::string& id);
|
| + virtual void ActivateImeProperty(const std::string& key);
|
| + virtual void DeactivateImeProperty(const std::string& key);
|
| + virtual bool ActivateLanguage(LanguageCategory category,
|
| + const std::string& id);
|
| + virtual bool DeactivateLanguage(LanguageCategory category,
|
| + const std::string& id);
|
| + virtual bool GetImeConfig(
|
| + const char* section, const char* config_name, ImeConfigValue* out_value);
|
| + virtual bool SetImeConfig(const char* section,
|
| + const char* config_name,
|
| + const ImeConfigValue& value);
|
| +
|
| + virtual const InputLanguage& current_language() const {
|
| return current_language_;
|
| }
|
|
|
| - const ImePropertyList& current_ime_properties() const {
|
| + virtual const ImePropertyList& current_ime_properties() const {
|
| return current_ime_properties_;
|
| }
|
|
|
| private:
|
| - friend struct DefaultSingletonTraits<LanguageLibrary>;
|
| -
|
| - LanguageLibrary();
|
| - ~LanguageLibrary();
|
| -
|
| // This method is called when there's a change in language status.
|
| static void LanguageChangedHandler(
|
| void* object, const InputLanguage& current_language);
|
| @@ -140,7 +168,7 @@
|
| // empty when no IME is used.
|
| ImePropertyList current_ime_properties_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(LanguageLibrary);
|
| + DISALLOW_COPY_AND_ASSIGN(LanguageLibraryImpl);
|
| };
|
|
|
| } // namespace chromeos
|
|
|