| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/chromeos/cros/input_method_library.h" | 5 #include "chrome/browser/chromeos/cros/input_method_library.h" |
| 6 | 6 |
| 7 #include <glib.h> | 7 #include <glib.h> |
| 8 #include <signal.h> | 8 #include <signal.h> |
| 9 | 9 |
| 10 #include "unicode/uloc.h" | 10 #include "unicode/uloc.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 return previous_input_method_; | 175 return previous_input_method_; |
| 176 } | 176 } |
| 177 virtual const InputMethodDescriptor& current_input_method() const { | 177 virtual const InputMethodDescriptor& current_input_method() const { |
| 178 return current_input_method_; | 178 return current_input_method_; |
| 179 } | 179 } |
| 180 | 180 |
| 181 virtual const ImePropertyList& current_ime_properties() const { | 181 virtual const ImePropertyList& current_ime_properties() const { |
| 182 return current_ime_properties_; | 182 return current_ime_properties_; |
| 183 } | 183 } |
| 184 | 184 |
| 185 virtual std::string GetKeyboardOverlayId(const std::string& input_method_id) { |
| 186 if (EnsureLoadedAndStarted()) { |
| 187 return chromeos::GetKeyboardOverlayId(input_method_id); |
| 188 } |
| 189 return ""; |
| 190 } |
| 191 |
| 185 private: | 192 private: |
| 186 // Starts or stops the input method processes based on the current state. | 193 // Starts or stops the input method processes based on the current state. |
| 187 void MaybeStartOrStopInputMethodProcesses( | 194 void MaybeStartOrStopInputMethodProcesses( |
| 188 const char* section, | 195 const char* section, |
| 189 const char* config_name, | 196 const char* config_name, |
| 190 const ImeConfigValue& value) { | 197 const ImeConfigValue& value) { |
| 191 if (!strcmp(language_prefs::kGeneralSectionName, section) && | 198 if (!strcmp(language_prefs::kGeneralSectionName, section) && |
| 192 !strcmp(language_prefs::kPreloadEnginesConfigName, config_name)) { | 199 !strcmp(language_prefs::kPreloadEnginesConfigName, config_name)) { |
| 193 if (EnsureLoadedAndStarted()) { | 200 if (EnsureLoadedAndStarted()) { |
| 194 // If there are no input methods other than one for the hardware | 201 // If there are no input methods other than one for the hardware |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 601 | 608 |
| 602 DISALLOW_COPY_AND_ASSIGN(InputMethodLibraryImpl); | 609 DISALLOW_COPY_AND_ASSIGN(InputMethodLibraryImpl); |
| 603 }; | 610 }; |
| 604 | 611 |
| 605 InputMethodLibraryImpl::Observer::~Observer() {} | 612 InputMethodLibraryImpl::Observer::~Observer() {} |
| 606 | 613 |
| 607 class InputMethodLibraryStubImpl : public InputMethodLibrary { | 614 class InputMethodLibraryStubImpl : public InputMethodLibrary { |
| 608 public: | 615 public: |
| 609 InputMethodLibraryStubImpl() | 616 InputMethodLibraryStubImpl() |
| 610 : previous_input_method_("", "", "", ""), | 617 : previous_input_method_("", "", "", ""), |
| 611 current_input_method_("", "", "", "") { | 618 current_input_method_("", "", "", ""), |
| 619 keyboard_overlay_map_( |
| 620 CreateRealisticKeyboardOverlayMap()) { |
| 612 } | 621 } |
| 613 | 622 |
| 614 ~InputMethodLibraryStubImpl() {} | 623 ~InputMethodLibraryStubImpl() {} |
| 615 void AddObserver(Observer* observer) {} | 624 void AddObserver(Observer* observer) {} |
| 616 void RemoveObserver(Observer* observer) {} | 625 void RemoveObserver(Observer* observer) {} |
| 617 | 626 |
| 618 InputMethodDescriptors* GetActiveInputMethods() { | 627 InputMethodDescriptors* GetActiveInputMethods() { |
| 619 return CreateRealisticInputMethodDescriptors(); | 628 return CreateRealisticInputMethodDescriptors(); |
| 620 } | 629 } |
| 621 | 630 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 | 668 |
| 660 virtual const ImePropertyList& current_ime_properties() const { | 669 virtual const ImePropertyList& current_ime_properties() const { |
| 661 return current_ime_properties_; | 670 return current_ime_properties_; |
| 662 } | 671 } |
| 663 | 672 |
| 664 virtual void StartInputMethodProcesses() {} | 673 virtual void StartInputMethodProcesses() {} |
| 665 virtual void StopInputMethodProcesses() {} | 674 virtual void StopInputMethodProcesses() {} |
| 666 virtual void SetDeferImeStartup(bool defer) {} | 675 virtual void SetDeferImeStartup(bool defer) {} |
| 667 virtual void SetEnableAutoImeShutdown(bool enable) {} | 676 virtual void SetEnableAutoImeShutdown(bool enable) {} |
| 668 | 677 |
| 678 virtual std::string GetKeyboardOverlayId(const std::string& input_method_id) { |
| 679 KeyboardOverlayMap::const_iterator iter = |
| 680 keyboard_overlay_map_->find(input_method_id); |
| 681 return (iter != keyboard_overlay_map_->end()) ? |
| 682 iter->second : ""; |
| 683 } |
| 684 |
| 669 private: | 685 private: |
| 686 typedef std::map<std::string, std::string> KeyboardOverlayMap; |
| 687 |
| 670 // Creates realistic input method descriptors that can be used for | 688 // Creates realistic input method descriptors that can be used for |
| 671 // testing Chrome OS version of chrome on regular Linux desktops. | 689 // testing Chrome OS version of chrome on regular Linux desktops. |
| 672 InputMethodDescriptors* CreateRealisticInputMethodDescriptors() { | 690 InputMethodDescriptors* CreateRealisticInputMethodDescriptors() { |
| 673 InputMethodDescriptors* descriptions = new InputMethodDescriptors; | 691 InputMethodDescriptors* descriptions = new InputMethodDescriptors; |
| 674 // The list is created from output of gen_engines.py in libcros. | 692 // The list is created from output of gen_engines.py in libcros. |
| 675 descriptions->push_back(InputMethodDescriptor( | 693 descriptions->push_back(InputMethodDescriptor( |
| 676 "chewing", "Chewing", "us", "zh_TW")); | 694 "chewing", "Chewing", "us", "zh_TW")); |
| 677 descriptions->push_back(InputMethodDescriptor( | 695 descriptions->push_back(InputMethodDescriptor( |
| 678 "hangul", "Korean", "us", "ko")); | 696 "hangul", "Korean", "us", "ko")); |
| 679 descriptions->push_back(InputMethodDescriptor( | 697 descriptions->push_back(InputMethodDescriptor( |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 descriptions->push_back(InputMethodDescriptor( | 806 descriptions->push_back(InputMethodDescriptor( |
| 789 "xkb:tr::tur", "Turkey", "tr", "tur")); | 807 "xkb:tr::tur", "Turkey", "tr", "tur")); |
| 790 descriptions->push_back(InputMethodDescriptor( | 808 descriptions->push_back(InputMethodDescriptor( |
| 791 "xkb:ua::ukr", "Ukraine", "ua", "ukr")); | 809 "xkb:ua::ukr", "Ukraine", "ua", "ukr")); |
| 792 descriptions->push_back(InputMethodDescriptor( | 810 descriptions->push_back(InputMethodDescriptor( |
| 793 "xkb:gb:extd:eng", "United Kingdom - Extended - Winkeys", "gb(extd)", | 811 "xkb:gb:extd:eng", "United Kingdom - Extended - Winkeys", "gb(extd)", |
| 794 "eng")); | 812 "eng")); |
| 795 return descriptions; | 813 return descriptions; |
| 796 } | 814 } |
| 797 | 815 |
| 816 std::map<std::string, std::string>* CreateRealisticKeyboardOverlayMap() { |
| 817 KeyboardOverlayMap* keyboard_overlay_map = |
| 818 new KeyboardOverlayMap; |
| 819 (*keyboard_overlay_map)["xkb:nl::nld"] = "nl"; |
| 820 (*keyboard_overlay_map)["xkb:be::nld"] = "nl"; |
| 821 (*keyboard_overlay_map)["xkb:fr::fra"] = "fr"; |
| 822 (*keyboard_overlay_map)["xkb:be::fra"] = "fr"; |
| 823 (*keyboard_overlay_map)["xkb:ca::fra"] = "fr_CA"; |
| 824 (*keyboard_overlay_map)["xkb:ch:fr:fra"] = "fr"; |
| 825 (*keyboard_overlay_map)["xkb:de::ger"] = "de"; |
| 826 (*keyboard_overlay_map)["xkb:be::ger"] = "de"; |
| 827 (*keyboard_overlay_map)["xkb:ch::ger"] = "de"; |
| 828 (*keyboard_overlay_map)["mozc"] = "en_US"; |
| 829 (*keyboard_overlay_map)["mozc-jp"] = "ja"; |
| 830 (*keyboard_overlay_map)["mozc-dv"] = "en_US_dvorak"; |
| 831 (*keyboard_overlay_map)["xkb:jp::jpn"] = "ja"; |
| 832 (*keyboard_overlay_map)["xkb:ru::rus"] = "ru"; |
| 833 (*keyboard_overlay_map)["xkb:ru:phonetic:rus"] = "ru"; |
| 834 (*keyboard_overlay_map)["m17n:th:kesmanee"] = "th"; |
| 835 (*keyboard_overlay_map)["m17n:th:pattachote"] = "th"; |
| 836 (*keyboard_overlay_map)["m17n:th:tis820"] = "th"; |
| 837 (*keyboard_overlay_map)["chewing"] = "zh_TW"; |
| 838 (*keyboard_overlay_map)["m17n:zh:cangjie"] = "zh_TW"; |
| 839 (*keyboard_overlay_map)["m17n:zh:quick"] = "zh_TW"; |
| 840 (*keyboard_overlay_map)["m17n:vi:tcvn"] = "vi"; |
| 841 (*keyboard_overlay_map)["m17n:vi:telex"] = "vi"; |
| 842 (*keyboard_overlay_map)["m17n:vi:viqr"] = "vi"; |
| 843 (*keyboard_overlay_map)["m17n:vi:vni"] = "vi"; |
| 844 (*keyboard_overlay_map)["xkb:us::eng"] = "en_US"; |
| 845 (*keyboard_overlay_map)["xkb:us:intl:eng"] = "en_US"; |
| 846 (*keyboard_overlay_map)["xkb:us:altgr-intl:eng"] = "en_US"; |
| 847 (*keyboard_overlay_map)["xkb:us:dvorak:eng"] = |
| 848 "en_US_dvorak"; |
| 849 (*keyboard_overlay_map)["xkb:us:colemak:eng"] = |
| 850 "en_US"; |
| 851 (*keyboard_overlay_map)["hangul"] = "ko"; |
| 852 (*keyboard_overlay_map)["pinyin"] = "zh_CN"; |
| 853 (*keyboard_overlay_map)["m17n:ar:kbd"] = "ar"; |
| 854 (*keyboard_overlay_map)["m17n:hi:itrans"] = "hi"; |
| 855 (*keyboard_overlay_map)["m17n:fa:isiri"] = "ar"; |
| 856 (*keyboard_overlay_map)["xkb:br::por"] = "pt_BR"; |
| 857 (*keyboard_overlay_map)["xkb:bg::bul"] = "bg"; |
| 858 (*keyboard_overlay_map)["xkb:bg:phonetic:bul"] = "bg"; |
| 859 (*keyboard_overlay_map)["xkb:ca:eng:eng"] = "ca"; |
| 860 (*keyboard_overlay_map)["xkb:cz::cze"] = "cs"; |
| 861 (*keyboard_overlay_map)["xkb:ee::est"] = "et"; |
| 862 (*keyboard_overlay_map)["xkb:es::spa"] = "es"; |
| 863 (*keyboard_overlay_map)["xkb:es:cat:cat"] = "ca"; |
| 864 (*keyboard_overlay_map)["xkb:dk::dan"] = "da"; |
| 865 (*keyboard_overlay_map)["xkb:gr::gre"] = "el"; |
| 866 (*keyboard_overlay_map)["xkb:il::heb"] = "iw"; |
| 867 (*keyboard_overlay_map)["xkb:kr:kr104:kor"] = "ko"; |
| 868 (*keyboard_overlay_map)["xkb:latam::spa"] = "es_419"; |
| 869 (*keyboard_overlay_map)["xkb:lt::lit"] = "lt"; |
| 870 (*keyboard_overlay_map)["xkb:lv:apostrophe:lav"] = "lv"; |
| 871 (*keyboard_overlay_map)["xkb:hr::scr"] = "hr"; |
| 872 (*keyboard_overlay_map)["xkb:gb:extd:eng"] = "en_GB"; |
| 873 (*keyboard_overlay_map)["xkb:fi::fin"] = "fi"; |
| 874 (*keyboard_overlay_map)["xkb:hu::hun"] = "hu"; |
| 875 (*keyboard_overlay_map)["xkb:it::ita"] = "it"; |
| 876 (*keyboard_overlay_map)["xkb:no::nob"] = "no"; |
| 877 (*keyboard_overlay_map)["xkb:pl::pol"] = "pl"; |
| 878 (*keyboard_overlay_map)["xkb:pt::por"] = "pt_PT"; |
| 879 (*keyboard_overlay_map)["xkb:ro::rum"] = "ro"; |
| 880 (*keyboard_overlay_map)["xkb:se::swe"] = "sv"; |
| 881 (*keyboard_overlay_map)["xkb:sk::slo"] = "sk"; |
| 882 (*keyboard_overlay_map)["xkb:si::slv"] = "sl"; |
| 883 (*keyboard_overlay_map)["xkb:rs::srp"] = "sr"; |
| 884 (*keyboard_overlay_map)["xkb:tr::tur"] = "tr"; |
| 885 (*keyboard_overlay_map)["xkb:ua::ukr"] = "uk"; |
| 886 return keyboard_overlay_map; |
| 887 } |
| 888 |
| 798 InputMethodDescriptor previous_input_method_; | 889 InputMethodDescriptor previous_input_method_; |
| 799 InputMethodDescriptor current_input_method_; | 890 InputMethodDescriptor current_input_method_; |
| 800 ImePropertyList current_ime_properties_; | 891 ImePropertyList current_ime_properties_; |
| 892 scoped_ptr<KeyboardOverlayMap> keyboard_overlay_map_; |
| 801 | 893 |
| 802 DISALLOW_COPY_AND_ASSIGN(InputMethodLibraryStubImpl); | 894 DISALLOW_COPY_AND_ASSIGN(InputMethodLibraryStubImpl); |
| 803 }; | 895 }; |
| 804 | 896 |
| 805 // static | 897 // static |
| 806 InputMethodLibrary* InputMethodLibrary::GetImpl(bool stub) { | 898 InputMethodLibrary* InputMethodLibrary::GetImpl(bool stub) { |
| 807 if (stub) | 899 if (stub) |
| 808 return new InputMethodLibraryStubImpl(); | 900 return new InputMethodLibraryStubImpl(); |
| 809 else | 901 else |
| 810 return new InputMethodLibraryImpl(); | 902 return new InputMethodLibraryImpl(); |
| 811 } | 903 } |
| 812 | 904 |
| 813 } // namespace chromeos | 905 } // namespace chromeos |
| 814 | 906 |
| 815 // Allows InvokeLater without adding refcounting. This class is a Singleton and | 907 // Allows InvokeLater without adding refcounting. This class is a Singleton and |
| 816 // won't be deleted until it's last InvokeLater is run. | 908 // won't be deleted until it's last InvokeLater is run. |
| 817 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::InputMethodLibraryImpl); | 909 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::InputMethodLibraryImpl); |
| OLD | NEW |