Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / manifest_handlers / theme_handler.h
1 // Copyright (c) 2013 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_MANIFEST_HANDLERS_THEME_HANDLER_H_
6 #define CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_THEME_HANDLER_H_
7
8 #include "extensions/common/extension.h"
9 #include "extensions/common/manifest_handler.h"
10
11 namespace base {
12 class DictionaryValue;
13 }
14
15 namespace extensions {
16
17 // A structure to hold the parsed theme data.
18 struct ThemeInfo : public Extension::ManifestData {
19   // Define out of line constructor/destructor to please Clang.
20   ThemeInfo();
21   ~ThemeInfo() override;
22
23   static const base::DictionaryValue* GetImages(const Extension* extension);
24   static const base::DictionaryValue* GetColors(const Extension* extension);
25   static const base::DictionaryValue* GetTints(const Extension* extension);
26   static const base::DictionaryValue* GetDisplayProperties(
27       const Extension* extension);
28
29   // A map of resource id's to relative file paths.
30   scoped_ptr<base::DictionaryValue> theme_images_;
31
32   // A map of color names to colors.
33   scoped_ptr<base::DictionaryValue> theme_colors_;
34
35   // A map of color names to colors.
36   scoped_ptr<base::DictionaryValue> theme_tints_;
37
38   // A map of display properties.
39   scoped_ptr<base::DictionaryValue> theme_display_properties_;
40 };
41
42 // Parses the "theme" manifest key.
43 class ThemeHandler : public ManifestHandler {
44  public:
45   ThemeHandler();
46   ~ThemeHandler() override;
47
48   bool Parse(Extension* extension, base::string16* error) override;
49   bool Validate(const Extension* extension,
50                 std::string* error,
51                 std::vector<InstallWarning>* warnings) const override;
52
53  private:
54   const std::vector<std::string> Keys() const override;
55
56   DISALLOW_COPY_AND_ASSIGN(ThemeHandler);
57 };
58
59 }  // namespace extensions
60
61 #endif  // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_THEME_HANDLER_H_