e11b0ebac0f8117040d96ce5b0cb5ee89476218f
[platform/framework/web/crosswalk.git] / src / chromeos / ime / input_method_descriptor.h
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::string& indicator,
25                         const std::vector<std::string>& keyboard_layouts,
26                         const std::vector<std::string>& language_codes,
27                         bool is_login_keyboard,
28                         const GURL& options_page_url,
29                         const GURL& input_view_url);
30   ~InputMethodDescriptor();
31
32   // Accessors
33   const std::string& id() const { return id_; }
34   const std::string& name() const { return name_; }
35   const std::string& indicator() const { return indicator_; }
36   const std::vector<std::string>& language_codes() const {
37     return language_codes_;
38   }
39   const GURL& options_page_url() const { return options_page_url_; }
40   const GURL& input_view_url() const { return input_view_url_; }
41   const std::vector<std::string>& keyboard_layouts() const {
42     return keyboard_layouts_;
43   }
44
45   bool is_login_keyboard() const { return is_login_keyboard_; }
46
47   // Returns preferred keyboard layout.
48   std::string GetPreferredKeyboardLayout() const;
49
50   // Returns the indicator text of this input method.
51   std::string GetIndicator() const;
52
53  private:
54   // An ID that identifies an input method engine (e.g., "t:latn-post",
55   // "pinyin", "hangul").
56   std::string id_;
57
58   // A name used to specify the user-visible name of this input method.  It is
59   // only used by extension IMEs, and should be blank for internal IMEs.
60   std::string name_;
61
62   // A preferred physical keyboard layout for the input method (e.g., "us",
63   // "us(dvorak)", "jp"). Comma separated layout names do NOT appear.
64   std::vector<std::string> keyboard_layouts_;
65
66   // Language code like "ko", "ja", "en-US", and "zh-CN".
67   std::vector<std::string> language_codes_;
68
69   // A short indicator string that is displayed when the input method
70   // is selected, like "US".
71   std::string indicator_;
72
73   // True if this input method can be used on login screen.
74   bool is_login_keyboard_;
75
76   // Options page URL e.g.
77   // "chrome-extension://ceaajjmckiakobniehbjpdcidfpohlin/options.html".
78   // This field is valid only for input method extension.
79   GURL options_page_url_;
80
81   // Input View URL e.g.
82   // "chrome-extension://ceaajjmckiakobniehbjpdcidfpohlin/my_input_view.html".
83   // This field is valid only for input method extension.
84   GURL input_view_url_;
85 };
86
87 typedef std::vector<InputMethodDescriptor> InputMethodDescriptors;
88
89 }  // namespace input_method
90 }  // namespace chromeos
91
92 #endif  // CHROMEOS_IME_INPUT_METHOD_DESCRIPTOR_H_