Home | History | Annotate | Download | only in chromeos
      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 // Language options page UI handler for Chrome OS.  For non-Chrome OS,
     17 // see LanguageOptionsHnadler.
     18 class CrosLanguageOptionsHandler
     19     : public ::options::LanguageOptionsHandlerCommon,
     20       public ComponentExtensionIMEManager::Observer {
     21  public:
     22   CrosLanguageOptionsHandler();
     23   virtual ~CrosLanguageOptionsHandler();
     24 
     25   // OptionsPageUIHandler implementation.
     26   virtual void GetLocalizedValues(
     27       base::DictionaryValue* localized_strings) OVERRIDE;
     28 
     29   // DOMMessageHandler implementation.
     30   virtual void RegisterMessages() OVERRIDE;
     31 
     32   // The following static methods are public for ease of testing.
     33 
     34   // Gets the list of input methods from the given input descriptors.
     35   // The return value will look like:
     36   // [{'id': 'pinyin', 'displayName': 'Pinyin',
     37   //   'languageCodeSet': {'zh-CW': true}},  ...]
     38   //
     39   // Note that true in languageCodeSet does not mean anything. We just use
     40   // the dictionary as a set.
     41   static base::ListValue* GetInputMethodList(
     42       const input_method::InputMethodDescriptors& descriptors);
     43 
     44   // Gets the list of accept languages with the given input descriptors.
     45   // Listed languages will be used as Accept-Language header.
     46   // The return value will look like:
     47   // [{'code': 'fi', 'displayName': 'Finnish', 'nativeDisplayName': 'suomi'},
     48   //  ...]
     49   static base::ListValue* GetAcceptLanguageList(
     50       const input_method::InputMethodDescriptors& descriptors);
     51 
     52   // Gets the list of UI languages with the given input descriptors.
     53   // The return value will look like:
     54   // [{'code': 'fi', 'displayName': 'Finnish', 'nativeDisplayName': 'suomi'},
     55   //  ...]
     56   static base::ListValue* GetUILanguageList(
     57       const input_method::InputMethodDescriptors& descriptors);
     58 
     59   // Converts input method descriptors to the list of input methods.
     60   // The return value will look like:
     61   // [{'id': '_ext_ime_nejguenhnsnjnwychcnsdsdjketest',
     62   //   'displayName': 'Sample IME'},  ...]
     63   static base::ListValue* ConvertInputMethodDescriptosToIMEList(
     64       const input_method::InputMethodDescriptors& descriptors);
     65 
     66  private:
     67   // LanguageOptionsHandlerCommon implementation.
     68   virtual string16 GetProductName() OVERRIDE;
     69   virtual void SetApplicationLocale(const std::string& language_code) OVERRIDE;
     70 
     71   // Called when the sign-out button is clicked.
     72   void RestartCallback(const base::ListValue* args);
     73 
     74   // Called when the input method is disabled.
     75   // |args| will contain the input method ID as string (ex. "mozc").
     76   void InputMethodDisableCallback(const base::ListValue* args);
     77 
     78   // Called when the input method is enabled.
     79   // |args| will contain the input method ID as string (ex. "mozc").
     80   void InputMethodEnableCallback(const base::ListValue* args);
     81 
     82   // Called when the input method options page is opened.
     83   // |args| will contain the input method ID as string (ex. "mozc").
     84   void InputMethodOptionsOpenCallback(const base::ListValue* args);
     85 
     86   // ComponentExtensionIMEManager::Observer override.
     87   virtual void OnInitialized() OVERRIDE;
     88 
     89   // Gets the list of languages with |descriptors| based on
     90   // |base_language_codes|.
     91   static base::ListValue* GetLanguageListInternal(
     92       const input_method::InputMethodDescriptors& descriptors,
     93       const std::vector<std::string>& base_language_codes);
     94 
     95   // OptionsPageUIHandler implementation.
     96   virtual void InitializePage() OVERRIDE;
     97 
     98   // True if the component extension list was appended into input method list.
     99   bool composition_extension_appended_;
    100 
    101   // True if this page was initialized.
    102   bool is_page_initialized_;
    103 
    104   DISALLOW_COPY_AND_ASSIGN(CrosLanguageOptionsHandler);
    105 };
    106 
    107 }  // namespace options
    108 }  // namespace chromeos
    109 
    110 #endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_CROS_LANGUAGE_OPTIONS_HANDLER_H_
    111