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