Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Side by Side Diff: net/base/mime_util.h

Issue 1054943004: Refactoring media mime type and supported codec checks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make *CodecSupported* functions public (to support external overrides) Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | net/base/mime_util.cc » ('j') | net/base/mime_util.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_BASE_MIME_UTIL_H__ 5 #ifndef NET_BASE_MIME_UTIL_H__
6 #define NET_BASE_MIME_UTIL_H__ 6 #define NET_BASE_MIME_UTIL_H__
7 7
8 // This file defines MIME utility functions. All of them assume the MIME type 8 // This file defines MIME utility functions. All of them assume the MIME type
9 // to be of the format specified by rfc2045. According to it, MIME types are 9 // to be of the format specified by rfc2045. According to it, MIME types are
10 // case strongly insensitive except parameter values, which may or may not be 10 // case strongly insensitive except parameter values, which may or may not be
11 // case sensitive. 11 // case sensitive.
12 // 12 //
13 // These utilities perform a *case-sensitive* matching for parameter values, 13 // These utilities perform a *case-sensitive* matching for parameter values,
14 // which may produce some false negatives. Except that, matching is 14 // which may produce some false negatives. Except that, matching is
15 // case-insensitive. 15 // case-insensitive.
16 // 16 //
17 // All constants in mime_util.cc must be written in lower case, except parameter 17 // All constants in mime_util.cc must be written in lower case, except parameter
18 // values, which can be any case. 18 // values, which can be any case.
19 19
20 #include <string> 20 #include <string>
21 #include <vector> 21 #include <vector>
22 22
23 #include "base/callback.h"
23 #include "base/files/file_path.h" 24 #include "base/files/file_path.h"
24 #include "net/base/net_export.h" 25 #include "net/base/net_export.h"
25 26
26 namespace net { 27 namespace net {
27 28
28 // Get the mime type (if any) that is associated with the given file extension. 29 // Get the mime type (if any) that is associated with the given file extension.
29 // Returns true if a corresponding mime type exists. 30 // Returns true if a corresponding mime type exists.
30 NET_EXPORT bool GetMimeTypeFromExtension(const base::FilePath::StringType& ext, 31 NET_EXPORT bool GetMimeTypeFromExtension(const base::FilePath::StringType& ext,
31 std::string* mime_type); 32 std::string* mime_type);
32 33
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 95
95 // Parses a codec string, populating |codecs_out| with the prefix of each codec 96 // Parses a codec string, populating |codecs_out| with the prefix of each codec
96 // in the string |codecs_in|. For example, passed "aaa.b.c,dd.eee", if 97 // in the string |codecs_in|. For example, passed "aaa.b.c,dd.eee", if
97 // |strip| == true |codecs_out| will contain {"aaa", "dd"}, if |strip| == false 98 // |strip| == true |codecs_out| will contain {"aaa", "dd"}, if |strip| == false
98 // |codecs_out| will contain {"aaa.b.c", "dd.eee"}. 99 // |codecs_out| will contain {"aaa.b.c", "dd.eee"}.
99 // See http://www.ietf.org/rfc/rfc4281.txt. 100 // See http://www.ietf.org/rfc/rfc4281.txt.
100 NET_EXPORT void ParseCodecString(const std::string& codecs, 101 NET_EXPORT void ParseCodecString(const std::string& codecs,
101 std::vector<std::string>* codecs_out, 102 std::vector<std::string>* codecs_out,
102 bool strip); 103 bool strip);
103 104
105 // Returns true if the given |codec_id|, identified by a codec id string
106 // described in RFC 6381, is supported. Returns false if the codec id is not
107 // recognized or if that codec is not supported.
108 NET_EXPORT bool IsCodecSupported(const std::string& codec_id);
109
110 // The default implementation of IsCodecSupported, it can be overridden by
111 // providing a custom callback via SetIsCodecSupportedCB.
112 NET_EXPORT bool DefaultIsCodecSupported(const std::string& codec_id);
113
114 // Provides a custom, platform-specific implementation of IsCodecSupported.
115 typedef base::Callback<bool(const std::string&)> IsCodecSupportedCB;
116 NET_EXPORT void SetIsCodecSupportedCB(IsCodecSupportedCB is_codec_supported_cb);
117
104 // Check to see if a particular MIME type is in our list which only supports a 118 // Check to see if a particular MIME type is in our list which only supports a
105 // certain subset of codecs. 119 // certain subset of codecs.
106 NET_EXPORT bool IsStrictMediaMimeType(const std::string& mime_type); 120 NET_EXPORT bool IsStrictMediaMimeType(const std::string& mime_type);
107 121
108 // Indicates that the MIME type and (possible codec string) are supported by the 122 // Indicates that the MIME type and (possible codec string) are supported by the
109 // underlying platform. 123 // underlying platform.
110 enum SupportsType { 124 enum SupportsType {
111 // The underlying platform is known not to support the given MIME type and 125 // The underlying platform is known not to support the given MIME type and
112 // codec combination. 126 // codec combination.
113 IsNotSupported, 127 IsNotSupported,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 std::string* post_data); 187 std::string* post_data);
174 188
175 // Adds the final delimiter to a multi-part upload request. 189 // Adds the final delimiter to a multi-part upload request.
176 NET_EXPORT void AddMultipartFinalDelimiterForUpload( 190 NET_EXPORT void AddMultipartFinalDelimiterForUpload(
177 const std::string& mime_boundary, 191 const std::string& mime_boundary,
178 std::string* post_data); 192 std::string* post_data);
179 193
180 } // namespace net 194 } // namespace net
181 195
182 #endif // NET_BASE_MIME_UTIL_H__ 196 #endif // NET_BASE_MIME_UTIL_H__
OLDNEW
« no previous file with comments | « no previous file | net/base/mime_util.cc » ('j') | net/base/mime_util.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698