Home | History | Annotate | Download | only in input_ime
      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_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_
      6 #define CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_
      7 
      8 #include <set>
      9 #include <string>
     10 #include <vector>
     11 
     12 #include "chrome/common/extensions/extension.h"
     13 #include "chrome/common/extensions/manifest_handler.h"
     14 #include "url/gurl.h"
     15 
     16 namespace extensions {
     17 
     18 class Extension;
     19 
     20 enum InputComponentType {
     21   INPUT_COMPONENT_TYPE_NONE = -1,
     22   INPUT_COMPONENT_TYPE_IME,
     23   INPUT_COMPONENT_TYPE_COUNT
     24 };
     25 
     26 struct InputComponentInfo {
     27   // Define out of line constructor/destructor to please Clang.
     28   InputComponentInfo();
     29   ~InputComponentInfo();
     30 
     31   std::string name;
     32   InputComponentType type;
     33   std::string id;
     34   std::string description;
     35   std::set<std::string> languages;
     36   std::set<std::string> layouts;
     37   std::string shortcut_keycode;
     38   bool shortcut_alt;
     39   bool shortcut_ctrl;
     40   bool shortcut_shift;
     41   GURL options_page_url;
     42 };
     43 
     44 struct InputComponents : public Extension::ManifestData {
     45   // Define out of line constructor/destructor to please Clang.
     46   InputComponents();
     47   virtual ~InputComponents();
     48 
     49   std::vector<InputComponentInfo> input_components;
     50 
     51   // Returns list of input components and associated properties.
     52   static const std::vector<InputComponentInfo>* GetInputComponents(
     53       const Extension* extension);
     54 };
     55 
     56 // Parses the "incognito" manifest key.
     57 class InputComponentsHandler : public ManifestHandler {
     58  public:
     59   InputComponentsHandler();
     60   virtual ~InputComponentsHandler();
     61 
     62   virtual bool Parse(Extension* extension, string16* error) OVERRIDE;
     63 
     64  private:
     65   virtual const std::vector<std::string> Keys() const OVERRIDE;
     66 
     67   DISALLOW_COPY_AND_ASSIGN(InputComponentsHandler);
     68 };
     69 
     70 }  // namespace extensions
     71 
     72 #endif  // CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_
     73