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