12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_ICONS_HANDLER_H_ 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_ICONS_HANDLER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/extension_icon_set.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/extension_resource.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/manifest_handler.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct IconsInfo : public Extension::ManifestData { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Max size (both dimensions) for browser and page actions. 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const int kPageActionIconMaxSize; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const int kBrowserActionIconMaxSize; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The icons for the extension. 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExtensionIconSet icons; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Return the icon set for the given |extension|. 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const ExtensionIconSet& GetIcons(const Extension* extension); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the default extension/app icon (for extensions or apps that don't 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // have one). 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const gfx::ImageSkia& GetDefaultExtensionIcon(); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const gfx::ImageSkia& GetDefaultAppIcon(); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Get an extension icon as a resource or URL. 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static ExtensionResource GetIconResource( 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Extension* extension, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int size, 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExtensionIconSet::MatchType match_type); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static GURL GetIconURL(const Extension* extension, 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int size, 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ExtensionIconSet::MatchType match_type); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Parses the "icons" manifest key. 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class IconsHandler : public ManifestHandler { 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IconsHandler(); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~IconsHandler(); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual bool Parse(Extension* extension, base::string16* error) OVERRIDE; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool Validate(const Extension* extension, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string* error, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<InstallWarning>* warnings) const OVERRIDE; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual const std::vector<std::string> Keys() const OVERRIDE; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // CHROME_COMMON_EXTENSIONS_MANIFEST_HANDLERS_ICONS_HANDLER_H_ 61