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