1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef BASE_MIME_UTIL_H_ 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define BASE_MIME_UTIL_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <string> 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass FilePath; 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace mime_util { 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Gets the mime type for a file based on its filename. The file path does not 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// have to exist. Please note because it doesn't touch the disk, this does not 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// work for directories. 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// If the mime type is unknown, this will return application/octet-stream. 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstd::string GetFileMimeType(const FilePath& filepath); 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Get the mime type for a byte vector. 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstd::string GetDataMimeType(const std::string& data); 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined(TOOLKIT_GTK) 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// This detects the current GTK theme by calling gtk_settings_get_default(). 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// It should only be executed on the UI thread and must be called before 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// GetMimeIcon(). 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid DetectGtkTheme(); 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Gets the file name for an icon given the mime type and icon pixel size. 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Where an icon is a square image of |size| x |size|. 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// This will try to find the closest matching icon. If that's not available, 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// then a generic icon, and finally an empty FilePath if all else fails. 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottFilePath GetMimeIcon(const std::string& mime_type, size_t size); 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace mime_util 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif // BASE_MIME_UTIL_H_ 40