simple_webmimeregistry_impl.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright 2014 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 "content/child/simple_webmimeregistry_impl.h" 6 7#include "base/files/file_path.h" 8#include "base/strings/string_util.h" 9#include "base/strings/sys_string_conversions.h" 10#include "base/strings/utf_string_conversions.h" 11#include "net/base/mime_util.h" 12#include "third_party/WebKit/public/platform/WebString.h" 13 14using blink::WebString; 15using blink::WebMimeRegistry; 16 17namespace content { 18 19//static 20std::string SimpleWebMimeRegistryImpl::ToASCIIOrEmpty(const WebString& string) { 21 return base::IsStringASCII(string) ? base::UTF16ToASCII(string) 22 : std::string(); 23} 24 25WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsMIMEType( 26 const WebString& mime_type) { 27 return net::IsSupportedMimeType(ToASCIIOrEmpty(mime_type)) ? 28 WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported; 29} 30 31WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsImageMIMEType( 32 const WebString& mime_type) { 33 return net::IsSupportedImageMimeType(ToASCIIOrEmpty(mime_type)) ? 34 WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported; 35} 36 37WebMimeRegistry::SupportsType 38 SimpleWebMimeRegistryImpl::supportsImagePrefixedMIMEType( 39 const WebString& mime_type) { 40 std::string ascii_mime_type = ToASCIIOrEmpty(mime_type); 41 return (net::IsSupportedImageMimeType(ascii_mime_type) || 42 (StartsWithASCII(ascii_mime_type, "image/", true) && 43 net::IsSupportedNonImageMimeType(ascii_mime_type))) ? 44 WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported; 45} 46 47WebMimeRegistry::SupportsType 48 SimpleWebMimeRegistryImpl::supportsJavaScriptMIMEType( 49 const WebString& mime_type) { 50 return net::IsSupportedJavascriptMimeType(ToASCIIOrEmpty(mime_type)) ? 51 WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported; 52} 53 54// When debugging layout tests failures in the test shell, 55// see TestShellWebMimeRegistryImpl. 56WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsMediaMIMEType( 57 const WebString& mime_type, 58 const WebString& codecs, 59 const WebString& key_system) { 60 // Media features are only supported at the content/renderer/ layer. 61 return IsNotSupported; 62} 63 64bool SimpleWebMimeRegistryImpl::supportsMediaSourceMIMEType( 65 const WebString& mime_type, 66 const WebString& codecs) { 67 // Media features are only supported at the content/renderer layer. 68 return false; 69} 70 71bool SimpleWebMimeRegistryImpl::supportsEncryptedMediaMIMEType( 72 const blink::WebString& key_system, 73 const blink::WebString& mime_type, 74 const blink::WebString& codecs) { 75 // Media features are only supported at the content/renderer layer. 76 return false; 77} 78 79WebMimeRegistry::SupportsType 80 SimpleWebMimeRegistryImpl::supportsNonImageMIMEType( 81 const WebString& mime_type) { 82 return net::IsSupportedNonImageMimeType(ToASCIIOrEmpty(mime_type)) ? 83 WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported; 84} 85 86WebString SimpleWebMimeRegistryImpl::mimeTypeForExtension( 87 const WebString& file_extension) { 88 std::string mime_type; 89 net::GetMimeTypeFromExtension( 90 base::FilePath::FromUTF16Unsafe(file_extension).value(), &mime_type); 91 return WebString::fromUTF8(mime_type); 92} 93 94WebString SimpleWebMimeRegistryImpl::wellKnownMimeTypeForExtension( 95 const WebString& file_extension) { 96 std::string mime_type; 97 net::GetWellKnownMimeTypeFromExtension( 98 base::FilePath::FromUTF16Unsafe(file_extension).value(), &mime_type); 99 return WebString::fromUTF8(mime_type); 100} 101 102WebString SimpleWebMimeRegistryImpl::mimeTypeFromFile( 103 const WebString& file_path) { 104 std::string mime_type; 105 net::GetMimeTypeFromFile(base::FilePath::FromUTF16Unsafe(file_path), 106 &mime_type); 107 return WebString::fromUTF8(mime_type); 108} 109 110} // namespace content 111