Home | History | Annotate | Download | only in browser
      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
     13 IconGroupID IconLoader::ReadGroupIDFromFilepath(
     14     const base::FilePath& filepath) {
     15   return base::nix::GetFileMimeType(filepath);
     16 }
     17 
     18 // static
     19 bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) {
     20   return false;
     21 }
     22 
     23 // static
     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 
     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