1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/icon_loader.h" 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/bind.h" 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/message_loop/message_loop.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/nix/mime_util_xdg.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/views/linux_ui/linux_ui.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IconGroupID IconLoader::ReadGroupIDFromFilepath( 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const base::FilePath& filepath) { 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return base::nix::GetFileMimeType(filepath); 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// static 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool IconLoader::IsIconMutableFromFilepath(const base::FilePath&) { 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return false; 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// static 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)content::BrowserThread::ID IconLoader::ReadIconThreadID() { 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // ReadIcon() calls into views::LinuxUI and GTK2 code, so it must be on the UI 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // thread. 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return content::BrowserThread::UI; 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void IconLoader::ReadIcon() { 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int size_pixels = 0; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) switch (icon_size_) { 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case IconLoader::SMALL: 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) size_pixels = 16; 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) break; 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case IconLoader::NORMAL: 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) size_pixels = 32; 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) break; 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case IconLoader::LARGE: 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) size_pixels = 48; 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) break; 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) default: 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) NOTREACHED(); 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) views::LinuxUI* ui = views::LinuxUI::instance(); 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (ui) { 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gfx::Image image = ui->GetIconForContentType(group_, size_pixels); 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!image.IsEmpty()) 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) image_.reset(new gfx::Image(image)); 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) target_message_loop_->PostTask( 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FROM_HERE, base::Bind(&IconLoader::NotifyDelegate, this)); 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 56