[email protected] | 66171ab | 2011-03-03 15:50:07 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
[email protected] | 0f38ceae | 2009-05-08 19:01:02 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #include "chrome/browser/icon_loader.h" | ||||
6 | |||||
[email protected] | 09c6dec | 2009-06-16 19:57:22 | [diff] [blame] | 7 | #import <AppKit/AppKit.h> |
8 | |||||
[email protected] | 0f38ceae | 2009-05-08 19:01:02 | [diff] [blame] | 9 | #include "base/message_loop.h" |
[email protected] | 34b9963 | 2011-01-01 01:01:06 | [diff] [blame] | 10 | #include "base/threading/thread.h" |
[email protected] | 09c6dec | 2009-06-16 19:57:22 | [diff] [blame] | 11 | #include "base/sys_string_conversions.h" |
12 | #include "skia/ext/skia_utils_mac.h" | ||||
13 | #include "third_party/skia/include/core/SkBitmap.h" | ||||
[email protected] | 0f38ceae | 2009-05-08 19:01:02 | [diff] [blame] | 14 | |
15 | void IconLoader::ReadIcon() { | ||||
[email protected] | 09c6dec | 2009-06-16 19:57:22 | [diff] [blame] | 16 | NSString* group = base::SysUTF8ToNSString(group_); |
17 | NSWorkspace* workspace = [NSWorkspace sharedWorkspace]; | ||||
18 | NSImage* icon = [workspace iconForFileType:group]; | ||||
19 | |||||
[email protected] | 955c37b | 2011-06-08 21:26:30 | [diff] [blame^] | 20 | if (icon_size_ == ALL) { |
21 | // The NSImage already has all sizes. | ||||
22 | image_.reset(new gfx::Image([icon retain])); | ||||
23 | } else { | ||||
24 | NSSize size = NSZeroSize; | ||||
25 | switch (icon_size_) { | ||||
26 | case IconLoader::SMALL: | ||||
27 | size = NSMakeSize(16, 16); | ||||
28 | break; | ||||
29 | case IconLoader::NORMAL: | ||||
30 | size = NSMakeSize(32, 32); | ||||
31 | break; | ||||
32 | default: | ||||
33 | NOTREACHED(); | ||||
34 | } | ||||
35 | image_.reset(new gfx::Image(new SkBitmap( | ||||
36 | gfx::NSImageToSkBitmap(icon, size, false)))); | ||||
37 | } | ||||
[email protected] | 0f38ceae | 2009-05-08 19:01:02 | [diff] [blame] | 38 | |
39 | target_message_loop_->PostTask(FROM_HERE, | ||||
40 | NewRunnableMethod(this, &IconLoader::NotifyDelegate)); | ||||
41 | } |