| 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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 } | 187 } |
| 188 | 188 |
| 189 // Test without stripping the codec type. | 189 // Test without stripping the codec type. |
| 190 std::vector<std::string> codecs_out; | 190 std::vector<std::string> codecs_out; |
| 191 ParseCodecString("avc1.42E01E, mp4a.40.2", &codecs_out, false); | 191 ParseCodecString("avc1.42E01E, mp4a.40.2", &codecs_out, false); |
| 192 ASSERT_EQ(2u, codecs_out.size()); | 192 ASSERT_EQ(2u, codecs_out.size()); |
| 193 EXPECT_EQ("avc1.42E01E", codecs_out[0]); | 193 EXPECT_EQ("avc1.42E01E", codecs_out[0]); |
| 194 EXPECT_EQ("mp4a.40.2", codecs_out[1]); | 194 EXPECT_EQ("mp4a.40.2", codecs_out[1]); |
| 195 } | 195 } |
| 196 | 196 |
| 197 TEST(MimeUtilTest, TestIsMimeType) { | 197 TEST(MimeUtilTest, TestParseMimeTypeWithoutParameter) { |
| 198 std::string nonAscii("application/nonutf8"); | 198 std::string nonAscii("application/nonutf8"); |
| 199 EXPECT_TRUE(IsMimeType(nonAscii)); | 199 EXPECT_TRUE(ParseMimeTypeWithoutParameter(nonAscii, NULL, NULL)); |
| 200 #if defined(OS_WIN) | 200 #if defined(OS_WIN) |
| 201 nonAscii.append(base::WideToUTF8(std::wstring(L"\u2603"))); | 201 nonAscii.append(base::WideToUTF8(std::wstring(L"\u2603"))); |
| 202 #else | 202 #else |
| 203 nonAscii.append("\u2603"); // unicode snowman | 203 nonAscii.append("\u2603"); // unicode snowman |
| 204 #endif | 204 #endif |
| 205 EXPECT_FALSE(IsMimeType(nonAscii)); | 205 EXPECT_FALSE(ParseMimeTypeWithoutParameter(nonAscii, NULL, NULL)); |
| 206 | 206 |
| 207 EXPECT_TRUE(IsMimeType("application/mime")); | 207 std::string top_level_type; |
| 208 EXPECT_TRUE(IsMimeType("application/json")); | 208 std::string subtype; |
| 209 EXPECT_TRUE(IsMimeType("application/x-suggestions+json")); | 209 EXPECT_TRUE(ParseMimeTypeWithoutParameter( |
| 210 EXPECT_TRUE(IsMimeType("application/+json")); | 210 "application/mime", &top_level_type, &subtype)); |
| 211 EXPECT_TRUE(IsMimeType("audio/mime")); | 211 EXPECT_EQ("application", top_level_type); |
| 212 EXPECT_TRUE(IsMimeType("example/mime")); | 212 EXPECT_EQ("mime", subtype); |
| 213 EXPECT_TRUE(IsMimeType("image/mime")); | |
| 214 EXPECT_TRUE(IsMimeType("message/mime")); | |
| 215 EXPECT_TRUE(IsMimeType("model/mime")); | |
| 216 EXPECT_TRUE(IsMimeType("multipart/mime")); | |
| 217 EXPECT_TRUE(IsMimeType("text/mime")); | |
| 218 EXPECT_TRUE(IsMimeType("TEXT/mime")); | |
| 219 EXPECT_TRUE(IsMimeType("Text/mime")); | |
| 220 EXPECT_TRUE(IsMimeType("TeXt/mime")); | |
| 221 EXPECT_TRUE(IsMimeType("video/mime")); | |
| 222 EXPECT_TRUE(IsMimeType("video/mime;parameter")); | |
| 223 EXPECT_TRUE(IsMimeType("*/*")); | |
| 224 EXPECT_TRUE(IsMimeType("*")); | |
| 225 | 213 |
| 226 EXPECT_TRUE(IsMimeType("x-video/mime")); | 214 // Various allowed subtype forms. |
| 227 EXPECT_TRUE(IsMimeType("X-Video/mime")); | 215 EXPECT_TRUE(ParseMimeTypeWithoutParameter("application/json", NULL, NULL)); |
| 228 EXPECT_FALSE(IsMimeType("x-video/")); | 216 EXPECT_TRUE(ParseMimeTypeWithoutParameter( |
| 229 EXPECT_FALSE(IsMimeType("x-/mime")); | 217 "application/x-suggestions+json", NULL, NULL)); |
| 230 EXPECT_FALSE(IsMimeType("mime/looking")); | 218 EXPECT_TRUE(ParseMimeTypeWithoutParameter("application/+json", NULL, NULL)); |
| 231 EXPECT_FALSE(IsMimeType("text/")); | 219 |
| 220 // Upper case letters are allowed. |
| 221 EXPECT_TRUE(ParseMimeTypeWithoutParameter("text/mime", NULL, NULL)); |
| 222 EXPECT_TRUE(ParseMimeTypeWithoutParameter("TEXT/mime", NULL, NULL)); |
| 223 EXPECT_TRUE(ParseMimeTypeWithoutParameter("Text/mime", NULL, NULL)); |
| 224 EXPECT_TRUE(ParseMimeTypeWithoutParameter("TeXt/mime", NULL, NULL)); |
| 225 |
| 226 // Experimental types are also considered to be valid. |
| 227 EXPECT_TRUE(ParseMimeTypeWithoutParameter("x-video/mime", NULL, NULL)); |
| 228 EXPECT_TRUE(ParseMimeTypeWithoutParameter("X-Video/mime", NULL, NULL)); |
| 229 |
| 230 EXPECT_FALSE(ParseMimeTypeWithoutParameter("text", NULL, NULL)); |
| 231 EXPECT_FALSE(ParseMimeTypeWithoutParameter("text/", NULL, NULL)); |
| 232 EXPECT_FALSE(ParseMimeTypeWithoutParameter("text/ ", NULL, NULL)); |
| 233 EXPECT_FALSE(ParseMimeTypeWithoutParameter("te(xt/ ", NULL, NULL)); |
| 234 EXPECT_FALSE(ParseMimeTypeWithoutParameter("text/()plain", NULL, NULL)); |
| 235 |
| 236 EXPECT_FALSE(ParseMimeTypeWithoutParameter("x-video", NULL, NULL)); |
| 237 EXPECT_FALSE(ParseMimeTypeWithoutParameter("x-video/", NULL, NULL)); |
| 238 |
| 239 EXPECT_FALSE(ParseMimeTypeWithoutParameter("application/a/b/c", NULL, NULL)); |
| 240 |
| 241 //EXPECT_TRUE(ParseMimeTypeWithoutParameter("video/mime;parameter")); |
| 242 } |
| 243 |
| 244 TEST(MimeUtilTest, TestIsValidTopLevelMimeType) { |
| 245 EXPECT_TRUE(IsValidTopLevelMimeType("application")); |
| 246 EXPECT_TRUE(IsValidTopLevelMimeType("audio")); |
| 247 EXPECT_TRUE(IsValidTopLevelMimeType("example")); |
| 248 EXPECT_TRUE(IsValidTopLevelMimeType("image")); |
| 249 EXPECT_TRUE(IsValidTopLevelMimeType("message")); |
| 250 EXPECT_TRUE(IsValidTopLevelMimeType("model")); |
| 251 EXPECT_TRUE(IsValidTopLevelMimeType("multipart")); |
| 252 EXPECT_TRUE(IsValidTopLevelMimeType("text")); |
| 253 EXPECT_TRUE(IsValidTopLevelMimeType("video")); |
| 254 |
| 255 EXPECT_TRUE(IsValidTopLevelMimeType("TEXT")); |
| 256 EXPECT_TRUE(IsValidTopLevelMimeType("Text")); |
| 257 EXPECT_TRUE(IsValidTopLevelMimeType("TeXt")); |
| 258 |
| 259 EXPECT_FALSE(IsValidTopLevelMimeType("mime")); |
| 260 EXPECT_FALSE(IsValidTopLevelMimeType("")); |
| 261 EXPECT_FALSE(IsValidTopLevelMimeType("/")); |
| 262 EXPECT_FALSE(IsValidTopLevelMimeType(" ")); |
| 263 |
| 264 EXPECT_TRUE(IsValidTopLevelMimeType("x-video")); |
| 265 EXPECT_TRUE(IsValidTopLevelMimeType("X-video")); |
| 266 |
| 267 EXPECT_FALSE(IsValidTopLevelMimeType("x-")); |
| 232 } | 268 } |
| 233 | 269 |
| 234 TEST(MimeUtilTest, TestToIANAMediaType) { | 270 TEST(MimeUtilTest, TestToIANAMediaType) { |
| 235 EXPECT_EQ("", GetIANAMediaType("texting/driving")); | 271 EXPECT_EQ("", GetIANAMediaType("texting/driving")); |
| 236 EXPECT_EQ("", GetIANAMediaType("ham/sandwich")); | 272 EXPECT_EQ("", GetIANAMediaType("ham/sandwich")); |
| 237 EXPECT_EQ("", GetIANAMediaType(std::string())); | 273 EXPECT_EQ("", GetIANAMediaType(std::string())); |
| 238 EXPECT_EQ("", GetIANAMediaType("/application/hamsandwich")); | 274 EXPECT_EQ("", GetIANAMediaType("/application/hamsandwich")); |
| 239 | 275 |
| 240 EXPECT_EQ("application", GetIANAMediaType("application/poodle-wrestler")); | 276 EXPECT_EQ("application", GetIANAMediaType("application/poodle-wrestler")); |
| 241 EXPECT_EQ("audio", GetIANAMediaType("audio/mpeg")); | 277 EXPECT_EQ("audio", GetIANAMediaType("audio/mpeg")); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 std::string post_data; | 357 std::string post_data; |
| 322 AddMultipartValueForUpload("value name", "value", "boundary", | 358 AddMultipartValueForUpload("value name", "value", "boundary", |
| 323 "content type", &post_data); | 359 "content type", &post_data); |
| 324 AddMultipartValueForUpload("value name", "value", "boundary", | 360 AddMultipartValueForUpload("value name", "value", "boundary", |
| 325 "", &post_data); | 361 "", &post_data); |
| 326 AddMultipartFinalDelimiterForUpload("boundary", &post_data); | 362 AddMultipartFinalDelimiterForUpload("boundary", &post_data); |
| 327 EXPECT_STREQ(ref_output, post_data.c_str()); | 363 EXPECT_STREQ(ref_output, post_data.c_str()); |
| 328 } | 364 } |
| 329 | 365 |
| 330 } // namespace net | 366 } // namespace net |
| OLD | NEW |