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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 } | 276 } |
277 | 277 |
278 // Test without stripping the codec type. | 278 // Test without stripping the codec type. |
279 std::vector<std::string> codecs_out; | 279 std::vector<std::string> codecs_out; |
280 ParseCodecString("avc1.42E01E, mp4a.40.2", &codecs_out, false); | 280 ParseCodecString("avc1.42E01E, mp4a.40.2", &codecs_out, false); |
281 ASSERT_EQ(2u, codecs_out.size()); | 281 ASSERT_EQ(2u, codecs_out.size()); |
282 EXPECT_EQ("avc1.42E01E", codecs_out[0]); | 282 EXPECT_EQ("avc1.42E01E", codecs_out[0]); |
283 EXPECT_EQ("mp4a.40.2", codecs_out[1]); | 283 EXPECT_EQ("mp4a.40.2", codecs_out[1]); |
284 } | 284 } |
285 | 285 |
286 TEST(MimeUtilTest, TestIsMimeType) { | 286 TEST(MimeUtilTest, TestParseMimeTypeWithoutParameter) { |
287 std::string nonAscii("application/nonutf8"); | 287 std::string nonAscii("application/nonutf8"); |
288 EXPECT_TRUE(IsMimeType(nonAscii)); | 288 EXPECT_TRUE(ParseMimeTypeWithoutParameter(nonAscii, NULL, NULL)); |
289 #if defined(OS_WIN) | 289 #if defined(OS_WIN) |
290 nonAscii.append(base::WideToUTF8(std::wstring(L"\u2603"))); | 290 nonAscii.append(base::WideToUTF8(std::wstring(L"\u2603"))); |
291 #else | 291 #else |
292 nonAscii.append("\u2603"); // unicode snowman | 292 nonAscii.append("\u2603"); // unicode snowman |
293 #endif | 293 #endif |
294 EXPECT_FALSE(IsMimeType(nonAscii)); | 294 EXPECT_FALSE(ParseMimeTypeWithoutParameter(nonAscii, NULL, NULL)); |
295 | 295 |
296 EXPECT_TRUE(IsMimeType("application/mime")); | 296 std::string top_level_type; |
297 EXPECT_TRUE(IsMimeType("application/json")); | 297 std::string subtype; |
298 EXPECT_TRUE(IsMimeType("application/x-suggestions+json")); | 298 EXPECT_TRUE(ParseMimeTypeWithoutParameter( |
299 EXPECT_TRUE(IsMimeType("application/+json")); | 299 "application/mime", &top_level_type, &subtype)); |
300 EXPECT_TRUE(IsMimeType("audio/mime")); | 300 EXPECT_EQ("application", top_level_type); |
301 EXPECT_TRUE(IsMimeType("example/mime")); | 301 EXPECT_EQ("mime", subtype); |
302 EXPECT_TRUE(IsMimeType("image/mime")); | |
303 EXPECT_TRUE(IsMimeType("message/mime")); | |
304 EXPECT_TRUE(IsMimeType("model/mime")); | |
305 EXPECT_TRUE(IsMimeType("multipart/mime")); | |
306 EXPECT_TRUE(IsMimeType("text/mime")); | |
307 EXPECT_TRUE(IsMimeType("TEXT/mime")); | |
308 EXPECT_TRUE(IsMimeType("Text/mime")); | |
309 EXPECT_TRUE(IsMimeType("TeXt/mime")); | |
310 EXPECT_TRUE(IsMimeType("video/mime")); | |
311 EXPECT_TRUE(IsMimeType("video/mime;parameter")); | |
312 EXPECT_TRUE(IsMimeType("*/*")); | |
313 EXPECT_TRUE(IsMimeType("*")); | |
314 | 302 |
315 EXPECT_TRUE(IsMimeType("x-video/mime")); | 303 // Various allowed subtype forms. |
316 EXPECT_TRUE(IsMimeType("X-Video/mime")); | 304 EXPECT_TRUE(ParseMimeTypeWithoutParameter("application/json", NULL, NULL)); |
317 EXPECT_FALSE(IsMimeType("x-video/")); | 305 EXPECT_TRUE(ParseMimeTypeWithoutParameter( |
318 EXPECT_FALSE(IsMimeType("x-/mime")); | 306 "application/x-suggestions+json", NULL, NULL)); |
319 EXPECT_FALSE(IsMimeType("mime/looking")); | 307 EXPECT_TRUE(ParseMimeTypeWithoutParameter("application/+json", NULL, NULL)); |
320 EXPECT_FALSE(IsMimeType("text/")); | 308 |
| 309 // Upper case letters are allowed. |
| 310 EXPECT_TRUE(ParseMimeTypeWithoutParameter("text/mime", NULL, NULL)); |
| 311 EXPECT_TRUE(ParseMimeTypeWithoutParameter("TEXT/mime", NULL, NULL)); |
| 312 EXPECT_TRUE(ParseMimeTypeWithoutParameter("Text/mime", NULL, NULL)); |
| 313 EXPECT_TRUE(ParseMimeTypeWithoutParameter("TeXt/mime", NULL, NULL)); |
| 314 |
| 315 // Experimental types are also considered to be valid. |
| 316 EXPECT_TRUE(ParseMimeTypeWithoutParameter("x-video/mime", NULL, NULL)); |
| 317 EXPECT_TRUE(ParseMimeTypeWithoutParameter("X-Video/mime", NULL, NULL)); |
| 318 |
| 319 EXPECT_FALSE(ParseMimeTypeWithoutParameter("text", NULL, NULL)); |
| 320 EXPECT_FALSE(ParseMimeTypeWithoutParameter("text/", NULL, NULL)); |
| 321 EXPECT_FALSE(ParseMimeTypeWithoutParameter("text/ ", NULL, NULL)); |
| 322 EXPECT_FALSE(ParseMimeTypeWithoutParameter("te(xt/ ", NULL, NULL)); |
| 323 EXPECT_FALSE(ParseMimeTypeWithoutParameter("text/()plain", NULL, NULL)); |
| 324 |
| 325 EXPECT_FALSE(ParseMimeTypeWithoutParameter("x-video", NULL, NULL)); |
| 326 EXPECT_FALSE(ParseMimeTypeWithoutParameter("x-video/", NULL, NULL)); |
| 327 |
| 328 EXPECT_FALSE(ParseMimeTypeWithoutParameter("application/a/b/c", NULL, NULL)); |
| 329 |
| 330 //EXPECT_TRUE(ParseMimeTypeWithoutParameter("video/mime;parameter")); |
| 331 } |
| 332 |
| 333 TEST(MimeUtilTest, TestIsValidTopLevelMimeType) { |
| 334 EXPECT_TRUE(IsValidTopLevelMimeType("application")); |
| 335 EXPECT_TRUE(IsValidTopLevelMimeType("audio")); |
| 336 EXPECT_TRUE(IsValidTopLevelMimeType("example")); |
| 337 EXPECT_TRUE(IsValidTopLevelMimeType("image")); |
| 338 EXPECT_TRUE(IsValidTopLevelMimeType("message")); |
| 339 EXPECT_TRUE(IsValidTopLevelMimeType("model")); |
| 340 EXPECT_TRUE(IsValidTopLevelMimeType("multipart")); |
| 341 EXPECT_TRUE(IsValidTopLevelMimeType("text")); |
| 342 EXPECT_TRUE(IsValidTopLevelMimeType("video")); |
| 343 |
| 344 EXPECT_TRUE(IsValidTopLevelMimeType("TEXT")); |
| 345 EXPECT_TRUE(IsValidTopLevelMimeType("Text")); |
| 346 EXPECT_TRUE(IsValidTopLevelMimeType("TeXt")); |
| 347 |
| 348 EXPECT_FALSE(IsValidTopLevelMimeType("mime")); |
| 349 EXPECT_FALSE(IsValidTopLevelMimeType("")); |
| 350 EXPECT_FALSE(IsValidTopLevelMimeType("/")); |
| 351 EXPECT_FALSE(IsValidTopLevelMimeType(" ")); |
| 352 |
| 353 EXPECT_TRUE(IsValidTopLevelMimeType("x-video")); |
| 354 EXPECT_TRUE(IsValidTopLevelMimeType("X-video")); |
| 355 |
| 356 EXPECT_FALSE(IsValidTopLevelMimeType("x-")); |
321 } | 357 } |
322 | 358 |
323 TEST(MimeUtilTest, TestToIANAMediaType) { | 359 TEST(MimeUtilTest, TestToIANAMediaType) { |
324 EXPECT_EQ("", GetIANAMediaType("texting/driving")); | 360 EXPECT_EQ("", GetIANAMediaType("texting/driving")); |
325 EXPECT_EQ("", GetIANAMediaType("ham/sandwich")); | 361 EXPECT_EQ("", GetIANAMediaType("ham/sandwich")); |
326 EXPECT_EQ("", GetIANAMediaType(std::string())); | 362 EXPECT_EQ("", GetIANAMediaType(std::string())); |
327 EXPECT_EQ("", GetIANAMediaType("/application/hamsandwich")); | 363 EXPECT_EQ("", GetIANAMediaType("/application/hamsandwich")); |
328 | 364 |
329 EXPECT_EQ("application", GetIANAMediaType("application/poodle-wrestler")); | 365 EXPECT_EQ("application", GetIANAMediaType("application/poodle-wrestler")); |
330 EXPECT_EQ("audio", GetIANAMediaType("audio/mpeg")); | 366 EXPECT_EQ("audio", GetIANAMediaType("audio/mpeg")); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 std::string post_data; | 446 std::string post_data; |
411 AddMultipartValueForUpload("value name", "value", "boundary", | 447 AddMultipartValueForUpload("value name", "value", "boundary", |
412 "content type", &post_data); | 448 "content type", &post_data); |
413 AddMultipartValueForUpload("value name", "value", "boundary", | 449 AddMultipartValueForUpload("value name", "value", "boundary", |
414 "", &post_data); | 450 "", &post_data); |
415 AddMultipartFinalDelimiterForUpload("boundary", &post_data); | 451 AddMultipartFinalDelimiterForUpload("boundary", &post_data); |
416 EXPECT_STREQ(ref_output, post_data.c_str()); | 452 EXPECT_STREQ(ref_output, post_data.c_str()); |
417 } | 453 } |
418 | 454 |
419 } // namespace net | 455 } // namespace net |
OLD | NEW |