OLD | NEW |
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 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/strings/string_split.h" | 6 #include "base/strings/string_split.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "net/base/mime_util.h" | 8 #include "net/base/mime_util.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 EXPECT_FALSE(IsSupportedNonImageMimeType("text/vcard")); | 77 EXPECT_FALSE(IsSupportedNonImageMimeType("text/vcard")); |
78 EXPECT_FALSE(IsSupportedNonImageMimeType("application/virus")); | 78 EXPECT_FALSE(IsSupportedNonImageMimeType("application/virus")); |
79 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-x509-user-cert")); | 79 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-x509-user-cert")); |
80 EXPECT_TRUE(IsSupportedNonImageMimeType("application/json")); | 80 EXPECT_TRUE(IsSupportedNonImageMimeType("application/json")); |
81 EXPECT_TRUE(IsSupportedNonImageMimeType("application/+json")); | 81 EXPECT_TRUE(IsSupportedNonImageMimeType("application/+json")); |
82 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-suggestions+json")); | 82 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-suggestions+json")); |
83 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-s+json;x=2")); | 83 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-s+json;x=2")); |
84 #if defined(OS_ANDROID) | 84 #if defined(OS_ANDROID) |
85 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-x509-ca-cert")); | 85 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-x509-ca-cert")); |
86 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-pkcs12")); | 86 EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-pkcs12")); |
87 EXPECT_TRUE(IsSupportedMediaMimeType("application/vnd.apple.mpegurl")); | |
88 EXPECT_TRUE(IsSupportedMediaMimeType("application/x-mpegurl")); | |
89 #endif | 87 #endif |
90 | 88 |
91 EXPECT_TRUE(IsSupportedMimeType("image/jpeg")); | 89 EXPECT_TRUE(IsSupportedMimeType("image/jpeg")); |
92 EXPECT_FALSE(IsSupportedMimeType("image/lolcat")); | 90 EXPECT_FALSE(IsSupportedMimeType("image/lolcat")); |
93 EXPECT_TRUE(IsSupportedMimeType("text/html")); | 91 EXPECT_TRUE(IsSupportedMimeType("text/html")); |
94 EXPECT_TRUE(IsSupportedMimeType("text/banana")); | 92 EXPECT_TRUE(IsSupportedMimeType("text/banana")); |
95 EXPECT_FALSE(IsSupportedMimeType("text/vcard")); | 93 EXPECT_FALSE(IsSupportedMimeType("text/vcard")); |
96 EXPECT_FALSE(IsSupportedMimeType("application/virus")); | 94 EXPECT_FALSE(IsSupportedMimeType("application/virus")); |
97 EXPECT_FALSE(IsSupportedMimeType("application/x-json")); | 95 EXPECT_FALSE(IsSupportedMimeType("application/x-json")); |
98 EXPECT_FALSE(IsSupportedNonImageMimeType("application/vnd.doc;x=y+json")); | 96 EXPECT_FALSE(IsSupportedNonImageMimeType("application/vnd.doc;x=y+json")); |
99 } | 97 } |
100 | 98 |
101 TEST(MimeUtilTest, StrictMediaMimeType) { | |
102 EXPECT_TRUE(IsStrictMediaMimeType("video/webm")); | |
103 EXPECT_TRUE(IsStrictMediaMimeType("audio/webm")); | |
104 | |
105 EXPECT_TRUE(IsStrictMediaMimeType("audio/wav")); | |
106 EXPECT_TRUE(IsStrictMediaMimeType("audio/x-wav")); | |
107 | |
108 EXPECT_TRUE(IsStrictMediaMimeType("video/ogg")); | |
109 EXPECT_TRUE(IsStrictMediaMimeType("audio/ogg")); | |
110 EXPECT_TRUE(IsStrictMediaMimeType("application/ogg")); | |
111 | |
112 EXPECT_TRUE(IsStrictMediaMimeType("audio/mpeg")); | |
113 EXPECT_TRUE(IsStrictMediaMimeType("audio/mp3")); | |
114 EXPECT_TRUE(IsStrictMediaMimeType("audio/x-mp3")); | |
115 | |
116 EXPECT_TRUE(IsStrictMediaMimeType("video/mp4")); | |
117 EXPECT_TRUE(IsStrictMediaMimeType("video/x-m4v")); | |
118 EXPECT_TRUE(IsStrictMediaMimeType("audio/mp4")); | |
119 EXPECT_TRUE(IsStrictMediaMimeType("audio/x-m4a")); | |
120 | |
121 EXPECT_TRUE(IsStrictMediaMimeType("application/x-mpegurl")); | |
122 EXPECT_TRUE(IsStrictMediaMimeType("application/vnd.apple.mpegurl")); | |
123 | |
124 EXPECT_FALSE(IsStrictMediaMimeType("video/unknown")); | |
125 EXPECT_FALSE(IsStrictMediaMimeType("audio/unknown")); | |
126 EXPECT_FALSE(IsStrictMediaMimeType("application/unknown")); | |
127 EXPECT_FALSE(IsStrictMediaMimeType("unknown/unknown")); | |
128 } | |
129 | |
130 TEST(MimeUtilTest, MatchesMimeType) { | 99 TEST(MimeUtilTest, MatchesMimeType) { |
131 EXPECT_TRUE(MatchesMimeType("*", "video/x-mpeg")); | 100 EXPECT_TRUE(MatchesMimeType("*", "video/x-mpeg")); |
132 EXPECT_TRUE(MatchesMimeType("video/*", "video/x-mpeg")); | 101 EXPECT_TRUE(MatchesMimeType("video/*", "video/x-mpeg")); |
133 EXPECT_TRUE(MatchesMimeType("video/*", "video/*")); | 102 EXPECT_TRUE(MatchesMimeType("video/*", "video/*")); |
134 EXPECT_TRUE(MatchesMimeType("video/x-mpeg", "video/x-mpeg")); | 103 EXPECT_TRUE(MatchesMimeType("video/x-mpeg", "video/x-mpeg")); |
135 EXPECT_TRUE(MatchesMimeType("application/*+xml", | 104 EXPECT_TRUE(MatchesMimeType("application/*+xml", |
136 "application/html+xml")); | 105 "application/html+xml")); |
137 EXPECT_TRUE(MatchesMimeType("application/*+xml", "application/+xml")); | 106 EXPECT_TRUE(MatchesMimeType("application/*+xml", "application/+xml")); |
138 EXPECT_TRUE(MatchesMimeType("application/*+json", | 107 EXPECT_TRUE(MatchesMimeType("application/*+json", |
139 "application/x-myformat+json")); | 108 "application/x-myformat+json")); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 EXPECT_FALSE(MatchesMimeType("video/*", "*/*")); | 153 EXPECT_FALSE(MatchesMimeType("video/*", "*/*")); |
185 EXPECT_FALSE(MatchesMimeType("video/*;param=val", "video/*")); | 154 EXPECT_FALSE(MatchesMimeType("video/*;param=val", "video/*")); |
186 EXPECT_TRUE(MatchesMimeType("video/*;param=val", "video/*;param=val")); | 155 EXPECT_TRUE(MatchesMimeType("video/*;param=val", "video/*;param=val")); |
187 EXPECT_FALSE(MatchesMimeType("video/*;param=val", "video/*;param=val2")); | 156 EXPECT_FALSE(MatchesMimeType("video/*;param=val", "video/*;param=val2")); |
188 | 157 |
189 EXPECT_TRUE(MatchesMimeType("ab*cd", "abxxxcd")); | 158 EXPECT_TRUE(MatchesMimeType("ab*cd", "abxxxcd")); |
190 EXPECT_TRUE(MatchesMimeType("ab*cd", "abx/xcd")); | 159 EXPECT_TRUE(MatchesMimeType("ab*cd", "abx/xcd")); |
191 EXPECT_TRUE(MatchesMimeType("ab/*cd", "ab/xxxcd")); | 160 EXPECT_TRUE(MatchesMimeType("ab/*cd", "ab/xxxcd")); |
192 } | 161 } |
193 | 162 |
194 TEST(MimeUtilTest, CommonMediaMimeType) { | |
195 #if defined(OS_ANDROID) | |
196 bool HLSSupported; | |
197 if (base::android::BuildInfo::GetInstance()->sdk_int() < 14) | |
198 HLSSupported = false; | |
199 else | |
200 HLSSupported = true; | |
201 #endif | |
202 | |
203 EXPECT_TRUE(IsSupportedMediaMimeType("audio/webm")); | |
204 EXPECT_TRUE(IsSupportedMediaMimeType("video/webm")); | |
205 | |
206 EXPECT_TRUE(IsSupportedMediaMimeType("audio/wav")); | |
207 EXPECT_TRUE(IsSupportedMediaMimeType("audio/x-wav")); | |
208 | |
209 EXPECT_TRUE(IsSupportedMediaMimeType("audio/ogg")); | |
210 EXPECT_TRUE(IsSupportedMediaMimeType("application/ogg")); | |
211 #if defined(OS_ANDROID) | |
212 EXPECT_FALSE(IsSupportedMediaMimeType("video/ogg")); | |
213 EXPECT_EQ(HLSSupported, IsSupportedMediaMimeType("application/x-mpegurl")); | |
214 EXPECT_EQ(HLSSupported, | |
215 IsSupportedMediaMimeType("application/vnd.apple.mpegurl")); | |
216 #else | |
217 EXPECT_TRUE(IsSupportedMediaMimeType("video/ogg")); | |
218 EXPECT_FALSE(IsSupportedMediaMimeType("application/x-mpegurl")); | |
219 EXPECT_FALSE(IsSupportedMediaMimeType("application/vnd.apple.mpegurl")); | |
220 #endif // OS_ANDROID | |
221 | |
222 #if defined(USE_PROPRIETARY_CODECS) | |
223 EXPECT_TRUE(IsSupportedMediaMimeType("audio/mp4")); | |
224 EXPECT_TRUE(IsSupportedMediaMimeType("audio/x-m4a")); | |
225 EXPECT_TRUE(IsSupportedMediaMimeType("video/mp4")); | |
226 EXPECT_TRUE(IsSupportedMediaMimeType("video/x-m4v")); | |
227 | |
228 EXPECT_TRUE(IsSupportedMediaMimeType("audio/mp3")); | |
229 EXPECT_TRUE(IsSupportedMediaMimeType("audio/x-mp3")); | |
230 EXPECT_TRUE(IsSupportedMediaMimeType("audio/mpeg")); | |
231 #else | |
232 EXPECT_FALSE(IsSupportedMediaMimeType("audio/mp4")); | |
233 EXPECT_FALSE(IsSupportedMediaMimeType("audio/x-m4a")); | |
234 EXPECT_FALSE(IsSupportedMediaMimeType("video/mp4")); | |
235 EXPECT_FALSE(IsSupportedMediaMimeType("video/x-m4v")); | |
236 | |
237 EXPECT_FALSE(IsSupportedMediaMimeType("audio/mp3")); | |
238 EXPECT_FALSE(IsSupportedMediaMimeType("audio/x-mp3")); | |
239 EXPECT_FALSE(IsSupportedMediaMimeType("audio/mpeg")); | |
240 #endif // USE_PROPRIETARY_CODECS | |
241 EXPECT_FALSE(IsSupportedMediaMimeType("video/mp3")); | |
242 | |
243 EXPECT_FALSE(IsSupportedMediaMimeType("video/unknown")); | |
244 EXPECT_FALSE(IsSupportedMediaMimeType("audio/unknown")); | |
245 EXPECT_FALSE(IsSupportedMediaMimeType("unknown/unknown")); | |
246 } | |
247 | |
248 // Note: codecs should only be a list of 2 or fewer; hence the restriction of | |
249 // results' length to 2. | |
250 TEST(MimeUtilTest, ParseCodecString) { | |
251 const struct { | |
252 const char* original; | |
253 size_t expected_size; | |
254 const char* results[2]; | |
255 } tests[] = { | |
256 { "\"bogus\"", 1, { "bogus" } }, | |
257 { "0", 1, { "0" } }, | |
258 { "avc1.42E01E, mp4a.40.2", 2, { "avc1", "mp4a" } }, | |
259 { "\"mp4v.20.240, mp4a.40.2\"", 2, { "mp4v", "mp4a" } }, | |
260 { "mp4v.20.8, samr", 2, { "mp4v", "samr" } }, | |
261 { "\"theora, vorbis\"", 2, { "theora", "vorbis" } }, | |
262 { "", 0, { } }, | |
263 { "\"\"", 0, { } }, | |
264 { "\" \"", 0, { } }, | |
265 { ",", 2, { "", "" } }, | |
266 }; | |
267 | |
268 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { | |
269 std::vector<std::string> codecs_out; | |
270 ParseCodecString(tests[i].original, &codecs_out, true); | |
271 ASSERT_EQ(tests[i].expected_size, codecs_out.size()); | |
272 for (size_t j = 0; j < tests[i].expected_size; ++j) | |
273 EXPECT_EQ(tests[i].results[j], codecs_out[j]); | |
274 } | |
275 | |
276 // Test without stripping the codec type. | |
277 std::vector<std::string> codecs_out; | |
278 ParseCodecString("avc1.42E01E, mp4a.40.2", &codecs_out, false); | |
279 ASSERT_EQ(2u, codecs_out.size()); | |
280 EXPECT_EQ("avc1.42E01E", codecs_out[0]); | |
281 EXPECT_EQ("mp4a.40.2", codecs_out[1]); | |
282 } | |
283 | 163 |
284 TEST(MimeUtilTest, TestParseMimeTypeWithoutParameter) { | 164 TEST(MimeUtilTest, TestParseMimeTypeWithoutParameter) { |
285 std::string nonAscii("application/nonutf8"); | 165 std::string nonAscii("application/nonutf8"); |
286 EXPECT_TRUE(ParseMimeTypeWithoutParameter(nonAscii, NULL, NULL)); | 166 EXPECT_TRUE(ParseMimeTypeWithoutParameter(nonAscii, NULL, NULL)); |
287 #if defined(OS_WIN) | 167 #if defined(OS_WIN) |
288 nonAscii.append(base::WideToUTF8(std::wstring(L"\u2603"))); | 168 nonAscii.append(base::WideToUTF8(std::wstring(L"\u2603"))); |
289 #else | 169 #else |
290 nonAscii.append("\u2603"); // unicode snowman | 170 nonAscii.append("\u2603"); // unicode snowman |
291 #endif | 171 #endif |
292 EXPECT_FALSE(ParseMimeTypeWithoutParameter(nonAscii, NULL, NULL)); | 172 EXPECT_FALSE(ParseMimeTypeWithoutParameter(nonAscii, NULL, NULL)); |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 std::string post_data; | 324 std::string post_data; |
445 AddMultipartValueForUpload("value name", "value", "boundary", | 325 AddMultipartValueForUpload("value name", "value", "boundary", |
446 "content type", &post_data); | 326 "content type", &post_data); |
447 AddMultipartValueForUpload("value name", "value", "boundary", | 327 AddMultipartValueForUpload("value name", "value", "boundary", |
448 "", &post_data); | 328 "", &post_data); |
449 AddMultipartFinalDelimiterForUpload("boundary", &post_data); | 329 AddMultipartFinalDelimiterForUpload("boundary", &post_data); |
450 EXPECT_STREQ(ref_output, post_data.c_str()); | 330 EXPECT_STREQ(ref_output, post_data.c_str()); |
451 } | 331 } |
452 | 332 |
453 } // namespace net | 333 } // namespace net |
OLD | NEW |