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
13IconGroupID IconLoader::ReadGroupIDFromFilepath(
14    const base::FilePath& filepath) {
15  return base::nix::GetFileMimeType(filepath);
16}
17
18bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) {
19  return false;
20}
21
22void 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