Home | History | Annotate | Download | only in ime
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROMEOS_IME_INPUT_METHOD_DESCRIPTOR_H_
      6 #define CHROMEOS_IME_INPUT_METHOD_DESCRIPTOR_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "base/basictypes.h"
     12 #include "chromeos/chromeos_export.h"
     13 #include "url/gurl.h"
     14 
     15 namespace chromeos {
     16 namespace input_method {
     17 
     18 // A structure which represents an input method.
     19 class CHROMEOS_EXPORT InputMethodDescriptor {
     20  public:
     21   InputMethodDescriptor();
     22   InputMethodDescriptor(const std::string& id,
     23                         const std::string& name,
     24                         const std::vector<std::string>& keyboard_layouts,
     25                         const std::vector<std::string>& language_codes,
     26                         const GURL& options_page_url);
     27   ~InputMethodDescriptor();
     28 
     29   // Accessors
     30   const std::string& id() const { return id_; }
     31   const std::string& name() const { return name_; }
     32   const std::vector<std::string>& language_codes() const {
     33     return language_codes_;
     34   }
     35   const GURL& options_page_url() const { return options_page_url_; }
     36   const std::vector<std::string>& keyboard_layouts() const {
     37     return keyboard_layouts_;
     38   }
     39 
     40   // Returns preferred keyboard layout.
     41   std::string GetPreferredKeyboardLayout() const;
     42 
     43  private:
     44   // An ID that identifies an input method engine (e.g., "t:latn-post",
     45   // "pinyin", "hangul").
     46   std::string id_;
     47 
     48   // A name used to specify the user-visible name of this input method.  It is
     49   // only used by extension IMEs, and should be blank for internal IMEs.
     50   std::string name_;
     51 
     52   // A preferred physical keyboard layout for the input method (e.g., "us",
     53   // "us(dvorak)", "jp"). Comma separated layout names do NOT appear.
     54   std::vector<std::string> keyboard_layouts_;
     55 
     56   // Language code like "ko", "ja", "en-US", and "zh-CN".
     57   std::vector<std::string> language_codes_;
     58 
     59   // Options page URL e.g.
     60   // "chrome-extension://ceaajjmckiakobniehbjpdcidfpohlin/options.html".
     61   // We can't use GURL here due to dependency policy. This field is valid only
     62   // for input method extension.
     63   GURL options_page_url_;
     64 };
     65 
     66 typedef std::vector<InputMethodDescriptor> InputMethodDescriptors;
     67 
     68 }  // namespace input_method
     69 }  // namespace chromeos
     70 
     71 #endif  // CHROMEOS_IME_INPUT_METHOD_DESCRIPTOR_H_
     72