• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 #include "chrome/browser/icon_loader.h"
6 
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "base/nix/mime_util_xdg.h"
10 #include "ui/views/linux_ui/linux_ui.h"
11 
12 // static
ReadGroupIDFromFilepath(const base::FilePath & filepath)13 IconGroupID IconLoader::ReadGroupIDFromFilepath(
14     const base::FilePath& filepath) {
15   return base::nix::GetFileMimeType(filepath);
16 }
17 
IsIconMutableFromFilepath(const base::FilePath &)18 bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) {
19   return false;
20 }
21 
ReadIcon()22 void IconLoader::ReadIcon() {
23   int size_pixels = 0;
24   switch (icon_size_) {
25     case IconLoader::SMALL:
26       size_pixels = 16;
27       break;
28     case IconLoader::NORMAL:
29       size_pixels = 32;
30       break;
31     case IconLoader::LARGE:
32       size_pixels = 48;
33       break;
34     default:
35       NOTREACHED();
36   }
37 
38   views::LinuxUI* ui = views::LinuxUI::instance();
39   if (ui) {
40     gfx::Image image = ui->GetIconForContentType(group_, size_pixels);
41     if (!image.IsEmpty())
42       image_.reset(new gfx::Image(image));
43   }
44 
45   target_message_loop_->PostTask(
46       FROM_HERE, base::Bind(&IconLoader::NotifyDelegate, this));
47 }
48