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
11namespace base {
12class DictionaryValue;
13}
14
15namespace extensions {
16
17// A structure to hold the parsed theme data.
18struct ThemeInfo : public Extension::ManifestData {
19  // Define out of line constructor/destructor to please Clang.
20  ThemeInfo();
21  virtual ~ThemeInfo();
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.
43class ThemeHandler : public ManifestHandler {
44 public:
45  ThemeHandler();
46  virtual ~ThemeHandler();
47
48  virtual bool Parse(Extension* extension, base::string16* error) OVERRIDE;
49  virtual bool Validate(const Extension* extension,
50                        std::string* error,
51                        std::vector<InstallWarning>* warnings) const OVERRIDE;
52
53 private:
54  virtual 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_
62