• 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 
18 // static
IsIconMutableFromFilepath(const base::FilePath &)19 bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) {
20   return false;
21 }
22 
23 // static
ReadIconThreadID()24 content::BrowserThread::ID IconLoader::ReadIconThreadID() {
25   // ReadIcon() calls into views::LinuxUI and GTK2 code, so it must be on the UI
26   // thread.
27   return content::BrowserThread::UI;
28 }
29 
ReadIcon()30 void IconLoader::ReadIcon() {
31   int size_pixels = 0;
32   switch (icon_size_) {
33     case IconLoader::SMALL:
34       size_pixels = 16;
35       break;
36     case IconLoader::NORMAL:
37       size_pixels = 32;
38       break;
39     case IconLoader::LARGE:
40       size_pixels = 48;
41       break;
42     default:
43       NOTREACHED();
44   }
45 
46   views::LinuxUI* ui = views::LinuxUI::instance();
47   if (ui) {
48     gfx::Image image = ui->GetIconForContentType(group_, size_pixels);
49     if (!image.IsEmpty())
50       image_.reset(new gfx::Image(image));
51   }
52 
53   target_message_loop_->PostTask(
54       FROM_HERE, base::Bind(&IconLoader::NotifyDelegate, this));
55 }
56