Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / content / child / simple_webmimeregistry_impl.cc
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 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 content