simple_webmimeregistry_impl.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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
14using blink::WebString;
15using blink::WebMimeRegistry;
16
17namespace content {
18
19//static
20std::string SimpleWebMimeRegistryImpl::ToASCIIOrEmpty(const WebString& string) {
21  return IsStringASCII(string) ? UTF16ToASCII(string) : std::string();
22}
23
24WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsMIMEType(
25    const WebString& mime_type) {
26  return net::IsSupportedMimeType(ToASCIIOrEmpty(mime_type)) ?
27      WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
28}
29
30WebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsImageMIMEType(
31    const WebString& mime_type) {
32  return net::IsSupportedImageMimeType(ToASCIIOrEmpty(mime_type)) ?
33      WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
34}
35
36WebMimeRegistry::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.
45WebMimeRegistry::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
53bool 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
60WebMimeRegistry::SupportsType
61    SimpleWebMimeRegistryImpl::supportsNonImageMIMEType(
62    const WebString& mime_type) {
63  return net::IsSupportedNonImageMimeType(ToASCIIOrEmpty(mime_type)) ?
64      WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
65}
66
67WebString 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
75WebString 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
83WebString 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
92