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.
5 #ifndef CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_
6 #define CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_
12 #include "extensions/common/extension.h"
13 #include "extensions/common/manifest_handler.h"
16 namespace extensions
{
20 enum InputComponentType
{
21 INPUT_COMPONENT_TYPE_NONE
= -1,
22 INPUT_COMPONENT_TYPE_IME
,
23 INPUT_COMPONENT_TYPE_COUNT
26 struct InputComponentInfo
{
27 // Define out of line constructor/destructor to please Clang.
29 ~InputComponentInfo();
32 InputComponentType type
;
34 std::string description
;
35 std::set
<std::string
> languages
;
36 std::set
<std::string
> layouts
;
37 std::string shortcut_keycode
;
41 GURL options_page_url
;
45 struct InputComponents
: public Extension::ManifestData
{
46 // Define out of line constructor/destructor to please Clang.
48 virtual ~InputComponents();
50 std::vector
<InputComponentInfo
> input_components
;
52 // Returns list of input components and associated properties.
53 static const std::vector
<InputComponentInfo
>* GetInputComponents(
54 const Extension
* extension
);
57 // Parses the "incognito" manifest key.
58 class InputComponentsHandler
: public ManifestHandler
{
60 InputComponentsHandler();
61 virtual ~InputComponentsHandler();
63 virtual bool Parse(Extension
* extension
, base::string16
* error
) OVERRIDE
;
65 // Requires kOptionsPage is already parsed.
66 virtual const std::vector
<std::string
> PrerequisiteKeys() const OVERRIDE
;
69 virtual const std::vector
<std::string
> Keys() const OVERRIDE
;
71 DISALLOW_COPY_AND_ASSIGN(InputComponentsHandler
);
74 } // namespace extensions
76 #endif // CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_