37a4cc0e180c5cdb72f9e465ecd12201d874efe6
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / options / chromeos / cros_language_options_handler.h
1 // Copyright (c) 2012 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 CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_CROS_LANGUAGE_OPTIONS_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_CROS_LANGUAGE_OPTIONS_HANDLER_H_
7
8 #include "base/compiler_specific.h"
9 #include "chrome/browser/ui/webui/options/language_options_handler.h"
10 #include "chromeos/ime/component_extension_ime_manager.h"
11 #include "chromeos/ime/input_method_descriptor.h"
12
13 namespace chromeos {
14 namespace options {
15
16 // GetUILanguageList() returns concatenated list of list of vendor languages
17 // followed by other languages. An entry with "code" attribute set to this value
18 // is inserted in between.
19 extern const char kVendorOtherLanguagesListDivider[];
20
21 // Language options page UI handler for Chrome OS.  For non-Chrome OS,
22 // see LanguageOptionsHnadler.
23 class CrosLanguageOptionsHandler
24     : public ::options::LanguageOptionsHandlerCommon,
25       public ComponentExtensionIMEManager::Observer {
26  public:
27   CrosLanguageOptionsHandler();
28   virtual ~CrosLanguageOptionsHandler();
29
30   // OptionsPageUIHandler implementation.
31   virtual void GetLocalizedValues(
32       base::DictionaryValue* localized_strings) OVERRIDE;
33
34   // DOMMessageHandler implementation.
35   virtual void RegisterMessages() OVERRIDE;
36
37   // The following static methods are public for ease of testing.
38
39   // Gets the list of input methods from the given input descriptors.
40   // The return value will look like:
41   // [{'id': 'pinyin', 'displayName': 'Pinyin',
42   //   'languageCodeSet': {'zh-CW': true}},  ...]
43   //
44   // Note that true in languageCodeSet does not mean anything. We just use
45   // the dictionary as a set.
46   static base::ListValue* GetInputMethodList(
47       const input_method::InputMethodDescriptors& descriptors);
48
49   // Gets the list of accept languages with the given input descriptors.
50   // Listed languages will be used as Accept-Language header.
51   // The return value will look like:
52   // [{'code': 'fi', 'displayName': 'Finnish', 'nativeDisplayName': 'suomi'},
53   //  ...]
54   // "most relevant" languages, as set in initial_locale in VPD, will be first
55   // in the list.
56   static base::ListValue* GetAcceptLanguageList(
57       const input_method::InputMethodDescriptors& descriptors);
58
59   // Gets the list of UI languages with the given input descriptors.
60   // The return value will look like:
61   // [{'code': 'fi', 'displayName': 'Finnish', 'nativeDisplayName': 'suomi'},
62   //  ...]
63   // "most relevant" languages, as set in initial_locale in VPD, will be first
64   // in the list.
65   // An entry with "code" attribute set to kVendorOtherLanguagesListDivider is
66   // used as a divider to separate "most relevant" languages against other.
67   static base::ListValue* GetUILanguageList(
68       const input_method::InputMethodDescriptors& descriptors);
69
70   // Converts input method descriptors to the list of input methods.
71   // The return value will look like:
72   // [{'id': '_ext_ime_nejguenhnsnjnwychcnsdsdjketest',
73   //   'displayName': 'Sample IME'},  ...]
74   static base::ListValue* ConvertInputMethodDescriptosToIMEList(
75       const input_method::InputMethodDescriptors& descriptors);
76
77  private:
78   // LanguageOptionsHandlerCommon implementation.
79   virtual base::string16 GetProductName() OVERRIDE;
80   virtual void SetApplicationLocale(const std::string& language_code) OVERRIDE;
81
82   // Called when the sign-out button is clicked.
83   void RestartCallback(const base::ListValue* args);
84
85   // Called when the input method is disabled.
86   // |args| will contain the input method ID as string (ex. "mozc").
87   void InputMethodDisableCallback(const base::ListValue* args);
88
89   // Called when the input method is enabled.
90   // |args| will contain the input method ID as string (ex. "mozc").
91   void InputMethodEnableCallback(const base::ListValue* args);
92
93   // Called when the input method options page is opened.
94   // |args| will contain the input method ID as string (ex. "mozc").
95   void InputMethodOptionsOpenCallback(const base::ListValue* args);
96
97   // ComponentExtensionIMEManager::Observer override.
98   virtual void OnInitialized() OVERRIDE;
99
100   // Gets the list of languages with |descriptors| based on
101   // |base_language_codes|.
102   // |insert_divider| means to insert entry with "code" attribute set to
103   // kVendorOtherLanguagesListDivider between "most relevant" languages and
104   // other.
105   static base::ListValue* GetLanguageListInternal(
106       const input_method::InputMethodDescriptors& descriptors,
107       const std::vector<std::string>& base_language_codes,
108       bool insert_divider);
109
110   // OptionsPageUIHandler implementation.
111   virtual void InitializePage() OVERRIDE;
112
113   // True if the component extension list was appended into input method list.
114   bool composition_extension_appended_;
115
116   // True if this page was initialized.
117   bool is_page_initialized_;
118
119   DISALLOW_COPY_AND_ASSIGN(CrosLanguageOptionsHandler);
120 };
121
122 }  // namespace options
123 }  // namespace chromeos
124
125 #endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_CROS_LANGUAGE_OPTIONS_HANDLER_H_