diff options
Diffstat (limited to 'chrome/browser/chromeos/cros/input_method_library.cc')
| -rw-r--r-- | chrome/browser/chromeos/cros/input_method_library.cc | 377 |
1 files changed, 183 insertions, 194 deletions
diff --git a/chrome/browser/chromeos/cros/input_method_library.cc b/chrome/browser/chromeos/cros/input_method_library.cc index 58f8f47..1ba6253 100644 --- a/chrome/browser/chromeos/cros/input_method_library.cc +++ b/chrome/browser/chromeos/cros/input_method_library.cc @@ -35,10 +35,11 @@ const char kIBusDaemonPath[] = "/usr/bin/ibus-daemon"; // Finds a property which has |new_prop.key| from |prop_list|, and replaces the // property with |new_prop|. Returns true if such a property is found. -bool FindAndUpdateProperty(const chromeos::ImeProperty& new_prop, - chromeos::ImePropertyList* prop_list) { +bool FindAndUpdateProperty( + const chromeos::input_method::ImeProperty& new_prop, + chromeos::input_method::ImePropertyList* prop_list) { for (size_t i = 0; i < prop_list->size(); ++i) { - chromeos::ImeProperty& prop = prop_list->at(i); + chromeos::input_method::ImeProperty& prop = prop_list->at(i); if (prop.key == new_prop.key) { const int saved_id = prop.selection_item_id; // Update the list except the radio id. As written in @@ -57,10 +58,11 @@ namespace chromeos { // The production implementation of InputMethodLibrary. class InputMethodLibraryImpl : public InputMethodLibrary, - public NotificationObserver { + public NotificationObserver, + public input_method::IBusController::Observer { public: InputMethodLibraryImpl() - : input_method_status_connection_(NULL), + : ibus_controller_(NULL), should_launch_ime_(false), ime_connected_(false), defer_ime_startup_(false), @@ -93,44 +95,40 @@ class InputMethodLibraryImpl : public InputMethodLibrary, bool Init() { DCHECK(!initialized_successfully_) << "Already initialized"; - if (!CrosLibrary::Get()->EnsureLoaded()) - return false; - input_method_status_connection_ = chromeos::MonitorInputMethodStatus( - this, - &InputMethodChangedHandler, - &RegisterPropertiesHandler, - &UpdatePropertyHandler, - &ConnectionChangeHandler); - if (!input_method_status_connection_) - return false; + ibus_controller_ = input_method::IBusController::Create(); + // The observer should be added before Connect() so we can capture the + // initial connection change. + ibus_controller_->AddObserver(this); + ibus_controller_->Connect(); initialized_successfully_ = true; return true; } virtual ~InputMethodLibraryImpl() { + ibus_controller_->RemoveObserver(this); } - virtual void AddObserver(Observer* observer) { + virtual void AddObserver(InputMethodLibrary::Observer* observer) { if (!observers_.size()) { observer->FirstObserverIsAdded(this); } observers_.AddObserver(observer); } - virtual void RemoveObserver(Observer* observer) { + virtual void RemoveObserver(InputMethodLibrary::Observer* observer) { observers_.RemoveObserver(observer); } - virtual InputMethodDescriptors* GetActiveInputMethods() { - chromeos::InputMethodDescriptors* result = - new chromeos::InputMethodDescriptors; + virtual input_method::InputMethodDescriptors* GetActiveInputMethods() { + input_method::InputMethodDescriptors* result = + new input_method::InputMethodDescriptors; // Build the active input method descriptors from the active input // methods cache |active_input_method_ids_|. for (size_t i = 0; i < active_input_method_ids_.size(); ++i) { const std::string& input_method_id = active_input_method_ids_[i]; - const InputMethodDescriptor* descriptor = - chromeos::input_method::GetInputMethodDescriptorFromId( + const input_method::InputMethodDescriptor* descriptor = + input_method::GetInputMethodDescriptorFromId( input_method_id); if (descriptor) { result->push_back(*descriptor); @@ -148,21 +146,23 @@ class InputMethodLibraryImpl : public InputMethodLibrary, } virtual size_t GetNumActiveInputMethods() { - scoped_ptr<InputMethodDescriptors> input_methods(GetActiveInputMethods()); + scoped_ptr<input_method::InputMethodDescriptors> input_methods( + GetActiveInputMethods()); return input_methods->size(); } - virtual InputMethodDescriptors* GetSupportedInputMethods() { + virtual input_method::InputMethodDescriptors* GetSupportedInputMethods() { if (!initialized_successfully_) { // If initialization was failed, return the fallback input method, // as this function is guaranteed to return at least one descriptor. - InputMethodDescriptors* result = new InputMethodDescriptors; + input_method::InputMethodDescriptors* result = + new input_method::InputMethodDescriptors; result->push_back(input_method::GetFallbackInputMethodDescriptor()); return result; } // This never returns NULL. - return chromeos::GetSupportedInputMethodDescriptors(); + return input_method::GetSupportedInputMethodDescriptors(); } virtual void ChangeInputMethod(const std::string& input_method_id) { @@ -173,7 +173,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // If the input method daemon is not running and the specified input // method is a keyboard layout, switch the keyboard directly. if (ibus_daemon_process_handle_ == base::kNullProcessHandle && - chromeos::input_method::IsKeyboardLayout(input_method_id)) { + input_method::IsKeyboardLayout(input_method_id)) { // We shouldn't use SetCurrentKeyboardLayoutByName() here. See // comments at ChangeCurrentInputMethod() for details. ChangeCurrentInputMethodFromId(input_method_id); @@ -197,13 +197,13 @@ class InputMethodLibraryImpl : public InputMethodLibrary, return; DCHECK(!key.empty()); - chromeos::SetImePropertyActivated( - input_method_status_connection_, key.c_str(), activated); + ibus_controller_->SetImePropertyActivated(key, activated); } virtual bool InputMethodIsActivated(const std::string& input_method_id) { - scoped_ptr<InputMethodDescriptors> active_input_method_descriptors( - GetActiveInputMethods()); + scoped_ptr<input_method::InputMethodDescriptors> + active_input_method_descriptors( + GetActiveInputMethods()); for (size_t i = 0; i < active_input_method_descriptors->size(); ++i) { if (active_input_method_descriptors->at(i).id == input_method_id) { return true; @@ -214,7 +214,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, virtual bool SetImeConfig(const std::string& section, const std::string& config_name, - const ImeConfigValue& value) { + const input_method::ImeConfigValue& value) { // If the config change is for preload engines, update the active // input methods cache |active_input_method_ids_| here. We need to // update the cache before actually flushing the config. since we need @@ -224,7 +224,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // screen before the input method starts. if (section == language_prefs::kGeneralSectionName && config_name == language_prefs::kPreloadEnginesConfigName && - value.type == ImeConfigValue::kValueTypeStringList) { + value.type == input_method::ImeConfigValue::kValueTypeStringList) { active_input_method_ids_ = value.string_list_value; } @@ -245,21 +245,21 @@ class InputMethodLibraryImpl : public InputMethodLibrary, return pending_config_requests_.empty(); } - virtual InputMethodDescriptor previous_input_method() const { + virtual input_method::InputMethodDescriptor previous_input_method() const { if (previous_input_method_.id.empty()) { return input_method::GetFallbackInputMethodDescriptor(); } return previous_input_method_; } - virtual InputMethodDescriptor current_input_method() const { + virtual input_method::InputMethodDescriptor current_input_method() const { if (current_input_method_.id.empty()) { return input_method::GetFallbackInputMethodDescriptor(); } return current_input_method_; } - virtual const ImePropertyList& current_ime_properties() const { + virtual const input_method::ImePropertyList& current_ime_properties() const { return current_ime_properties_; } @@ -267,20 +267,21 @@ class InputMethodLibraryImpl : public InputMethodLibrary, if (!initialized_successfully_) return ""; - return chromeos::GetKeyboardOverlayId(input_method_id); + return input_method::GetKeyboardOverlayId(input_method_id); } - virtual void SendHandwritingStroke(const HandwritingStroke& stroke) { + virtual void SendHandwritingStroke( + const input_method::HandwritingStroke& stroke) { if (!initialized_successfully_) return; - chromeos::SendHandwritingStroke(input_method_status_connection_, stroke); + ibus_controller_->SendHandwritingStroke(stroke); } virtual void CancelHandwritingStrokes(int stroke_count) { if (!initialized_successfully_) return; // TODO(yusukes): Rename the libcros function to CancelHandwritingStrokes. - chromeos::CancelHandwriting(input_method_status_connection_, stroke_count); + ibus_controller_->CancelHandwriting(stroke_count); } private: @@ -288,10 +289,10 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // element string list that contains an input method ID of a keyboard // layout. bool ContainOnlyOneKeyboardLayout( - const ImeConfigValue& value) { - return (value.type == ImeConfigValue::kValueTypeStringList && + const input_method::ImeConfigValue& value) { + return (value.type == input_method::ImeConfigValue::kValueTypeStringList && value.string_list_value.size() == 1 && - chromeos::input_method::IsKeyboardLayout( + input_method::IsKeyboardLayout( value.string_list_value[0])); } @@ -302,10 +303,10 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // "previous_engine"). |value| is the configuration value to be set. void MaybeStartInputMethodDaemon(const std::string& section, const std::string& config_name, - const ImeConfigValue& value) { + const input_method::ImeConfigValue& value) { if (section == language_prefs::kGeneralSectionName && config_name == language_prefs::kPreloadEnginesConfigName && - value.type == ImeConfigValue::kValueTypeStringList && + value.type == input_method::ImeConfigValue::kValueTypeStringList && !value.string_list_value.empty()) { // If there is only one input method which is a keyboard layout, // we don't start the input method processes. When @@ -356,7 +357,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // See also: MaybeStartInputMethodDaemon(). void MaybeStopInputMethodDaemon(const std::string& section, const std::string& config_name, - const ImeConfigValue& value) { + const input_method::ImeConfigValue& value) { // If there is only one input method which is a keyboard layout, // and |enable_auto_ime_shutdown_| is true, we'll stop the input // method daemon. @@ -370,9 +371,10 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // Change the keyboard layout per input method configuration being // updated, if necessary. See also: MaybeStartInputMethodDaemon(). - void MaybeChangeCurrentKeyboardLayout(const std::string& section, - const std::string& config_name, - const ImeConfigValue& value) { + void MaybeChangeCurrentKeyboardLayout( + const std::string& section, + const std::string& config_name, + const input_method::ImeConfigValue& value) { // If there is only one input method which is a keyboard layout, we'll // change the keyboard layout per the only one input method now @@ -402,7 +404,8 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // synced with cloud) and kLanguagePreloadEngines (synced with cloud) are // mismatched. e.g. the former is 'xkb:us::eng' and the latter (on the // sync server) is 'xkb:jp::jpn,mozc'. - scoped_ptr<InputMethodDescriptors> input_methods(GetActiveInputMethods()); + scoped_ptr<input_method::InputMethodDescriptors> input_methods( + GetActiveInputMethods()); DCHECK(!input_methods->empty()); if (!input_methods->empty()) { input_method_id_to_switch = input_methods->at(0).id; @@ -412,8 +415,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, } } - if (chromeos::ChangeInputMethod(input_method_status_connection_, - input_method_id_to_switch.c_str())) { + if (ibus_controller_->ChangeInputMethod(input_method_id_to_switch)) { return true; } @@ -435,7 +437,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, while (iter != pending_config_requests_.end()) { const std::string& section = iter->first.first; const std::string& config_name = iter->first.second; - ImeConfigValue& value = iter->second; + input_method::ImeConfigValue& value = iter->second; if (config_name == language_prefs::kPreloadEnginesConfigName && !tentative_current_input_method_id_.empty()) { @@ -469,10 +471,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, tentative_current_input_method_id_.erase(); } - if (chromeos::SetImeConfig(input_method_status_connection_, - section.c_str(), - config_name.c_str(), - value)) { + if (ibus_controller_->SetImeConfig(section, config_name, value)) { // Check if it's a change in active input methods. if (config_name == language_prefs::kPreloadEnginesConfigName) { active_input_methods_are_changed = true; @@ -514,18 +513,16 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // ibus-daemon, and observers are notified. See // InputMethodChangedHandler() for details. const size_t num_active_input_methods = GetNumActiveInputMethods(); - FOR_EACH_OBSERVER(Observer, observers_, + FOR_EACH_OBSERVER(InputMethodLibrary::Observer, observers_, ActiveInputMethodsChanged(this, current_input_method_, num_active_input_methods)); } } - // Called when the input method is changed in the IBus daemon - // (ex. "global-engine-changed" is delivered from the IBus daemon). - static void InputMethodChangedHandler( - void* object, - const chromeos::InputMethodDescriptor& current_input_method) { + // IBusController override. + virtual void OnCurrentInputMethodChanged( + const input_method::InputMethodDescriptor& current_input_method) { // The handler is called when the input method method change is // notified via a DBus connection. Since the DBus notificatiosn are // handled in the UI thread, we can assume that this function always @@ -535,62 +532,51 @@ class InputMethodLibraryImpl : public InputMethodLibrary, return; } - InputMethodLibraryImpl* input_method_library = - static_cast<InputMethodLibraryImpl*>(object); - input_method_library->ChangeCurrentInputMethod(current_input_method); + ChangeCurrentInputMethod(current_input_method); } - // Called when properties are registered in the IBus daemon. - static void RegisterPropertiesHandler( - void* object, const ImePropertyList& prop_list) { + // IBusController override. + virtual void OnRegisterImeProperties( + const input_method::ImePropertyList& prop_list) { // See comments in InputMethodChangedHandler. if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { LOG(ERROR) << "Not on UI thread"; return; } - InputMethodLibraryImpl* input_method_library = - static_cast<InputMethodLibraryImpl*>(object); - input_method_library->RegisterProperties(prop_list); + RegisterProperties(prop_list); } - // Called when properties are updated in the IBus daemon. - static void UpdatePropertyHandler( - void* object, const ImePropertyList& prop_list) { + // IBusController override. + virtual void OnUpdateImeProperty( + const input_method::ImePropertyList& prop_list) { // See comments in InputMethodChangedHandler. if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { LOG(ERROR) << "Not on UI thread"; return; } - InputMethodLibraryImpl* input_method_library = - static_cast<InputMethodLibraryImpl*>(object); - input_method_library->UpdateProperty(prop_list); + UpdateProperty(prop_list); } - // Called when 1) connection to ibus-daemon and ibus-memconf are established - // or 2) connection to ibus-daemon is terminated. - static void ConnectionChangeHandler(void* object, bool connected) { + // IBusController override. + virtual void OnConnectionChange(bool connected) { // See comments in InputMethodChangedHandler. if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { LOG(ERROR) << "Not on UI thread"; return; } - InputMethodLibraryImpl* input_method_library = - static_cast<InputMethodLibraryImpl*>(object); - input_method_library->ime_connected_ = connected; + ime_connected_ = connected; if (connected) { - input_method_library->pending_config_requests_.clear(); - input_method_library->pending_config_requests_.insert( - input_method_library->current_config_values_.begin(), - input_method_library->current_config_values_.end()); - input_method_library->FlushImeConfig(); - - input_method_library->ChangeInputMethod( - input_method_library->previous_input_method().id); - input_method_library->ChangeInputMethod( - input_method_library->current_input_method().id); + pending_config_requests_.clear(); + pending_config_requests_.insert( + current_config_values_.begin(), + current_config_values_.end()); + FlushImeConfig(); + + ChangeInputMethod(previous_input_method().id); + ChangeInputMethod(current_input_method().id); } } @@ -599,7 +585,8 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // and notifies observers about the change (that will update the // preferences), hence this function should always be used even if you // just need to change the current keyboard layout. - void ChangeCurrentInputMethod(const InputMethodDescriptor& new_input_method) { + void ChangeCurrentInputMethod(const input_method::InputMethodDescriptor& + new_input_method) { if (current_input_method_.id != new_input_method.id) { previous_input_method_ = current_input_method_; current_input_method_ = new_input_method; @@ -615,8 +602,8 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // observer to do so. Otherwise, we'll end up updating preferences many // times when many observers are attached (ex. many windows are opened), // which is unnecessary and expensive. - ObserverListBase<Observer>::Iterator it(observers_); - Observer* first_observer = it.GetNext(); + ObserverListBase<InputMethodLibrary::Observer>::Iterator it(observers_); + InputMethodLibrary::Observer* first_observer = it.GetNext(); if (first_observer) { first_observer->PreferenceUpdateNeeded(this, previous_input_method_, @@ -628,7 +615,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // For now, we have to do this every time to keep indicators updated. See // comments near the FOR_EACH_OBSERVER call in FlushImeConfig() for details. const size_t num_active_input_methods = GetNumActiveInputMethods(); - FOR_EACH_OBSERVER(Observer, observers_, + FOR_EACH_OBSERVER(InputMethodLibrary::Observer, observers_, InputMethodChanged(this, current_input_method_, num_active_input_methods)); @@ -637,8 +624,8 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // Changes the current input method from the given input method ID. // This function is just a wrapper of ChangeCurrentInputMethod(). void ChangeCurrentInputMethodFromId(const std::string& input_method_id) { - const chromeos::InputMethodDescriptor* descriptor = - chromeos::input_method::GetInputMethodDescriptorFromId( + const input_method::InputMethodDescriptor* descriptor = + input_method::GetInputMethodDescriptorFromId( input_method_id); if (descriptor) { ChangeCurrentInputMethod(*descriptor); @@ -648,12 +635,12 @@ class InputMethodLibraryImpl : public InputMethodLibrary, } // Registers the properties used by the current input method. - void RegisterProperties(const ImePropertyList& prop_list) { + void RegisterProperties(const input_method::ImePropertyList& prop_list) { // |prop_list| might be empty. This means "clear all properties." current_ime_properties_ = prop_list; // Update input method menu - FOR_EACH_OBSERVER(Observer, observers_, + FOR_EACH_OBSERVER(InputMethodLibrary::Observer, observers_, PropertyListChanged(this, current_ime_properties_)); } @@ -667,13 +654,13 @@ class InputMethodLibraryImpl : public InputMethodLibrary, } // Updates the properties used by the current input method. - void UpdateProperty(const ImePropertyList& prop_list) { + void UpdateProperty(const input_method::ImePropertyList& prop_list) { for (size_t i = 0; i < prop_list.size(); ++i) { FindAndUpdateProperty(prop_list[i], ¤t_ime_properties_); } // Update input method menu - FOR_EACH_OBSERVER(Observer, observers_, + FOR_EACH_OBSERVER(InputMethodLibrary::Observer, observers_, PropertyListChanged(this, current_ime_properties_)); } @@ -774,7 +761,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, should_launch_ime_ = false; if (ibus_daemon_process_handle_ != base::kNullProcessHandle) { const base::ProcessId pid = base::GetProcId(ibus_daemon_process_handle_); - if (!chromeos::StopInputMethodProcess(input_method_status_connection_)) { + if (!ibus_controller_->StopInputMethodProcess()) { LOG(ERROR) << "StopInputMethodProcess IPC failed. Sending SIGTERM to " << "PID " << pid; base::KillProcess(ibus_daemon_process_handle_, -1, false /* wait */); @@ -809,19 +796,20 @@ class InputMethodLibraryImpl : public InputMethodLibrary, // A reference to the language api, to allow callbacks when the input method // status changes. - InputMethodStatusConnection* input_method_status_connection_; - ObserverList<Observer> observers_; + input_method::IBusController* ibus_controller_; + ObserverList<InputMethodLibrary::Observer> observers_; // The input method which was/is selected. - InputMethodDescriptor previous_input_method_; - InputMethodDescriptor current_input_method_; + input_method::InputMethodDescriptor previous_input_method_; + input_method::InputMethodDescriptor current_input_method_; // The input method properties which the current input method uses. The list // might be empty when no input method is used. - ImePropertyList current_ime_properties_; + input_method::ImePropertyList current_ime_properties_; typedef std::pair<std::string, std::string> ConfigKeyType; - typedef std::map<ConfigKeyType, ImeConfigValue> InputMethodConfigRequests; + typedef std::map<ConfigKeyType, + input_method::ImeConfigValue> InputMethodConfigRequests; // SetImeConfig requests that are not yet completed. // Use a map to queue config requests, so we only send the last request for // the same config key (i.e. we'll discard ealier requests for the same @@ -873,8 +861,6 @@ class InputMethodLibraryImpl : public InputMethodLibrary, DISALLOW_COPY_AND_ASSIGN(InputMethodLibraryImpl); }; -InputMethodLibraryImpl::Observer::~Observer() {} - // The stub implementation of InputMethodLibrary. Used for testing. class InputMethodLibraryStubImpl : public InputMethodLibrary { public: @@ -887,17 +873,18 @@ class InputMethodLibraryStubImpl : public InputMethodLibrary { virtual void AddObserver(Observer* observer) {} virtual void RemoveObserver(Observer* observer) {} - virtual InputMethodDescriptors* GetActiveInputMethods() { + virtual input_method::InputMethodDescriptors* GetActiveInputMethods() { return GetInputMethodDescriptorsForTesting(); } virtual size_t GetNumActiveInputMethods() { - scoped_ptr<InputMethodDescriptors> descriptors(GetActiveInputMethods()); + scoped_ptr<input_method::InputMethodDescriptors> descriptors( + GetActiveInputMethods()); return descriptors->size(); } - virtual InputMethodDescriptors* GetSupportedInputMethods() { + virtual input_method::InputMethodDescriptors* GetSupportedInputMethods() { return GetInputMethodDescriptorsForTesting(); } @@ -911,19 +898,19 @@ class InputMethodLibraryStubImpl : public InputMethodLibrary { virtual bool SetImeConfig(const std::string& section, const std::string& config_name, - const ImeConfigValue& value) { + const input_method::ImeConfigValue& value) { return false; } - virtual InputMethodDescriptor previous_input_method() const { + virtual input_method::InputMethodDescriptor previous_input_method() const { return previous_input_method_; } - virtual InputMethodDescriptor current_input_method() const { + virtual input_method::InputMethodDescriptor current_input_method() const { return current_input_method_; } - virtual const ImePropertyList& current_ime_properties() const { + virtual const input_method::ImePropertyList& current_ime_properties() const { return current_ime_properties_; } @@ -941,7 +928,8 @@ class InputMethodLibraryStubImpl : public InputMethodLibrary { iter->second : ""; } - virtual void SendHandwritingStroke(const HandwritingStroke& stroke) {} + virtual void SendHandwritingStroke( + const input_method::HandwritingStroke& stroke) {} virtual void CancelHandwritingStrokes(int stroke_count) {} private: @@ -949,160 +937,161 @@ class InputMethodLibraryStubImpl : public InputMethodLibrary { // Gets input method descriptors for testing. Shouldn't be used for // production. - InputMethodDescriptors* GetInputMethodDescriptorsForTesting() { - InputMethodDescriptors* descriptions = new InputMethodDescriptors; + input_method::InputMethodDescriptors* GetInputMethodDescriptorsForTesting() { + input_method::InputMethodDescriptors* descriptions = + new input_method::InputMethodDescriptors; // The list is created from output of gen_engines.py in libcros. // % SHARE=/build/x86-generic/usr/share python gen_engines.py // $SHARE/chromeos-assets/input_methods/whitelist.txt // $SHARE/ibus/component/{chewing,hangul,m17n,mozc,pinyin,xkb-layouts}.xml - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:nl::nld", "Netherlands", "nl", "nl", "nld")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:be::nld", "Belgium", "be", "be", "nld")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:fr::fra", "France", "fr", "fr", "fra")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:be::fra", "Belgium", "be", "be", "fra")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ca::fra", "Canada", "ca", "ca", "fra")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ch:fr:fra", "Switzerland - French", "ch(fr)", "ch(fr)", "fra")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:de::ger", "Germany", "de", "de", "ger")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:de:neo:ger", "Germany - Neo 2", "de(neo)", "de(neo)", "ger")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:be::ger", "Belgium", "be", "be", "ger")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ch::ger", "Switzerland", "ch", "ch", "ger")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "mozc", "Mozc (US keyboard layout)", "us", "us", "ja")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "mozc-jp", "Mozc (Japanese keyboard layout)", "jp", "jp", "ja")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "mozc-dv", "Mozc (US Dvorak keyboard layout)", "us(dvorak)", "us(dvorak)", "ja")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:jp::jpn", "Japan", "jp", "jp", "jpn")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ru::rus", "Russia", "ru", "ru", "rus")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ru:phonetic:rus", "Russia - Phonetic", "ru(phonetic)", "ru(phonetic)", "rus")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:th:kesmanee", "kesmanee (m17n)", "us", "us", "th")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:th:pattachote", "pattachote (m17n)", "us", "us", "th")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:th:tis820", "tis820 (m17n)", "us", "us", "th")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "mozc-chewing", "Mozc Chewing (Chewing)", "us", "us", "zh_TW")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:zh:cangjie", "cangjie (m17n)", "us", "us", "zh")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:zh:quick", "quick (m17n)", "us", "us", "zh")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:vi:tcvn", "tcvn (m17n)", "us", "us", "vi")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:vi:telex", "telex (m17n)", "us", "us", "vi")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:vi:viqr", "viqr (m17n)", "us", "us", "vi")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:vi:vni", "vni (m17n)", "us", "us", "vi")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:us::eng", "USA", "us", "us", "eng")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:us:intl:eng", "USA - International (with dead keys)", "us(intl)", "us(intl)", "eng")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:us:altgr-intl:eng", "USA - International (AltGr dead keys)", "us(altgr-intl)", "us(altgr-intl)", "eng")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:us:dvorak:eng", "USA - Dvorak", "us(dvorak)", "us(dvorak)", "eng")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:us:colemak:eng", "USA - Colemak", "us(colemak)", "us(colemak)", "eng")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "hangul", "Korean", "kr(kr104)", "kr(kr104)", "ko")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "pinyin", "Pinyin", "us", "us", "zh")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "pinyin-dv", "Pinyin (for US Dvorak keyboard)", "us(dvorak)", "us(dvorak)", "zh")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:ar:kbd", "kbd (m17n)", "us", "us", "ar")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:hi:itrans", "itrans (m17n)", "us", "us", "hi")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "m17n:fa:isiri", "isiri (m17n)", "us", "us", "fa")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:br::por", "Brazil", "br", "br", "por")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:bg::bul", "Bulgaria", "bg", "bg", "bul")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:bg:phonetic:bul", "Bulgaria - Traditional phonetic", "bg(phonetic)", "bg(phonetic)", "bul")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ca:eng:eng", "Canada - English", "ca(eng)", "ca(eng)", "eng")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:cz::cze", "Czechia", "cz", "cz", "cze")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ee::est", "Estonia", "ee", "ee", "est")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:es::spa", "Spain", "es", "es", "spa")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:es:cat:cat", "Spain - Catalan variant with middle-dot L", "es(cat)", "es(cat)", "cat")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:dk::dan", "Denmark", "dk", "dk", "dan")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:gr::gre", "Greece", "gr", "gr", "gre")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:il::heb", "Israel", "il", "il", "heb")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:kr:kr104:kor", "Korea, Republic of - 101/104 key Compatible", "kr(kr104)", "kr(kr104)", "kor")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:latam::spa", "Latin American", "latam", "latam", "spa")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:lt::lit", "Lithuania", "lt", "lt", "lit")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:lv:apostrophe:lav", "Latvia - Apostrophe (') variant", "lv(apostrophe)", "lv(apostrophe)", "lav")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:hr::scr", "Croatia", "hr", "hr", "scr")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:gb:extd:eng", "United Kingdom - Extended - Winkeys", "gb(extd)", "gb(extd)", "eng")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:gb:dvorak:eng", "United Kingdom - Dvorak", "gb(dvorak)", "gb(dvorak)", "eng")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:fi::fin", "Finland", "fi", "fi", "fin")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:hu::hun", "Hungary", "hu", "hu", "hun")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:it::ita", "Italy", "it", "it", "ita")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:no::nob", "Norway", "no", "no", "nob")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:pl::pol", "Poland", "pl", "pl", "pol")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:pt::por", "Portugal", "pt", "pt", "por")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ro::rum", "Romania", "ro", "ro", "rum")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:se::swe", "Sweden", "se", "se", "swe")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:sk::slo", "Slovakia", "sk", "sk", "slo")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:si::slv", "Slovenia", "si", "si", "slv")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:rs::srp", "Serbia", "rs", "rs", "srp")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:tr::tur", "Turkey", "tr", "tr", "tur")); - descriptions->push_back(InputMethodDescriptor( + descriptions->push_back(input_method::InputMethodDescriptor( "xkb:ua::ukr", "Ukraine", "ua", "ua", "ukr")); return descriptions; } @@ -1183,9 +1172,9 @@ class InputMethodLibraryStubImpl : public InputMethodLibrary { return keyboard_overlay_map; } - InputMethodDescriptor previous_input_method_; - InputMethodDescriptor current_input_method_; - ImePropertyList current_ime_properties_; + input_method::InputMethodDescriptor previous_input_method_; + input_method::InputMethodDescriptor current_input_method_; + input_method::ImePropertyList current_ime_properties_; scoped_ptr<KeyboardOverlayMap> keyboard_overlay_map_; DISALLOW_COPY_AND_ASSIGN(InputMethodLibraryStubImpl); |
