| 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 |
| 11 #if defined(OS_ANDROID) | 11 #if defined(OS_ANDROID) |
| 12 #include "base/android/build_info.h" | 12 #include "base/android/build_info.h" |
| 13 #endif | 13 #endif |
| 14 | 14 |
| 15 namespace net { | 15 namespace net { |
| 16 | 16 |
| 17 TEST(MimeUtilTest, ExtensionTest) { | 17 TEST(MimeUtilTest, ExtensionTest) { |
| 18 const struct { | 18 const struct { |
| 19 const base::FilePath::CharType* extension; | 19 const base::FilePath::CharType* extension; |
| 20 const char* mime_type; | 20 const char* const mime_type; |
| 21 bool valid; | 21 bool valid; |
| 22 } tests[] = { | 22 } tests[] = { |
| 23 { FILE_PATH_LITERAL("png"), "image/png", true }, | 23 { FILE_PATH_LITERAL("png"), "image/png", true }, |
| 24 { FILE_PATH_LITERAL("css"), "text/css", true }, | 24 { FILE_PATH_LITERAL("css"), "text/css", true }, |
| 25 { FILE_PATH_LITERAL("pjp"), "image/jpeg", true }, | 25 { FILE_PATH_LITERAL("pjp"), "image/jpeg", true }, |
| 26 { FILE_PATH_LITERAL("pjpeg"), "image/jpeg", true }, | 26 { FILE_PATH_LITERAL("pjpeg"), "image/jpeg", true }, |
| 27 #if defined(OS_ANDROID) | 27 #if defined(OS_ANDROID) |
| 28 { FILE_PATH_LITERAL("m3u8"), "application/x-mpegurl", true }, | 28 { FILE_PATH_LITERAL("m3u8"), "application/x-mpegurl", true }, |
| 29 #endif | 29 #endif |
| 30 { FILE_PATH_LITERAL("not an extension / for sure"), "", false }, | 30 { FILE_PATH_LITERAL("not an extension / for sure"), "", false }, |
| 31 }; | 31 }; |
| 32 | 32 |
| 33 std::string mime_type; | 33 std::string mime_type; |
| 34 bool rv; | 34 bool rv; |
| 35 | 35 |
| 36 for (size_t i = 0; i < arraysize(tests); ++i) { | 36 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 37 rv = GetMimeTypeFromExtension(tests[i].extension, &mime_type); | 37 rv = GetMimeTypeFromExtension(tests[i].extension, &mime_type); |
| 38 EXPECT_EQ(tests[i].valid, rv); | 38 EXPECT_EQ(tests[i].valid, rv); |
| 39 if (rv) | 39 if (rv) |
| 40 EXPECT_EQ(tests[i].mime_type, mime_type); | 40 EXPECT_EQ(tests[i].mime_type, mime_type); |
| 41 } | 41 } |
| 42 } | 42 } |
| 43 | 43 |
| 44 TEST(MimeUtilTest, FileTest) { | 44 TEST(MimeUtilTest, FileTest) { |
| 45 const struct { | 45 const struct { |
| 46 const base::FilePath::CharType* file_path; | 46 const base::FilePath::CharType* file_path; |
| 47 const char* mime_type; | 47 const char* const mime_type; |
| 48 bool valid; | 48 bool valid; |
| 49 } tests[] = { | 49 } tests[] = { |
| 50 { FILE_PATH_LITERAL("c:\\foo\\bar.css"), "text/css", true }, | 50 { FILE_PATH_LITERAL("c:\\foo\\bar.css"), "text/css", true }, |
| 51 { FILE_PATH_LITERAL("c:\\blah"), "", false }, | 51 { FILE_PATH_LITERAL("c:\\blah"), "", false }, |
| 52 { FILE_PATH_LITERAL("/usr/local/bin/mplayer"), "", false }, | 52 { FILE_PATH_LITERAL("/usr/local/bin/mplayer"), "", false }, |
| 53 { FILE_PATH_LITERAL("/home/foo/bar.css"), "text/css", true }, | 53 { FILE_PATH_LITERAL("/home/foo/bar.css"), "text/css", true }, |
| 54 { FILE_PATH_LITERAL("/blah."), "", false }, | 54 { FILE_PATH_LITERAL("/blah."), "", false }, |
| 55 { FILE_PATH_LITERAL("c:\\blah."), "", false }, | 55 { FILE_PATH_LITERAL("c:\\blah."), "", false }, |
| 56 }; | 56 }; |
| 57 | 57 |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 | 251 |
| 252 EXPECT_FALSE(IsSupportedMediaMimeType("video/unknown")); | 252 EXPECT_FALSE(IsSupportedMediaMimeType("video/unknown")); |
| 253 EXPECT_FALSE(IsSupportedMediaMimeType("audio/unknown")); | 253 EXPECT_FALSE(IsSupportedMediaMimeType("audio/unknown")); |
| 254 EXPECT_FALSE(IsSupportedMediaMimeType("unknown/unknown")); | 254 EXPECT_FALSE(IsSupportedMediaMimeType("unknown/unknown")); |
| 255 } | 255 } |
| 256 | 256 |
| 257 // Note: codecs should only be a list of 2 or fewer; hence the restriction of | 257 // Note: codecs should only be a list of 2 or fewer; hence the restriction of |
| 258 // results' length to 2. | 258 // results' length to 2. |
| 259 TEST(MimeUtilTest, ParseCodecString) { | 259 TEST(MimeUtilTest, ParseCodecString) { |
| 260 const struct { | 260 const struct { |
| 261 const char* original; | 261 const char* const original; |
| 262 size_t expected_size; | 262 size_t expected_size; |
| 263 const char* results[2]; | 263 const char* const results[2]; |
| 264 } tests[] = { | 264 } tests[] = { |
| 265 { "\"bogus\"", 1, { "bogus" } }, | 265 { "\"bogus\"", 1, { "bogus" } }, |
| 266 { "0", 1, { "0" } }, | 266 { "0", 1, { "0" } }, |
| 267 { "avc1.42E01E, mp4a.40.2", 2, { "avc1", "mp4a" } }, | 267 { "avc1.42E01E, mp4a.40.2", 2, { "avc1", "mp4a" } }, |
| 268 { "\"mp4v.20.240, mp4a.40.2\"", 2, { "mp4v", "mp4a" } }, | 268 { "\"mp4v.20.240, mp4a.40.2\"", 2, { "mp4v", "mp4a" } }, |
| 269 { "mp4v.20.8, samr", 2, { "mp4v", "samr" } }, | 269 { "mp4v.20.8, samr", 2, { "mp4v", "samr" } }, |
| 270 { "\"theora, vorbis\"", 2, { "theora", "vorbis" } }, | 270 { "\"theora, vorbis\"", 2, { "theora", "vorbis" } }, |
| 271 { "", 0, { } }, | 271 { "", 0, { } }, |
| 272 { "\"\"", 0, { } }, | 272 { "\"\"", 0, { } }, |
| 273 { "\" \"", 0, { } }, | 273 { "\" \"", 0, { } }, |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 EXPECT_FALSE(IsValidTopLevelMimeType(" ")); | 358 EXPECT_FALSE(IsValidTopLevelMimeType(" ")); |
| 359 | 359 |
| 360 EXPECT_TRUE(IsValidTopLevelMimeType("x-video")); | 360 EXPECT_TRUE(IsValidTopLevelMimeType("x-video")); |
| 361 EXPECT_TRUE(IsValidTopLevelMimeType("X-video")); | 361 EXPECT_TRUE(IsValidTopLevelMimeType("X-video")); |
| 362 | 362 |
| 363 EXPECT_FALSE(IsValidTopLevelMimeType("x-")); | 363 EXPECT_FALSE(IsValidTopLevelMimeType("x-")); |
| 364 } | 364 } |
| 365 | 365 |
| 366 TEST(MimeUtilTest, TestGetExtensionsForMimeType) { | 366 TEST(MimeUtilTest, TestGetExtensionsForMimeType) { |
| 367 const struct { | 367 const struct { |
| 368 const char* mime_type; | 368 const char* const mime_type; |
| 369 size_t min_expected_size; | 369 size_t min_expected_size; |
| 370 const char* contained_result; | 370 const char* const contained_result; |
| 371 } tests[] = { | 371 } tests[] = { |
| 372 { "text/plain", 2, "txt" }, | 372 { "text/plain", 2, "txt" }, |
| 373 { "*", 0, NULL }, | 373 { "*", 0, NULL }, |
| 374 { "message/*", 1, "eml" }, | 374 { "message/*", 1, "eml" }, |
| 375 { "MeSsAge/*", 1, "eml" }, | 375 { "MeSsAge/*", 1, "eml" }, |
| 376 { "image/bmp", 1, "bmp" }, | 376 { "image/bmp", 1, "bmp" }, |
| 377 { "video/*", 6, "mp4" }, | 377 { "video/*", 6, "mp4" }, |
| 378 #if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_IOS) | 378 #if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_IOS) |
| 379 { "video/*", 6, "mpg" }, | 379 { "video/*", 6, "mpg" }, |
| 380 #else | 380 #else |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 420 EXPECT_EQ(CERTIFICATE_MIME_TYPE_UNKNOWN, | 420 EXPECT_EQ(CERTIFICATE_MIME_TYPE_UNKNOWN, |
| 421 GetCertificateMimeTypeForMimeType("application/x-x509-ca-cert")); | 421 GetCertificateMimeTypeForMimeType("application/x-x509-ca-cert")); |
| 422 EXPECT_EQ(CERTIFICATE_MIME_TYPE_UNKNOWN, | 422 EXPECT_EQ(CERTIFICATE_MIME_TYPE_UNKNOWN, |
| 423 GetCertificateMimeTypeForMimeType("application/x-pkcs12")); | 423 GetCertificateMimeTypeForMimeType("application/x-pkcs12")); |
| 424 #endif | 424 #endif |
| 425 EXPECT_EQ(CERTIFICATE_MIME_TYPE_UNKNOWN, | 425 EXPECT_EQ(CERTIFICATE_MIME_TYPE_UNKNOWN, |
| 426 GetCertificateMimeTypeForMimeType("text/plain")); | 426 GetCertificateMimeTypeForMimeType("text/plain")); |
| 427 } | 427 } |
| 428 | 428 |
| 429 TEST(MimeUtilTest, TestAddMultipartValueForUpload) { | 429 TEST(MimeUtilTest, TestAddMultipartValueForUpload) { |
| 430 const char* ref_output = "--boundary\r\nContent-Disposition: form-data;" | 430 const char ref_output[] = |
| 431 " name=\"value name\"\r\nContent-Type: content type" | 431 "--boundary\r\nContent-Disposition: form-data;" |
| 432 "\r\n\r\nvalue\r\n" | 432 " name=\"value name\"\r\nContent-Type: content type" |
| 433 "--boundary\r\nContent-Disposition: form-data;" | 433 "\r\n\r\nvalue\r\n" |
| 434 " name=\"value name\"\r\n\r\nvalue\r\n" | 434 "--boundary\r\nContent-Disposition: form-data;" |
| 435 "--boundary--\r\n"; | 435 " name=\"value name\"\r\n\r\nvalue\r\n" |
| 436 "--boundary--\r\n"; |
| 436 std::string post_data; | 437 std::string post_data; |
| 437 AddMultipartValueForUpload("value name", "value", "boundary", | 438 AddMultipartValueForUpload("value name", "value", "boundary", |
| 438 "content type", &post_data); | 439 "content type", &post_data); |
| 439 AddMultipartValueForUpload("value name", "value", "boundary", | 440 AddMultipartValueForUpload("value name", "value", "boundary", |
| 440 "", &post_data); | 441 "", &post_data); |
| 441 AddMultipartFinalDelimiterForUpload("boundary", &post_data); | 442 AddMultipartFinalDelimiterForUpload("boundary", &post_data); |
| 442 EXPECT_STREQ(ref_output, post_data.c_str()); | 443 EXPECT_STREQ(ref_output, post_data.c_str()); |
| 443 } | 444 } |
| 444 | 445 |
| 445 } // namespace net | 446 } // namespace net |
| OLD | NEW |