Home | History | Annotate | Download | only in child
      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 
     14 using blink::WebString;
     15 using blink::WebMimeRegistry;
     16 
     17 namespace content {
     18 
     19 //static
     20 std::string SimpleWebMimeRegistryImpl::ToASCIIOrEmpty(const WebString& string) {
     21   return base::IsStringASCII(string) ? base::UTF16ToASCII(string)
     22                                      : std::string();
     23 }
     24 
     25 WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsMIMEType(
     26     const WebString& mime_type) {
     27   return net::IsSupportedMimeType(ToASCIIOrEmpty(mime_type)) ?
     28       WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
     29 }
     30 
     31 WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsImageMIMEType(
     32     const WebString& mime_type) {
     33   return net::IsSupportedImageMimeType(ToASCIIOrEmpty(mime_type)) ?
     34       WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
     35 }
     36 
     37 WebMimeRegistry::SupportsType
     38     SimpleWebMimeRegistryImpl::supportsJavaScriptMIMEType(
     39     const WebString& mime_type) {
     40   return net::IsSupportedJavascriptMimeType(ToASCIIOrEmpty(mime_type)) ?
     41       WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
     42 }
     43 
     44 // When debugging layout tests failures in the test shell,
     45 // see TestShellWebMimeRegistryImpl.
     46 WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsMediaMIMEType(
     47     const WebString& mime_type,
     48     const WebString& codecs,
     49     const WebString& key_system) {
     50   // Media features are only supported at the content/renderer/ layer.
     51   return IsNotSupported;
     52 }
     53 
     54 bool SimpleWebMimeRegistryImpl::supportsMediaSourceMIMEType(
     55     const WebString& mime_type,
     56     const WebString& codecs) {
     57   // Media features are only supported at the content/renderer layer.
     58   return false;
     59 }
     60 
     61 bool SimpleWebMimeRegistryImpl::supportsEncryptedMediaMIMEType(
     62     const blink::WebString& key_system,
     63     const blink::WebString& mime_type,
     64     const blink::WebString& codecs) {
     65   // Media features are only supported at the content/renderer layer.
     66   return false;
     67 }
     68 
     69 WebMimeRegistry::SupportsType
     70     SimpleWebMimeRegistryImpl::supportsNonImageMIMEType(
     71     const WebString& mime_type) {
     72   return net::IsSupportedNonImageMimeType(ToASCIIOrEmpty(mime_type)) ?
     73       WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
     74 }
     75 
     76 WebString SimpleWebMimeRegistryImpl::mimeTypeForExtension(
     77     const WebString& file_extension) {
     78   std::string mime_type;
     79   net::GetMimeTypeFromExtension(
     80       base::FilePath::FromUTF16Unsafe(file_extension).value(), &mime_type);
     81   return WebString::fromUTF8(mime_type);
     82 }
     83 
     84 WebString SimpleWebMimeRegistryImpl::wellKnownMimeTypeForExtension(
     85     const WebString& file_extension) {
     86   std::string mime_type;
     87   net::GetWellKnownMimeTypeFromExtension(
     88       base::FilePath::FromUTF16Unsafe(file_extension).value(), &mime_type);
     89   return WebString::fromUTF8(mime_type);
     90 }
     91 
     92 WebString SimpleWebMimeRegistryImpl::mimeTypeFromFile(
     93     const WebString& file_path) {
     94   std::string mime_type;
     95   net::GetMimeTypeFromFile(base::FilePath::FromUTF16Unsafe(file_path),
     96                            &mime_type);
     97   return WebString::fromUTF8(mime_type);
     98 }
     99 
    100 }  // namespace content
    101