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.
5 #include "webkit/glue/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 "net/base/mime_util.h"
12 #include "third_party/WebKit/public/platform/WebString.h"
14 using blink::WebString
;
15 using blink::WebMimeRegistry
;
17 namespace webkit_glue
{
20 std::string
SimpleWebMimeRegistryImpl::ToASCIIOrEmpty(const WebString
& string
) {
21 return IsStringASCII(string
) ? UTF16ToASCII(string
) : std::string();
24 WebMimeRegistry::SupportsType
SimpleWebMimeRegistryImpl::supportsMIMEType(
25 const WebString
& mime_type
) {
26 return net::IsSupportedMimeType(ToASCIIOrEmpty(mime_type
)) ?
27 WebMimeRegistry::IsSupported
: WebMimeRegistry::IsNotSupported
;
30 WebMimeRegistry::SupportsType
SimpleWebMimeRegistryImpl::supportsImageMIMEType(
31 const WebString
& mime_type
) {
32 return net::IsSupportedImageMimeType(ToASCIIOrEmpty(mime_type
)) ?
33 WebMimeRegistry::IsSupported
: WebMimeRegistry::IsNotSupported
;
36 WebMimeRegistry::SupportsType
37 SimpleWebMimeRegistryImpl::supportsJavaScriptMIMEType(
38 const WebString
& mime_type
) {
39 return net::IsSupportedJavascriptMimeType(ToASCIIOrEmpty(mime_type
)) ?
40 WebMimeRegistry::IsSupported
: WebMimeRegistry::IsNotSupported
;
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
;
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
;
60 WebMimeRegistry::SupportsType
61 SimpleWebMimeRegistryImpl::supportsNonImageMIMEType(
62 const WebString
& mime_type
) {
63 return net::IsSupportedNonImageMimeType(ToASCIIOrEmpty(mime_type
)) ?
64 WebMimeRegistry::IsSupported
: WebMimeRegistry::IsNotSupported
;
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
);
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
);
83 WebString
SimpleWebMimeRegistryImpl::mimeTypeFromFile(
84 const WebString
& file_path
) {
85 std::string mime_type
;
86 net::GetMimeTypeFromFile(base::FilePath::FromUTF16Unsafe(file_path
),
88 return WebString::fromUTF8(mime_type
);
91 } // namespace webkit_glue