simple_webmimeregistry_impl.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Copyright 2014 The Chromium Authors. All rights reserved.
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Use of this source code is governed by a BSD-style license that can be
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// found in the LICENSE file.
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "content/child/simple_webmimeregistry_impl.h"
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "base/files/file_path.h"
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "base/strings/string_util.h"
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "base/strings/sys_string_conversions.h"
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "base/strings/utf_string_conversions.h"
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "net/base/mime_util.h"
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "third_party/WebKit/public/platform/WebString.h"
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgusing blink::WebString;
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgusing blink::WebMimeRegistry;
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnamespace content {
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//static
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstd::string SimpleWebMimeRegistryImpl::ToASCIIOrEmpty(const WebString& string) {
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return IsStringASCII(string) ? base::UTF16ToASCII(string) : std::string();
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsMIMEType(
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& mime_type) {
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return net::IsSupportedMimeType(ToASCIIOrEmpty(mime_type)) ?
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsImageMIMEType(
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& mime_type) {
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return net::IsSupportedImageMimeType(ToASCIIOrEmpty(mime_type)) ?
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWebMimeRegistry::SupportsType
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    SimpleWebMimeRegistryImpl::supportsJavaScriptMIMEType(
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& mime_type) {
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return net::IsSupportedJavascriptMimeType(ToASCIIOrEmpty(mime_type)) ?
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// When debugging layout tests failures in the test shell,
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// see TestShellWebMimeRegistryImpl.
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWebMimeRegistry::SupportsType SimpleWebMimeRegistryImpl::supportsMediaMIMEType(
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& mime_type,
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& codecs,
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& key_system) {
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  // Media features are only supported at the content/renderer/ layer.
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return IsNotSupported;
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgbool SimpleWebMimeRegistryImpl::supportsMediaSourceMIMEType(
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& mime_type,
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& codecs) {
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  // Media features are only supported at the content/renderer layer.
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return false;
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgbool SimpleWebMimeRegistryImpl::supportsEncryptedMediaMIMEType(
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const blink::WebString& key_system,
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const blink::WebString& mime_type,
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const blink::WebString& codecs) {
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  // Media features are only supported at the content/renderer layer.
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return false;
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWebMimeRegistry::SupportsType
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    SimpleWebMimeRegistryImpl::supportsNonImageMIMEType(
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& mime_type) {
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return net::IsSupportedNonImageMimeType(ToASCIIOrEmpty(mime_type)) ?
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      WebMimeRegistry::IsSupported : WebMimeRegistry::IsNotSupported;
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWebString SimpleWebMimeRegistryImpl::mimeTypeForExtension(
76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& file_extension) {
77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  std::string mime_type;
78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  net::GetMimeTypeFromExtension(
79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      base::FilePath::FromUTF16Unsafe(file_extension).value(), &mime_type);
80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return WebString::fromUTF8(mime_type);
81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWebString SimpleWebMimeRegistryImpl::wellKnownMimeTypeForExtension(
84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& file_extension) {
85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  std::string mime_type;
86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  net::GetWellKnownMimeTypeFromExtension(
87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      base::FilePath::FromUTF16Unsafe(file_extension).value(), &mime_type);
88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return WebString::fromUTF8(mime_type);
89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWebString SimpleWebMimeRegistryImpl::mimeTypeFromFile(
92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const WebString& file_path) {
93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  std::string mime_type;
94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  net::GetMimeTypeFromFile(base::FilePath::FromUTF16Unsafe(file_path),
95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org                           &mime_type);
96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return WebString::fromUTF8(mime_type);
97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}  // namespace content
100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org