// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_ICON_SET_H_ #define CHROME_COMMON_EXTENSIONS_EXTENSION_ICON_SET_H_ #pragma once #include <map> #include <string> // Represents the set of icons for an extension. class ExtensionIconSet { public: ExtensionIconSet(); ~ExtensionIconSet(); // Access to the underlying map from icon size->path. typedef std::map<int, std::string> IconMap; const IconMap& map() const { return map_; } // Remove all icons from the set. void Clear(); // Add an icon to the set. If the specified size is already present, it is // overwritten. void Add(int size, const std::string& path); // Get an icon from the set, optionally falling back to a smaller or bigger // size. MatchType is exclusive (do not OR them together). enum MatchType { MATCH_EXACTLY, MATCH_BIGGER, MATCH_SMALLER }; std::string Get(int size, MatchType match_type) const; // Returns true if the set contains the specified path. bool ContainsPath(const std::string& path) const; private: IconMap map_; }; #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_ICON_SET_H_