| 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "net/base/escape.h" | 8 #include "net/base/escape.h" |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 {L"%01%02%03%04%05%06%07%08%09 %25", UnescapeRule::CONTROL_CHARS, | 243 {L"%01%02%03%04%05%06%07%08%09 %25", UnescapeRule::CONTROL_CHARS, |
| 244 L"\x01\x02\x03\x04\x05\x06\x07\x08\x09 %25"}, | 244 L"\x01\x02\x03\x04\x05\x06\x07\x08\x09 %25"}, |
| 245 {L"Hello%20%13%10%02", UnescapeRule::SPACES, L"Hello %13%10%02"}, | 245 {L"Hello%20%13%10%02", UnescapeRule::SPACES, L"Hello %13%10%02"}, |
| 246 {L"Hello%20%13%10%02", UnescapeRule::CONTROL_CHARS, | 246 {L"Hello%20%13%10%02", UnescapeRule::CONTROL_CHARS, |
| 247 L"Hello%20\x13\x10\x02"}, | 247 L"Hello%20\x13\x10\x02"}, |
| 248 {L"Hello\x9824\x9827", UnescapeRule::CONTROL_CHARS, | 248 {L"Hello\x9824\x9827", UnescapeRule::CONTROL_CHARS, |
| 249 L"Hello\x9824\x9827"}, | 249 L"Hello\x9824\x9827"}, |
| 250 }; | 250 }; |
| 251 | 251 |
| 252 for (size_t i = 0; i < arraysize(unescape_cases); i++) { | 252 for (size_t i = 0; i < arraysize(unescape_cases); i++) { |
| 253 base::string16 str(WideToUTF16(unescape_cases[i].input)); | 253 base::string16 str(base::WideToUTF16(unescape_cases[i].input)); |
| 254 EXPECT_EQ(WideToUTF16(unescape_cases[i].output), | 254 EXPECT_EQ(base::WideToUTF16(unescape_cases[i].output), |
| 255 UnescapeURLComponent(str, unescape_cases[i].rules)); | 255 UnescapeURLComponent(str, unescape_cases[i].rules)); |
| 256 } | 256 } |
| 257 | 257 |
| 258 // Test the NULL character unescaping (which wouldn't work above since those | 258 // Test the NULL character unescaping (which wouldn't work above since those |
| 259 // are just char pointers). | 259 // are just char pointers). |
| 260 base::string16 input(WideToUTF16(L"Null")); | 260 base::string16 input(base::WideToUTF16(L"Null")); |
| 261 input.push_back(0); // Also have a NULL in the input. | 261 input.push_back(0); // Also have a NULL in the input. |
| 262 input.append(WideToUTF16(L"%00%39Test")); | 262 input.append(base::WideToUTF16(L"%00%39Test")); |
| 263 | 263 |
| 264 // When we're unescaping NULLs | 264 // When we're unescaping NULLs |
| 265 base::string16 expected(WideToUTF16(L"Null")); | 265 base::string16 expected(base::WideToUTF16(L"Null")); |
| 266 expected.push_back(0); | 266 expected.push_back(0); |
| 267 expected.push_back(0); | 267 expected.push_back(0); |
| 268 expected.append(ASCIIToUTF16("9Test")); | 268 expected.append(base::ASCIIToUTF16("9Test")); |
| 269 EXPECT_EQ(expected, UnescapeURLComponent(input, UnescapeRule::CONTROL_CHARS)); | 269 EXPECT_EQ(expected, UnescapeURLComponent(input, UnescapeRule::CONTROL_CHARS)); |
| 270 | 270 |
| 271 // When we're not unescaping NULLs. | 271 // When we're not unescaping NULLs. |
| 272 expected = WideToUTF16(L"Null"); | 272 expected = base::WideToUTF16(L"Null"); |
| 273 expected.push_back(0); | 273 expected.push_back(0); |
| 274 expected.append(WideToUTF16(L"%009Test")); | 274 expected.append(base::WideToUTF16(L"%009Test")); |
| 275 EXPECT_EQ(expected, UnescapeURLComponent(input, UnescapeRule::NORMAL)); | 275 EXPECT_EQ(expected, UnescapeURLComponent(input, UnescapeRule::NORMAL)); |
| 276 } | 276 } |
| 277 | 277 |
| 278 TEST(EscapeTest, UnescapeAndDecodeUTF8URLComponent) { | 278 TEST(EscapeTest, UnescapeAndDecodeUTF8URLComponent) { |
| 279 const UnescapeAndDecodeCase unescape_cases[] = { | 279 const UnescapeAndDecodeCase unescape_cases[] = { |
| 280 { "%", | 280 { "%", |
| 281 "%", | 281 "%", |
| 282 "%", | 282 "%", |
| 283 L"%"}, | 283 L"%"}, |
| 284 { "+", | 284 { "+", |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 UnescapeRule::NORMAL); | 324 UnescapeRule::NORMAL); |
| 325 EXPECT_EQ(std::string(unescape_cases[i].url_unescaped), unescaped); | 325 EXPECT_EQ(std::string(unescape_cases[i].url_unescaped), unescaped); |
| 326 | 326 |
| 327 unescaped = UnescapeURLComponent(unescape_cases[i].input, | 327 unescaped = UnescapeURLComponent(unescape_cases[i].input, |
| 328 UnescapeRule::REPLACE_PLUS_WITH_SPACE); | 328 UnescapeRule::REPLACE_PLUS_WITH_SPACE); |
| 329 EXPECT_EQ(std::string(unescape_cases[i].query_unescaped), unescaped); | 329 EXPECT_EQ(std::string(unescape_cases[i].query_unescaped), unescaped); |
| 330 | 330 |
| 331 // TODO: Need to test unescape_spaces and unescape_percent. | 331 // TODO: Need to test unescape_spaces and unescape_percent. |
| 332 base::string16 decoded = UnescapeAndDecodeUTF8URLComponent( | 332 base::string16 decoded = UnescapeAndDecodeUTF8URLComponent( |
| 333 unescape_cases[i].input, UnescapeRule::NORMAL, NULL); | 333 unescape_cases[i].input, UnescapeRule::NORMAL, NULL); |
| 334 EXPECT_EQ(WideToUTF16(unescape_cases[i].decoded), decoded); | 334 EXPECT_EQ(base::WideToUTF16(unescape_cases[i].decoded), decoded); |
| 335 } | 335 } |
| 336 } | 336 } |
| 337 | 337 |
| 338 TEST(EscapeTest, AdjustOffset) { | 338 TEST(EscapeTest, AdjustOffset) { |
| 339 const AdjustOffsetCase adjust_cases[] = { | 339 const AdjustOffsetCase adjust_cases[] = { |
| 340 {"", 0, 0}, | 340 {"", 0, 0}, |
| 341 {"", 1, std::string::npos}, | 341 {"", 1, std::string::npos}, |
| 342 {"test", 0, 0}, | 342 {"test", 0, 0}, |
| 343 {"test", 2, 2}, | 343 {"test", 2, 2}, |
| 344 {"test", 4, 4}, | 344 {"test", 4, 4}, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 { "<>&"'", "<>&\"'" }, | 380 { "<>&"'", "<>&\"'" }, |
| 381 { "& lt; & ; &; '", "& lt; & ; &; '" }, | 381 { "& lt; & ; &; '", "& lt; & ; &; '" }, |
| 382 { "&", "&" }, | 382 { "&", "&" }, |
| 383 { """, "\"" }, | 383 { """, "\"" }, |
| 384 { "'", "'" }, | 384 { "'", "'" }, |
| 385 { "<", "<" }, | 385 { "<", "<" }, |
| 386 { ">", ">" }, | 386 { ">", ">" }, |
| 387 { "& &", "& &" }, | 387 { "& &", "& &" }, |
| 388 }; | 388 }; |
| 389 for (size_t i = 0; i < arraysize(tests); ++i) { | 389 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 390 base::string16 result = UnescapeForHTML(ASCIIToUTF16(tests[i].input)); | 390 base::string16 result = UnescapeForHTML(base::ASCIIToUTF16(tests[i].input)); |
| 391 EXPECT_EQ(ASCIIToUTF16(tests[i].expected_output), result); | 391 EXPECT_EQ(base::ASCIIToUTF16(tests[i].expected_output), result); |
| 392 } | 392 } |
| 393 } | 393 } |
| 394 | 394 |
| 395 TEST(EscapeTest, AdjustEncodingOffset) { | 395 TEST(EscapeTest, AdjustEncodingOffset) { |
| 396 // Imagine we have strings as shown in the following cases where the | 396 // Imagine we have strings as shown in the following cases where the |
| 397 // %XX's represent encoded characters | 397 // %XX's represent encoded characters |
| 398 | 398 |
| 399 // 1: abc%ECdef ==> abcXdef | 399 // 1: abc%ECdef ==> abcXdef |
| 400 std::vector<size_t> offsets; | 400 std::vector<size_t> offsets; |
| 401 for (size_t t = 0; t < 9; ++t) | 401 for (size_t t = 0; t < 9; ++t) |
| (...skipping 21 matching lines...) Expand all Loading... |
| 423 internal::AdjustEncodingOffset(adjustments)); | 423 internal::AdjustEncodingOffset(adjustments)); |
| 424 size_t expected_2[] = {0, kNpos, kNpos, 1, 2, 3, 4, kNpos, kNpos, 5, kNpos, | 424 size_t expected_2[] = {0, kNpos, kNpos, 1, 2, 3, 4, kNpos, kNpos, 5, kNpos, |
| 425 kNpos, 6, 7, 8, 9, kNpos, kNpos}; | 425 kNpos, 6, 7, 8, 9, kNpos, kNpos}; |
| 426 EXPECT_EQ(offsets.size(), arraysize(expected_2)); | 426 EXPECT_EQ(offsets.size(), arraysize(expected_2)); |
| 427 for (size_t i = 0; i < arraysize(expected_2); ++i) | 427 for (size_t i = 0; i < arraysize(expected_2); ++i) |
| 428 EXPECT_EQ(expected_2[i], offsets[i]); | 428 EXPECT_EQ(expected_2[i], offsets[i]); |
| 429 } | 429 } |
| 430 | 430 |
| 431 } // namespace | 431 } // namespace |
| 432 } // namespace net | 432 } // namespace net |
| OLD | NEW |