OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "url/third_party/mozilla/url_parse.h" | 9 #include "url/third_party/mozilla/url_parse.h" |
10 #include "url/url_canon.h" | 10 #include "url/url_canon.h" |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 Parsed resolved_parsed; | 367 Parsed resolved_parsed; |
368 | 368 |
369 bool valid = ResolveRelative(base, strlen(base), | 369 bool valid = ResolveRelative(base, strlen(base), |
370 base_parsed, rel, | 370 base_parsed, rel, |
371 strlen(rel), NULL, &output, | 371 strlen(rel), NULL, &output, |
372 &resolved_parsed); | 372 &resolved_parsed); |
373 EXPECT_TRUE(valid); | 373 EXPECT_TRUE(valid); |
374 EXPECT_FALSE(resolved_parsed.ref.is_valid()); | 374 EXPECT_FALSE(resolved_parsed.ref.is_valid()); |
375 } | 375 } |
376 | 376 |
377 TEST(URLUtilTest, RelativeWhitespaceRemoved) { | 377 TEST(URLUtilTest, PotentiallyDanglingMarkup) { |
378 struct ResolveRelativeCase { | 378 struct ResolveRelativeCase { |
379 const char* base; | 379 const char* base; |
380 const char* rel; | 380 const char* rel; |
381 bool whitespace_removed; | 381 bool potentially_dangling_markup; |
382 const char* out; | 382 const char* out; |
383 } cases[] = { | 383 } cases[] = { |
384 {"https://example.com/", "/path", false, "https://example.com/path"}, | 384 {"https://example.com/", "/path<", false, "https://example.com/path%3C"}, |
385 {"https://example.com/", "\n/path", true, "https://example.com/path"}, | 385 {"https://example.com/", "\n/path<", true, "https://example.com/path%3C"}, |
386 {"https://example.com/", "\r/path", true, "https://example.com/path"}, | 386 {"https://example.com/", "\r/path<", true, "https://example.com/path%3C"}, |
387 {"https://example.com/", "\t/path", true, "https://example.com/path"}, | 387 {"https://example.com/", "\t/path<", true, "https://example.com/path%3C"}, |
388 {"https://example.com/", "/pa\nth", true, "https://example.com/path"}, | 388 {"https://example.com/", "/pa\nth<", true, "https://example.com/path%3C"}, |
389 {"https://example.com/", "/pa\rth", true, "https://example.com/path"}, | 389 {"https://example.com/", "/pa\rth<", true, "https://example.com/path%3C"}, |
390 {"https://example.com/", "/pa\tth", true, "https://example.com/path"}, | 390 {"https://example.com/", "/pa\tth<", true, "https://example.com/path%3C"}, |
391 {"https://example.com/", "/path\n", true, "https://example.com/path"}, | 391 {"https://example.com/", "/path\n<", true, "https://example.com/path%3C"}, |
392 {"https://example.com/", "/path\r", true, "https://example.com/path"}, | 392 {"https://example.com/", "/path\r<", true, "https://example.com/path%3C"}, |
393 {"https://example.com/", "/path\r", true, "https://example.com/path"}, | 393 {"https://example.com/", "/path\r<", true, "https://example.com/path%3C"}, |
| 394 {"https://example.com/", "\n/<path", true, "https://example.com/%3Cpath"}, |
| 395 {"https://example.com/", "\r/<path", true, "https://example.com/%3Cpath"}, |
| 396 {"https://example.com/", "\t/<path", true, "https://example.com/%3Cpath"}, |
| 397 {"https://example.com/", "/<pa\nth", true, "https://example.com/%3Cpath"}, |
| 398 {"https://example.com/", "/<pa\rth", true, "https://example.com/%3Cpath"}, |
| 399 {"https://example.com/", "/<pa\tth", true, "https://example.com/%3Cpath"}, |
| 400 {"https://example.com/", "/<path\n", true, "https://example.com/%3Cpath"}, |
| 401 {"https://example.com/", "/<path\r", true, "https://example.com/%3Cpath"}, |
| 402 {"https://example.com/", "/<path\r", true, "https://example.com/%3Cpath"}, |
394 }; | 403 }; |
395 | 404 |
396 for (const auto& test : cases) { | 405 for (const auto& test : cases) { |
397 SCOPED_TRACE(::testing::Message() << test.base << ", " << test.rel); | 406 SCOPED_TRACE(::testing::Message() << test.base << ", " << test.rel); |
398 Parsed base_parsed; | 407 Parsed base_parsed; |
399 ParseStandardURL(test.base, strlen(test.base), &base_parsed); | 408 ParseStandardURL(test.base, strlen(test.base), &base_parsed); |
400 | 409 |
401 std::string resolved; | 410 std::string resolved; |
402 StdStringCanonOutput output(&resolved); | 411 StdStringCanonOutput output(&resolved); |
403 Parsed resolved_parsed; | 412 Parsed resolved_parsed; |
404 bool valid = | 413 bool valid = |
405 ResolveRelative(test.base, strlen(test.base), base_parsed, test.rel, | 414 ResolveRelative(test.base, strlen(test.base), base_parsed, test.rel, |
406 strlen(test.rel), NULL, &output, &resolved_parsed); | 415 strlen(test.rel), NULL, &output, &resolved_parsed); |
407 ASSERT_TRUE(valid); | 416 ASSERT_TRUE(valid); |
408 output.Complete(); | 417 output.Complete(); |
409 | 418 |
410 EXPECT_EQ(test.whitespace_removed, resolved_parsed.whitespace_removed); | 419 EXPECT_EQ(test.potentially_dangling_markup, |
| 420 resolved_parsed.potentially_dangling_markup); |
411 EXPECT_EQ(test.out, resolved); | 421 EXPECT_EQ(test.out, resolved); |
412 } | 422 } |
413 } | 423 } |
414 | 424 |
415 TEST(URLUtilTest, TestDomainIs) { | 425 TEST(URLUtilTest, TestDomainIs) { |
416 const struct { | 426 const struct { |
417 const char* canonicalized_host; | 427 const char* canonicalized_host; |
418 const char* lower_ascii_domain; | 428 const char* lower_ascii_domain; |
419 bool expected_domain_is; | 429 bool expected_domain_is; |
420 } kTestCases[] = { | 430 } kTestCases[] = { |
(...skipping 28 matching lines...) Expand all Loading... |
449 << test_case.canonicalized_host << ", " | 459 << test_case.canonicalized_host << ", " |
450 << test_case.lower_ascii_domain << ")"); | 460 << test_case.lower_ascii_domain << ")"); |
451 | 461 |
452 EXPECT_EQ( | 462 EXPECT_EQ( |
453 test_case.expected_domain_is, | 463 test_case.expected_domain_is, |
454 DomainIs(test_case.canonicalized_host, test_case.lower_ascii_domain)); | 464 DomainIs(test_case.canonicalized_host, test_case.lower_ascii_domain)); |
455 } | 465 } |
456 } | 466 } |
457 | 467 |
458 } // namespace url | 468 } // namespace url |
OLD | NEW |