// Copyright 2015 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "third_party/blink/public/common/mime_util/mime_util.h" #include <stddef.h> #include <unordered_set> #include "base/containers/contains.h" #include "base/containers/fixed_flat_set.h" #include "base/strings/string_util.h" #include "build/build_config.h" #include "media/media_buildflags.h" #include "net/base/mime_util.h" #include "third_party/blink/public/common/buildflags.h" #if !BUILDFLAG(IS_IOS) // iOS doesn't use and must not depend on //media #include "media/base/mime_util.h" #endif namespace blink { namespace { // From WebKit's WebCore/platform/MIMETypeRegistry.cpp: constexpr auto kSupportedImageTypes = …; // Support every script type mentioned in the spec, as it notes that "User // agents must recognize all JavaScript MIME types." See // https://html.spec.whatwg.org/#javascript-mime-type. constexpr auto kSupportedJavascriptTypes = …; // These types are excluded from the logic that allows all text/ types because // while they are technically text, it's very unlikely that a user expects to // see them rendered in text form. constexpr auto kUnsupportedTextTypes = …; // Note: // - does not include javascript types list (see supported_javascript_types) // - does not include types starting with "text/" (see // IsSupportedNonImageMimeType()) constexpr auto kSupportedNonImageTypes = …; } // namespace bool IsSupportedImageMimeType(std::string_view mime_type) { … } bool IsSupportedNonImageMimeType(std::string_view mime_type) { … } bool IsUnsupportedTextMimeType(std::string_view mime_type) { … } bool IsSupportedJavascriptMimeType(std::string_view mime_type) { … } // TODO(crbug.com/362282752): Allow non-application `*/*+json` MIME types. // https://mimesniff.spec.whatwg.org/#json-mime-type bool IsJSONMimeType(std::string_view mime_type) { … } // TODO(crbug.com/362282752): Allow other `*/*+xml` MIME types. // https://mimesniff.spec.whatwg.org/#xml-mime-type bool IsXMLMimeType(std::string_view mime_type) { … } // From step 3 of // https://mimesniff.spec.whatwg.org/#minimize-a-supported-mime-type. bool IsSVGMimeType(std::string_view mime_type) { … } bool IsSupportedMimeType(std::string_view mime_type) { … } } // namespace blink