summaryrefslogtreecommitdiffstats
path: root/chrome/browser/icon_manager.h
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-08 19:01:02 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-08 19:01:02 +0000
commit0f38ceaebbc66b29fb3297516f74f9c8379d902f (patch)
tree8af215d4a01c60a2d3a5fe0aa55fd35cab05a744 /chrome/browser/icon_manager.h
parenteac83f0d14be2fed85edf2ffad934dd1309819e7 (diff)
downloadchromium_src-0f38ceaebbc66b29fb3297516f74f9c8379d902f.zip
chromium_src-0f38ceaebbc66b29fb3297516f74f9c8379d902f.tar.gz
chromium_src-0f38ceaebbc66b29fb3297516f74f9c8379d902f.tar.bz2
Stub implementation of linux, mac icon loader/manager.
Define a platform specific type IconGroupID which helps with caching multiple requests for the same icon. Previously we just used the file path (or the extension), but on POSIX we use mime types rather than extensions. Review URL: http://codereview.chromium.org/113120 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15665 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/icon_manager.h')
-rw-r--r--chrome/browser/icon_manager.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/chrome/browser/icon_manager.h b/chrome/browser/icon_manager.h
index fbd0cd1..44d17da 100644
--- a/chrome/browser/icon_manager.h
+++ b/chrome/browser/icon_manager.h
@@ -25,6 +25,9 @@
// file extension and the results will be cached per extension. That way, all
// .mp3 files will share one icon, but all .exe files will have their own icon.
//
+// POSIX files don't have associated icons. We query the OS by the file's
+// mime type.
+//
// The IconManager can be queried in two ways:
// 1. A quick, synchronous check of its caches which does not touch the disk:
// IconManager::LookupIcon()
@@ -47,14 +50,15 @@
#include <string>
#include "base/hash_tables.h"
-#include "chrome/browser/icon_loader.h"
#include "chrome/browser/cancelable_request.h"
+#include "chrome/browser/icon_loader.h"
+class FilePath;
class SkBitmap;
class IconManager : public IconLoader::Delegate,
public CancelableRequestProvider {
-public:
+ public:
IconManager();
~IconManager();
@@ -83,14 +87,18 @@ public:
// IconLoader::Delegate interface.
virtual bool OnBitmapLoaded(IconLoader* source, SkBitmap* result);
-private:
+ // Get the identifying string for the given file. The implementation
+ // is in icon_manager_[platform].cc.
+ static IconGroupID GetGroupIDFromFilepath(const FilePath& path);
+
+ private:
struct CacheKey {
- CacheKey(const FilePath& file_name, IconLoader::IconSize size);
+ CacheKey(const IconGroupID& group, IconLoader::IconSize size);
// Used as a key in the map below, so we need this comparator.
bool operator<(const CacheKey &other) const;
- FilePath file_name;
+ IconGroupID group;
IconLoader::IconSize size;
};
@@ -100,12 +108,12 @@ private:
typedef CancelableRequest<IconRequestCallback> IconRequest;
typedef struct {
scoped_refptr<IconRequest> request;
- FilePath file_name;
+ IconGroupID group;
IconLoader::IconSize size;
} ClientRequest;
// Asynchronous requests that have not yet been completed.
- typedef base::hash_map<IconLoader*, ClientRequest> ClientRequests;
+ typedef std::map<IconLoader*, ClientRequest> ClientRequests;
ClientRequests requests_;
DISALLOW_COPY_AND_ASSIGN(IconManager);