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 "extensions/common/extension.h"
     13 #include "extensions/common/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   GURL input_view_url;
     43 };
     44 
     45 struct InputComponents : public Extension::ManifestData {
     46   // Define out of line constructor/destructor to please Clang.
     47   InputComponents();
     48   virtual ~InputComponents();
     49 
     50   std::vector<InputComponentInfo> input_components;
     51 
     52   // Returns list of input components and associated properties.
     53   static const std::vector<InputComponentInfo>* GetInputComponents(
     54       const Extension* extension);
     55 };
     56 
     57 // Parses the "incognito" manifest key.
     58 class InputComponentsHandler : public ManifestHandler {
     59  public:
     60   InputComponentsHandler();
     61   virtual ~InputComponentsHandler();
     62 
     63   virtual bool Parse(Extension* extension, base::string16* error) OVERRIDE;
     64 
     65   // Requires kOptionsPage is already parsed.
     66   virtual const std::vector<std::string> PrerequisiteKeys() const OVERRIDE;
     67 
     68  private:
     69   virtual const std::vector<std::string> Keys() const OVERRIDE;
     70 
     71   DISALLOW_COPY_AND_ASSIGN(InputComponentsHandler);
     72 };
     73 
     74 }  // namespace extensions
     75 
     76 #endif  // CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_
     77