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.
5 #include "content/child/simple_webmimeregistry_impl.h"
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 "components/mime_util/mime_util.h"
12 #include "net/base/mime_util.h"
13 #include "third_party/WebKit/public/platform/WebString.h"
15 using blink::WebString
;
16 using blink::WebMimeRegistry
;
21 std::string
SimpleWebMimeRegistryImpl::ToASCIIOrEmpty(const WebString
& string
) {
22 return base::IsStringASCII(string
)
23 ? base::UTF16ToASCII(base::StringPiece16(string
))
27 WebMimeRegistry::SupportsType
SimpleWebMimeRegistryImpl::supportsMIMEType(
28 const WebString
& mime_type
) {
29 return mime_util::IsSupportedMimeType(ToASCIIOrEmpty(mime_type
))
30 ? WebMimeRegistry::IsSupported
31 : WebMimeRegistry::IsNotSupported
;
34 WebMimeRegistry::SupportsType
SimpleWebMimeRegistryImpl::supportsImageMIMEType(
35 const WebString
& mime_type
) {
36 return mime_util::IsSupportedImageMimeType(ToASCIIOrEmpty(mime_type
))
37 ? WebMimeRegistry::IsSupported
38 : WebMimeRegistry::IsNotSupported
;
41 WebMimeRegistry::SupportsType
42 SimpleWebMimeRegistryImpl::supportsImagePrefixedMIMEType(
43 const WebString
& mime_type
) {
44 std::string ascii_mime_type
= ToASCIIOrEmpty(mime_type
);
45 return (mime_util::IsSupportedImageMimeType(ascii_mime_type
) ||
46 (base::StartsWith(ascii_mime_type
, "image/",
47 base::CompareCase::SENSITIVE
) &&
48 mime_util::IsSupportedNonImageMimeType(ascii_mime_type
)))
49 ? WebMimeRegistry::IsSupported
50 : WebMimeRegistry::IsNotSupported
;
53 WebMimeRegistry::SupportsType
54 SimpleWebMimeRegistryImpl::supportsJavaScriptMIMEType(
55 const WebString
& mime_type
) {
56 return mime_util::IsSupportedJavascriptMimeType(ToASCIIOrEmpty(mime_type
))
57 ? WebMimeRegistry::IsSupported
58 : WebMimeRegistry::IsNotSupported
;
61 // When debugging layout tests failures in the test shell,
62 // see TestShellWebMimeRegistryImpl.
63 WebMimeRegistry::SupportsType
SimpleWebMimeRegistryImpl::supportsMediaMIMEType(
64 const WebString
& mime_type
,
65 const WebString
& codecs
,
66 const WebString
& key_system
) {
67 // Media features are only supported at the content/renderer/ layer.
68 return IsNotSupported
;
71 bool SimpleWebMimeRegistryImpl::supportsMediaSourceMIMEType(
72 const WebString
& mime_type
,
73 const WebString
& codecs
) {
74 // Media features are only supported at the content/renderer layer.
78 WebMimeRegistry::SupportsType
79 SimpleWebMimeRegistryImpl::supportsNonImageMIMEType(
80 const WebString
& mime_type
) {
81 return mime_util::IsSupportedNonImageMimeType(ToASCIIOrEmpty(mime_type
))
82 ? WebMimeRegistry::IsSupported
83 : WebMimeRegistry::IsNotSupported
;
86 WebString
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
);
94 WebString
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
);
102 WebString
SimpleWebMimeRegistryImpl::mimeTypeFromFile(
103 const WebString
& file_path
) {
104 std::string mime_type
;
105 net::GetMimeTypeFromFile(base::FilePath::FromUTF16Unsafe(file_path
),
107 return WebString::fromUTF8(mime_type
);
110 } // namespace content