Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / extension_icon_set.h
1 // Copyright (c) 2012 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_EXTENSION_ICON_SET_H_
6 #define CHROME_COMMON_EXTENSIONS_EXTENSION_ICON_SET_H_
7
8 #include <map>
9 #include <string>
10
11 // Represents the set of icons for an extension.
12 class ExtensionIconSet {
13  public:
14   // Get an icon from the set, optionally falling back to a smaller or bigger
15   // size. MatchType is exclusive (do not OR them together).
16   enum MatchType {
17     MATCH_EXACTLY,
18     MATCH_BIGGER,
19     MATCH_SMALLER
20   };
21
22   // Access to the underlying map from icon size->{path, bitmap}.
23   typedef std::map<int, std::string> IconMap;
24
25   ExtensionIconSet();
26   ~ExtensionIconSet();
27
28   const IconMap& map() const { return map_; }
29   bool empty() const { return map_.empty(); }
30
31   // Remove all icons from the set.
32   void Clear();
33
34   // Add an icon path to the set. If a path for the specified size is already
35   // present, it is overwritten.
36   void Add(int size, const std::string& path);
37
38   // Gets path value of the icon found when searching for |size| using
39   // |mathc_type|.
40   std::string Get(int size, MatchType match_type) const;
41
42   // Returns true iff the set contains the specified path.
43   bool ContainsPath(const std::string& path) const;
44
45   // Returns icon size if the set contains the specified path or 0 if not found.
46   int GetIconSizeFromPath(const std::string& path) const;
47
48  private:
49   IconMap map_;
50 };
51
52 #endif  // CHROME_COMMON_EXTENSIONS_EXTENSION_ICON_SET_H_