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