summaryrefslogtreecommitdiffstats
path: root/chrome/browser/icon_loader_linux.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-20 00:24:39 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-20 00:24:39 +0000
commitdcefa305312e7045cce1ec6bc746a4ba26dec871 (patch)
tree7fbea6592ac6d4c59cc456227a3d5195818a7679 /chrome/browser/icon_loader_linux.cc
parentcf2a4e4fe2c337c2c4bf4f14443fc2cbb3f6e2d9 (diff)
downloadchromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.zip
chromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.tar.gz
chromium_src-dcefa305312e7045cce1ec6bc746a4ba26dec871.tar.bz2
Linux download shelf icons first cut.
Nor do we have support for alternate file formats; nor do we have a default icon. BUG=http://crbug.com/8631 Review URL: http://codereview.chromium.org/113571 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/icon_loader_linux.cc')
-rw-r--r--chrome/browser/icon_loader_linux.cc29
1 files changed, 28 insertions, 1 deletions
diff --git a/chrome/browser/icon_loader_linux.cc b/chrome/browser/icon_loader_linux.cc
index 83a8305..26788d8 100644
--- a/chrome/browser/icon_loader_linux.cc
+++ b/chrome/browser/icon_loader_linux.cc
@@ -4,11 +4,38 @@
#include "chrome/browser/icon_loader.h"
+#include "base/file_util.h"
+#include "base/gfx/png_decoder.h"
+#include "base/logging.h"
#include "base/message_loop.h"
+#include "base/mime_util.h"
#include "base/thread.h"
+#include "base/string_util.h"
+#include "third_party/skia/include/core/SkBitmap.h"
void IconLoader::ReadIcon() {
- NOTIMPLEMENTED();
+ size_t size = 48;
+ if (icon_size_ == NORMAL)
+ size = 32;
+ else if (icon_size_ == SMALL)
+ size = 16;
+
+ FilePath filename = mime_util::GetMimeIcon(group_, size);
+ if (LowerCaseEqualsASCII(mime_util::GetFileMimeType(filename), "image/png")) {
+ std::string file_contents;
+ file_util::ReadFileToString(filename, &file_contents);
+
+ std::vector<unsigned char> pixels;
+ int width, height;
+ if (PNGDecoder::Decode(
+ reinterpret_cast<const unsigned char*>(file_contents.c_str()),
+ file_contents.length(), PNGDecoder::FORMAT_BGRA,
+ &pixels, &width, &height)) {
+ bitmap_ = PNGDecoder::CreateSkBitmapFromBGRAFormat(pixels, width, height);
+ }
+ } else {
+ // TODO(estade): support other file types.
+ }
target_message_loop_->PostTask(FROM_HERE,
NewRunnableMethod(this, &IconLoader::NotifyDelegate));