Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: components/url_formatter/url_formatter_unittest.cc

Issue 1841653003: Drop |languages| from {Format,Elide}Url* and IDNToUnicode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix typo in elide_url.cc Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/url_formatter/url_formatter.cc ('k') | content/browser/download/save_package.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/url_formatter/url_formatter.h" 5 #include "components/url_formatter/url_formatter.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <vector> 10 #include <vector>
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 FormatUrlTypes format_types, 372 FormatUrlTypes format_types,
373 net::UnescapeRule::Type unescape_rules, 373 net::UnescapeRule::Type unescape_rules,
374 const size_t* output_offsets) { 374 const size_t* output_offsets) {
375 GURL url(url_string); 375 GURL url(url_string);
376 size_t url_length = url_string.length(); 376 size_t url_length = url_string.length();
377 std::vector<size_t> offsets; 377 std::vector<size_t> offsets;
378 for (size_t i = 0; i <= url_length + 1; ++i) 378 for (size_t i = 0; i <= url_length + 1; ++i)
379 offsets.push_back(i); 379 offsets.push_back(i);
380 offsets.push_back(500000); // Something larger than any input length. 380 offsets.push_back(500000); // Something larger than any input length.
381 offsets.push_back(std::string::npos); 381 offsets.push_back(std::string::npos);
382 base::string16 formatted_url = FormatUrlWithOffsets(url, std::string(), 382 base::string16 formatted_url = FormatUrlWithOffsets(url, format_types,
383 format_types, unescape_rules, NULL, NULL, &offsets); 383 unescape_rules, nullptr, nullptr, &offsets);
384 for (size_t i = 0; i < url_length; ++i) 384 for (size_t i = 0; i < url_length; ++i)
385 VerboseExpect(output_offsets[i], offsets[i], url_string, i, formatted_url); 385 VerboseExpect(output_offsets[i], offsets[i], url_string, i, formatted_url);
386 VerboseExpect(formatted_url.length(), offsets[url_length], url_string, 386 VerboseExpect(formatted_url.length(), offsets[url_length], url_string,
387 url_length, formatted_url); 387 url_length, formatted_url);
388 VerboseExpect(base::string16::npos, offsets[url_length + 1], url_string, 388 VerboseExpect(base::string16::npos, offsets[url_length + 1], url_string,
389 500000, formatted_url); 389 500000, formatted_url);
390 VerboseExpect(base::string16::npos, offsets[url_length + 2], url_string, 390 VerboseExpect(base::string16::npos, offsets[url_length + 2], url_string,
391 std::string::npos, formatted_url); 391 std::string::npos, formatted_url);
392 } 392 }
393 393
394 TEST(UrlFormatterTest, IDNToUnicode) { 394 TEST(UrlFormatterTest, IDNToUnicode) {
395 for (size_t i = 0; i < arraysize(idn_cases); i++) { 395 for (size_t i = 0; i < arraysize(idn_cases); i++) {
396 base::string16 output(IDNToUnicode(idn_cases[i].input, std::string())); 396 base::string16 output(IDNToUnicode(idn_cases[i].input));
397 base::string16 expected(idn_cases[i].unicode_allowed 397 base::string16 expected(idn_cases[i].unicode_allowed
398 ? WideToUTF16(idn_cases[i].unicode_output) 398 ? WideToUTF16(idn_cases[i].unicode_output)
399 : ASCIIToUTF16(idn_cases[i].input)); 399 : ASCIIToUTF16(idn_cases[i].input));
400 EXPECT_EQ(expected, output) << "input # " << i << ": \"" 400 EXPECT_EQ(expected, output) << "input # " << i << ": \""
401 << idn_cases[i].input << "\""; 401 << idn_cases[i].input << "\"";
402 } 402 }
403 } 403 }
404 404
405 TEST(UrlFormatterTest, FormatUrl) { 405 TEST(UrlFormatterTest, FormatUrl) {
406 FormatUrlTypes default_format_type = kFormatUrlOmitUsernamePassword; 406 FormatUrlTypes default_format_type = kFormatUrlOmitUsernamePassword;
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 kFormatUrlOmitAll, net::UnescapeRule::NORMAL, 546 kFormatUrlOmitAll, net::UnescapeRule::NORMAL,
547 L"view-source:http://ftp.b/c", 19}, 547 L"view-source:http://ftp.b/c", 19},
548 {"view-source omit slash when it's the entire path", 548 {"view-source omit slash when it's the entire path",
549 "view-source:http://a.b/", kFormatUrlOmitAll, 549 "view-source:http://a.b/", kFormatUrlOmitAll,
550 net::UnescapeRule::NORMAL, L"view-source:a.b", 12}, 550 net::UnescapeRule::NORMAL, L"view-source:a.b", 12},
551 }; 551 };
552 552
553 for (size_t i = 0; i < arraysize(tests); ++i) { 553 for (size_t i = 0; i < arraysize(tests); ++i) {
554 size_t prefix_len; 554 size_t prefix_len;
555 base::string16 formatted = FormatUrl( 555 base::string16 formatted = FormatUrl(
556 GURL(tests[i].input), std::string(), tests[i].format_types, 556 GURL(tests[i].input), tests[i].format_types, tests[i].escape_rules,
557 tests[i].escape_rules, NULL, &prefix_len, NULL); 557 nullptr, &prefix_len, nullptr);
558 EXPECT_EQ(WideToUTF16(tests[i].output), formatted) << tests[i].description; 558 EXPECT_EQ(WideToUTF16(tests[i].output), formatted) << tests[i].description;
559 EXPECT_EQ(tests[i].prefix_len, prefix_len) << tests[i].description; 559 EXPECT_EQ(tests[i].prefix_len, prefix_len) << tests[i].description;
560 } 560 }
561 } 561 }
562 562
563 TEST(UrlFormatterTest, FormatUrlParsed) { 563 TEST(UrlFormatterTest, FormatUrlParsed) {
564 // No unescape case. 564 // No unescape case.
565 url::Parsed parsed; 565 url::Parsed parsed;
566 base::string16 formatted = 566 base::string16 formatted =
567 FormatUrl(GURL("http://\xE3\x82\xB0:\xE3\x83\xBC@xn--qcka1pmc.jp:8080/" 567 FormatUrl(GURL("http://\xE3\x82\xB0:\xE3\x83\xBC@xn--qcka1pmc.jp:8080/"
568 "%E3%82%B0/?q=%E3%82%B0#\xE3\x82\xB0"), 568 "%E3%82%B0/?q=%E3%82%B0#\xE3\x82\xB0"),
569 std::string(), kFormatUrlOmitNothing, net::UnescapeRule::NONE, 569 kFormatUrlOmitNothing, net::UnescapeRule::NONE,
570 &parsed, NULL, NULL); 570 &parsed, nullptr, nullptr);
571 EXPECT_EQ(WideToUTF16( 571 EXPECT_EQ(WideToUTF16(
572 L"http://%E3%82%B0:%E3%83%BC@\x30B0\x30FC\x30B0\x30EB.jp:8080" 572 L"http://%E3%82%B0:%E3%83%BC@\x30B0\x30FC\x30B0\x30EB.jp:8080"
573 L"/%E3%82%B0/?q=%E3%82%B0#\x30B0"), formatted); 573 L"/%E3%82%B0/?q=%E3%82%B0#\x30B0"), formatted);
574 EXPECT_EQ(WideToUTF16(L"%E3%82%B0"), 574 EXPECT_EQ(WideToUTF16(L"%E3%82%B0"),
575 formatted.substr(parsed.username.begin, parsed.username.len)); 575 formatted.substr(parsed.username.begin, parsed.username.len));
576 EXPECT_EQ(WideToUTF16(L"%E3%83%BC"), 576 EXPECT_EQ(WideToUTF16(L"%E3%83%BC"),
577 formatted.substr(parsed.password.begin, parsed.password.len)); 577 formatted.substr(parsed.password.begin, parsed.password.len));
578 EXPECT_EQ(WideToUTF16(L"\x30B0\x30FC\x30B0\x30EB.jp"), 578 EXPECT_EQ(WideToUTF16(L"\x30B0\x30FC\x30B0\x30EB.jp"),
579 formatted.substr(parsed.host.begin, parsed.host.len)); 579 formatted.substr(parsed.host.begin, parsed.host.len));
580 EXPECT_EQ(WideToUTF16(L"8080"), 580 EXPECT_EQ(WideToUTF16(L"8080"),
581 formatted.substr(parsed.port.begin, parsed.port.len)); 581 formatted.substr(parsed.port.begin, parsed.port.len));
582 EXPECT_EQ(WideToUTF16(L"/%E3%82%B0/"), 582 EXPECT_EQ(WideToUTF16(L"/%E3%82%B0/"),
583 formatted.substr(parsed.path.begin, parsed.path.len)); 583 formatted.substr(parsed.path.begin, parsed.path.len));
584 EXPECT_EQ(WideToUTF16(L"q=%E3%82%B0"), 584 EXPECT_EQ(WideToUTF16(L"q=%E3%82%B0"),
585 formatted.substr(parsed.query.begin, parsed.query.len)); 585 formatted.substr(parsed.query.begin, parsed.query.len));
586 EXPECT_EQ(WideToUTF16(L"\x30B0"), 586 EXPECT_EQ(WideToUTF16(L"\x30B0"),
587 formatted.substr(parsed.ref.begin, parsed.ref.len)); 587 formatted.substr(parsed.ref.begin, parsed.ref.len));
588 588
589 // Unescape case. 589 // Unescape case.
590 formatted = 590 formatted =
591 FormatUrl(GURL("http://\xE3\x82\xB0:\xE3\x83\xBC@xn--qcka1pmc.jp:8080/" 591 FormatUrl(GURL("http://\xE3\x82\xB0:\xE3\x83\xBC@xn--qcka1pmc.jp:8080/"
592 "%E3%82%B0/?q=%E3%82%B0#\xE3\x82\xB0"), 592 "%E3%82%B0/?q=%E3%82%B0#\xE3\x82\xB0"),
593 "ja", kFormatUrlOmitNothing, net::UnescapeRule::NORMAL, &parsed, 593 kFormatUrlOmitNothing, net::UnescapeRule::NORMAL, &parsed,
594 NULL, NULL); 594 nullptr, nullptr);
595 EXPECT_EQ(WideToUTF16(L"http://\x30B0:\x30FC@\x30B0\x30FC\x30B0\x30EB.jp:8080" 595 EXPECT_EQ(WideToUTF16(L"http://\x30B0:\x30FC@\x30B0\x30FC\x30B0\x30EB.jp:8080"
596 L"/\x30B0/?q=\x30B0#\x30B0"), formatted); 596 L"/\x30B0/?q=\x30B0#\x30B0"), formatted);
597 EXPECT_EQ(WideToUTF16(L"\x30B0"), 597 EXPECT_EQ(WideToUTF16(L"\x30B0"),
598 formatted.substr(parsed.username.begin, parsed.username.len)); 598 formatted.substr(parsed.username.begin, parsed.username.len));
599 EXPECT_EQ(WideToUTF16(L"\x30FC"), 599 EXPECT_EQ(WideToUTF16(L"\x30FC"),
600 formatted.substr(parsed.password.begin, parsed.password.len)); 600 formatted.substr(parsed.password.begin, parsed.password.len));
601 EXPECT_EQ(WideToUTF16(L"\x30B0\x30FC\x30B0\x30EB.jp"), 601 EXPECT_EQ(WideToUTF16(L"\x30B0\x30FC\x30B0\x30EB.jp"),
602 formatted.substr(parsed.host.begin, parsed.host.len)); 602 formatted.substr(parsed.host.begin, parsed.host.len));
603 EXPECT_EQ(WideToUTF16(L"8080"), 603 EXPECT_EQ(WideToUTF16(L"8080"),
604 formatted.substr(parsed.port.begin, parsed.port.len)); 604 formatted.substr(parsed.port.begin, parsed.port.len));
605 EXPECT_EQ(WideToUTF16(L"/\x30B0/"), 605 EXPECT_EQ(WideToUTF16(L"/\x30B0/"),
606 formatted.substr(parsed.path.begin, parsed.path.len)); 606 formatted.substr(parsed.path.begin, parsed.path.len));
607 EXPECT_EQ(WideToUTF16(L"q=\x30B0"), 607 EXPECT_EQ(WideToUTF16(L"q=\x30B0"),
608 formatted.substr(parsed.query.begin, parsed.query.len)); 608 formatted.substr(parsed.query.begin, parsed.query.len));
609 EXPECT_EQ(WideToUTF16(L"\x30B0"), 609 EXPECT_EQ(WideToUTF16(L"\x30B0"),
610 formatted.substr(parsed.ref.begin, parsed.ref.len)); 610 formatted.substr(parsed.ref.begin, parsed.ref.len));
611 611
612 // Omit_username_password + unescape case. 612 // Omit_username_password + unescape case.
613 formatted = 613 formatted =
614 FormatUrl(GURL("http://\xE3\x82\xB0:\xE3\x83\xBC@xn--qcka1pmc.jp:8080/" 614 FormatUrl(GURL("http://\xE3\x82\xB0:\xE3\x83\xBC@xn--qcka1pmc.jp:8080/"
615 "%E3%82%B0/?q=%E3%82%B0#\xE3\x82\xB0"), 615 "%E3%82%B0/?q=%E3%82%B0#\xE3\x82\xB0"),
616 "ja", kFormatUrlOmitUsernamePassword, net::UnescapeRule::NORMAL, 616 kFormatUrlOmitUsernamePassword, net::UnescapeRule::NORMAL,
617 &parsed, NULL, NULL); 617 &parsed, nullptr, nullptr);
618 EXPECT_EQ(WideToUTF16(L"http://\x30B0\x30FC\x30B0\x30EB.jp:8080" 618 EXPECT_EQ(WideToUTF16(L"http://\x30B0\x30FC\x30B0\x30EB.jp:8080"
619 L"/\x30B0/?q=\x30B0#\x30B0"), formatted); 619 L"/\x30B0/?q=\x30B0#\x30B0"), formatted);
620 EXPECT_FALSE(parsed.username.is_valid()); 620 EXPECT_FALSE(parsed.username.is_valid());
621 EXPECT_FALSE(parsed.password.is_valid()); 621 EXPECT_FALSE(parsed.password.is_valid());
622 EXPECT_EQ(WideToUTF16(L"\x30B0\x30FC\x30B0\x30EB.jp"), 622 EXPECT_EQ(WideToUTF16(L"\x30B0\x30FC\x30B0\x30EB.jp"),
623 formatted.substr(parsed.host.begin, parsed.host.len)); 623 formatted.substr(parsed.host.begin, parsed.host.len));
624 EXPECT_EQ(WideToUTF16(L"8080"), 624 EXPECT_EQ(WideToUTF16(L"8080"),
625 formatted.substr(parsed.port.begin, parsed.port.len)); 625 formatted.substr(parsed.port.begin, parsed.port.len));
626 EXPECT_EQ(WideToUTF16(L"/\x30B0/"), 626 EXPECT_EQ(WideToUTF16(L"/\x30B0/"),
627 formatted.substr(parsed.path.begin, parsed.path.len)); 627 formatted.substr(parsed.path.begin, parsed.path.len));
628 EXPECT_EQ(WideToUTF16(L"q=\x30B0"), 628 EXPECT_EQ(WideToUTF16(L"q=\x30B0"),
629 formatted.substr(parsed.query.begin, parsed.query.len)); 629 formatted.substr(parsed.query.begin, parsed.query.len));
630 EXPECT_EQ(WideToUTF16(L"\x30B0"), 630 EXPECT_EQ(WideToUTF16(L"\x30B0"),
631 formatted.substr(parsed.ref.begin, parsed.ref.len)); 631 formatted.substr(parsed.ref.begin, parsed.ref.len));
632 632
633 // View-source case. 633 // View-source case.
634 formatted = 634 formatted =
635 FormatUrl(GURL("view-source:http://user:passwd@host:81/path?query#ref"), 635 FormatUrl(GURL("view-source:http://user:passwd@host:81/path?query#ref"),
636 std::string(), kFormatUrlOmitUsernamePassword, 636 kFormatUrlOmitUsernamePassword, net::UnescapeRule::NORMAL,
637 net::UnescapeRule::NORMAL, &parsed, NULL, NULL); 637 &parsed, nullptr, nullptr);
638 EXPECT_EQ(WideToUTF16(L"view-source:http://host:81/path?query#ref"), 638 EXPECT_EQ(WideToUTF16(L"view-source:http://host:81/path?query#ref"),
639 formatted); 639 formatted);
640 EXPECT_EQ(WideToUTF16(L"view-source:http"), 640 EXPECT_EQ(WideToUTF16(L"view-source:http"),
641 formatted.substr(parsed.scheme.begin, parsed.scheme.len)); 641 formatted.substr(parsed.scheme.begin, parsed.scheme.len));
642 EXPECT_FALSE(parsed.username.is_valid()); 642 EXPECT_FALSE(parsed.username.is_valid());
643 EXPECT_FALSE(parsed.password.is_valid()); 643 EXPECT_FALSE(parsed.password.is_valid());
644 EXPECT_EQ(WideToUTF16(L"host"), 644 EXPECT_EQ(WideToUTF16(L"host"),
645 formatted.substr(parsed.host.begin, parsed.host.len)); 645 formatted.substr(parsed.host.begin, parsed.host.len));
646 EXPECT_EQ(WideToUTF16(L"81"), 646 EXPECT_EQ(WideToUTF16(L"81"),
647 formatted.substr(parsed.port.begin, parsed.port.len)); 647 formatted.substr(parsed.port.begin, parsed.port.len));
648 EXPECT_EQ(WideToUTF16(L"/path"), 648 EXPECT_EQ(WideToUTF16(L"/path"),
649 formatted.substr(parsed.path.begin, parsed.path.len)); 649 formatted.substr(parsed.path.begin, parsed.path.len));
650 EXPECT_EQ(WideToUTF16(L"query"), 650 EXPECT_EQ(WideToUTF16(L"query"),
651 formatted.substr(parsed.query.begin, parsed.query.len)); 651 formatted.substr(parsed.query.begin, parsed.query.len));
652 EXPECT_EQ(WideToUTF16(L"ref"), 652 EXPECT_EQ(WideToUTF16(L"ref"),
653 formatted.substr(parsed.ref.begin, parsed.ref.len)); 653 formatted.substr(parsed.ref.begin, parsed.ref.len));
654 654
655 // omit http case. 655 // omit http case.
656 formatted = FormatUrl(GURL("http://host:8000/a?b=c#d"), std::string(), 656 formatted = FormatUrl(GURL("http://host:8000/a?b=c#d"), kFormatUrlOmitHTTP,
657 kFormatUrlOmitHTTP, net::UnescapeRule::NORMAL, &parsed, 657 net::UnescapeRule::NORMAL, &parsed, nullptr, nullptr);
658 NULL, NULL);
659 EXPECT_EQ(WideToUTF16(L"host:8000/a?b=c#d"), formatted); 658 EXPECT_EQ(WideToUTF16(L"host:8000/a?b=c#d"), formatted);
660 EXPECT_FALSE(parsed.scheme.is_valid()); 659 EXPECT_FALSE(parsed.scheme.is_valid());
661 EXPECT_FALSE(parsed.username.is_valid()); 660 EXPECT_FALSE(parsed.username.is_valid());
662 EXPECT_FALSE(parsed.password.is_valid()); 661 EXPECT_FALSE(parsed.password.is_valid());
663 EXPECT_EQ(WideToUTF16(L"host"), 662 EXPECT_EQ(WideToUTF16(L"host"),
664 formatted.substr(parsed.host.begin, parsed.host.len)); 663 formatted.substr(parsed.host.begin, parsed.host.len));
665 EXPECT_EQ(WideToUTF16(L"8000"), 664 EXPECT_EQ(WideToUTF16(L"8000"),
666 formatted.substr(parsed.port.begin, parsed.port.len)); 665 formatted.substr(parsed.port.begin, parsed.port.len));
667 EXPECT_EQ(WideToUTF16(L"/a"), 666 EXPECT_EQ(WideToUTF16(L"/a"),
668 formatted.substr(parsed.path.begin, parsed.path.len)); 667 formatted.substr(parsed.path.begin, parsed.path.len));
669 EXPECT_EQ(WideToUTF16(L"b=c"), 668 EXPECT_EQ(WideToUTF16(L"b=c"),
670 formatted.substr(parsed.query.begin, parsed.query.len)); 669 formatted.substr(parsed.query.begin, parsed.query.len));
671 EXPECT_EQ(WideToUTF16(L"d"), 670 EXPECT_EQ(WideToUTF16(L"d"),
672 formatted.substr(parsed.ref.begin, parsed.ref.len)); 671 formatted.substr(parsed.ref.begin, parsed.ref.len));
673 672
674 // omit http starts with ftp case. 673 // omit http starts with ftp case.
675 formatted = FormatUrl(GURL("http://ftp.host:8000/a?b=c#d"), std::string(), 674 formatted = FormatUrl(GURL("http://ftp.host:8000/a?b=c#d"),
676 kFormatUrlOmitHTTP, net::UnescapeRule::NORMAL, &parsed, 675 kFormatUrlOmitHTTP, net::UnescapeRule::NORMAL, &parsed,
677 NULL, NULL); 676 nullptr, nullptr);
678 EXPECT_EQ(WideToUTF16(L"http://ftp.host:8000/a?b=c#d"), formatted); 677 EXPECT_EQ(WideToUTF16(L"http://ftp.host:8000/a?b=c#d"), formatted);
679 EXPECT_TRUE(parsed.scheme.is_valid()); 678 EXPECT_TRUE(parsed.scheme.is_valid());
680 EXPECT_FALSE(parsed.username.is_valid()); 679 EXPECT_FALSE(parsed.username.is_valid());
681 EXPECT_FALSE(parsed.password.is_valid()); 680 EXPECT_FALSE(parsed.password.is_valid());
682 EXPECT_EQ(WideToUTF16(L"http"), 681 EXPECT_EQ(WideToUTF16(L"http"),
683 formatted.substr(parsed.scheme.begin, parsed.scheme.len)); 682 formatted.substr(parsed.scheme.begin, parsed.scheme.len));
684 EXPECT_EQ(WideToUTF16(L"ftp.host"), 683 EXPECT_EQ(WideToUTF16(L"ftp.host"),
685 formatted.substr(parsed.host.begin, parsed.host.len)); 684 formatted.substr(parsed.host.begin, parsed.host.len));
686 EXPECT_EQ(WideToUTF16(L"8000"), 685 EXPECT_EQ(WideToUTF16(L"8000"),
687 formatted.substr(parsed.port.begin, parsed.port.len)); 686 formatted.substr(parsed.port.begin, parsed.port.len));
688 EXPECT_EQ(WideToUTF16(L"/a"), 687 EXPECT_EQ(WideToUTF16(L"/a"),
689 formatted.substr(parsed.path.begin, parsed.path.len)); 688 formatted.substr(parsed.path.begin, parsed.path.len));
690 EXPECT_EQ(WideToUTF16(L"b=c"), 689 EXPECT_EQ(WideToUTF16(L"b=c"),
691 formatted.substr(parsed.query.begin, parsed.query.len)); 690 formatted.substr(parsed.query.begin, parsed.query.len));
692 EXPECT_EQ(WideToUTF16(L"d"), 691 EXPECT_EQ(WideToUTF16(L"d"),
693 formatted.substr(parsed.ref.begin, parsed.ref.len)); 692 formatted.substr(parsed.ref.begin, parsed.ref.len));
694 693
695 // omit http starts with 'f' case. 694 // omit http starts with 'f' case.
696 formatted = FormatUrl(GURL("http://f/"), std::string(), kFormatUrlOmitHTTP, 695 formatted = FormatUrl(GURL("http://f/"), kFormatUrlOmitHTTP,
697 net::UnescapeRule::NORMAL, &parsed, NULL, NULL); 696 net::UnescapeRule::NORMAL, &parsed, nullptr, nullptr);
698 EXPECT_EQ(WideToUTF16(L"f/"), formatted); 697 EXPECT_EQ(WideToUTF16(L"f/"), formatted);
699 EXPECT_FALSE(parsed.scheme.is_valid()); 698 EXPECT_FALSE(parsed.scheme.is_valid());
700 EXPECT_FALSE(parsed.username.is_valid()); 699 EXPECT_FALSE(parsed.username.is_valid());
701 EXPECT_FALSE(parsed.password.is_valid()); 700 EXPECT_FALSE(parsed.password.is_valid());
702 EXPECT_FALSE(parsed.port.is_valid()); 701 EXPECT_FALSE(parsed.port.is_valid());
703 EXPECT_TRUE(parsed.path.is_valid()); 702 EXPECT_TRUE(parsed.path.is_valid());
704 EXPECT_FALSE(parsed.query.is_valid()); 703 EXPECT_FALSE(parsed.query.is_valid());
705 EXPECT_FALSE(parsed.ref.is_valid()); 704 EXPECT_FALSE(parsed.ref.is_valid());
706 EXPECT_EQ(WideToUTF16(L"f"), 705 EXPECT_EQ(WideToUTF16(L"f"),
707 formatted.substr(parsed.host.begin, parsed.host.len)); 706 formatted.substr(parsed.host.begin, parsed.host.len));
708 EXPECT_EQ(WideToUTF16(L"/"), 707 EXPECT_EQ(WideToUTF16(L"/"),
709 formatted.substr(parsed.path.begin, parsed.path.len)); 708 formatted.substr(parsed.path.begin, parsed.path.len));
710 } 709 }
711 710
712 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL 711 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL
713 // results in the original GURL, for each ASCII character in the path. 712 // results in the original GURL, for each ASCII character in the path.
714 TEST(UrlFormatterTest, FormatUrlRoundTripPathASCII) { 713 TEST(UrlFormatterTest, FormatUrlRoundTripPathASCII) {
715 for (unsigned char test_char = 32; test_char < 128; ++test_char) { 714 for (unsigned char test_char = 32; test_char < 128; ++test_char) {
716 GURL url(std::string("http://www.google.com/") + 715 GURL url(std::string("http://www.google.com/") +
717 static_cast<char>(test_char)); 716 static_cast<char>(test_char));
718 size_t prefix_len; 717 size_t prefix_len;
719 base::string16 formatted = 718 base::string16 formatted =
720 FormatUrl(url, std::string(), kFormatUrlOmitUsernamePassword, 719 FormatUrl(url, kFormatUrlOmitUsernamePassword,
721 net::UnescapeRule::NORMAL, NULL, &prefix_len, NULL); 720 net::UnescapeRule::NORMAL, nullptr, &prefix_len, nullptr);
722 EXPECT_EQ(url.spec(), GURL(formatted).spec()); 721 EXPECT_EQ(url.spec(), GURL(formatted).spec());
723 } 722 }
724 } 723 }
725 724
726 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL 725 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL
727 // results in the original GURL, for each escaped ASCII character in the path. 726 // results in the original GURL, for each escaped ASCII character in the path.
728 TEST(UrlFormatterTest, FormatUrlRoundTripPathEscaped) { 727 TEST(UrlFormatterTest, FormatUrlRoundTripPathEscaped) {
729 for (unsigned char test_char = 32; test_char < 128; ++test_char) { 728 for (unsigned char test_char = 32; test_char < 128; ++test_char) {
730 std::string original_url("http://www.google.com/"); 729 std::string original_url("http://www.google.com/");
731 original_url.push_back('%'); 730 original_url.push_back('%');
732 original_url.append(base::HexEncode(&test_char, 1)); 731 original_url.append(base::HexEncode(&test_char, 1));
733 732
734 GURL url(original_url); 733 GURL url(original_url);
735 size_t prefix_len; 734 size_t prefix_len;
736 base::string16 formatted = 735 base::string16 formatted = FormatUrl(url, kFormatUrlOmitUsernamePassword,
737 FormatUrl(url, std::string(), kFormatUrlOmitUsernamePassword, 736 net::UnescapeRule::NORMAL, nullptr, &prefix_len, nullptr);
738 net::UnescapeRule::NORMAL, NULL, &prefix_len, NULL);
739 EXPECT_EQ(url.spec(), GURL(formatted).spec()); 737 EXPECT_EQ(url.spec(), GURL(formatted).spec());
740 } 738 }
741 } 739 }
742 740
743 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL 741 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL
744 // results in the original GURL, for each ASCII character in the query. 742 // results in the original GURL, for each ASCII character in the query.
745 TEST(UrlFormatterTest, FormatUrlRoundTripQueryASCII) { 743 TEST(UrlFormatterTest, FormatUrlRoundTripQueryASCII) {
746 for (unsigned char test_char = 32; test_char < 128; ++test_char) { 744 for (unsigned char test_char = 32; test_char < 128; ++test_char) {
747 GURL url(std::string("http://www.google.com/?") + 745 GURL url(std::string("http://www.google.com/?") +
748 static_cast<char>(test_char)); 746 static_cast<char>(test_char));
749 size_t prefix_len; 747 size_t prefix_len;
750 base::string16 formatted = 748 base::string16 formatted =
751 FormatUrl(url, std::string(), kFormatUrlOmitUsernamePassword, 749 FormatUrl(url, kFormatUrlOmitUsernamePassword,
752 net::UnescapeRule::NORMAL, NULL, &prefix_len, NULL); 750 net::UnescapeRule::NORMAL, nullptr, &prefix_len, nullptr);
753 EXPECT_EQ(url.spec(), GURL(formatted).spec()); 751 EXPECT_EQ(url.spec(), GURL(formatted).spec());
754 } 752 }
755 } 753 }
756 754
757 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL 755 // Make sure that calling FormatUrl on a GURL and then converting back to a GURL
758 // only results in a different GURL for certain characters. 756 // only results in a different GURL for certain characters.
759 TEST(UrlFormatterTest, FormatUrlRoundTripQueryEscaped) { 757 TEST(UrlFormatterTest, FormatUrlRoundTripQueryEscaped) {
760 // A full list of characters which FormatURL should unescape and GURL should 758 // A full list of characters which FormatURL should unescape and GURL should
761 // not escape again, when they appear in a query string. 759 // not escape again, when they appear in a query string.
762 const char kUnescapedCharacters[] = 760 const char kUnescapedCharacters[] =
763 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~"; 761 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~";
764 for (unsigned char test_char = 0; test_char < 128; ++test_char) { 762 for (unsigned char test_char = 0; test_char < 128; ++test_char) {
765 std::string original_url("http://www.google.com/?"); 763 std::string original_url("http://www.google.com/?");
766 original_url.push_back('%'); 764 original_url.push_back('%');
767 original_url.append(base::HexEncode(&test_char, 1)); 765 original_url.append(base::HexEncode(&test_char, 1));
768 766
769 GURL url(original_url); 767 GURL url(original_url);
770 size_t prefix_len; 768 size_t prefix_len;
771 base::string16 formatted = 769 base::string16 formatted =
772 FormatUrl(url, std::string(), kFormatUrlOmitUsernamePassword, 770 FormatUrl(url, kFormatUrlOmitUsernamePassword,
773 net::UnescapeRule::NORMAL, NULL, &prefix_len, NULL); 771 net::UnescapeRule::NORMAL, nullptr, &prefix_len, nullptr);
774 772
775 if (test_char && 773 if (test_char &&
776 strchr(kUnescapedCharacters, static_cast<char>(test_char))) { 774 strchr(kUnescapedCharacters, static_cast<char>(test_char))) {
777 EXPECT_NE(url.spec(), GURL(formatted).spec()); 775 EXPECT_NE(url.spec(), GURL(formatted).spec());
778 } else { 776 } else {
779 EXPECT_EQ(url.spec(), GURL(formatted).spec()); 777 EXPECT_EQ(url.spec(), GURL(formatted).spec());
780 } 778 }
781 } 779 }
782 } 780 }
783 781
784 TEST(UrlFormatterTest, FormatUrlWithOffsets) { 782 TEST(UrlFormatterTest, FormatUrlWithOffsets) {
785 CheckAdjustedOffsets(std::string(), kFormatUrlOmitNothing, 783 CheckAdjustedOffsets(std::string(), kFormatUrlOmitNothing,
786 net::UnescapeRule::NORMAL, NULL); 784 net::UnescapeRule::NORMAL, nullptr);
787 785
788 const size_t basic_offsets[] = { 786 const size_t basic_offsets[] = {
789 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 787 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
790 21, 22, 23, 24, 25 788 21, 22, 23, 24, 25
791 }; 789 };
792 CheckAdjustedOffsets("http://www.google.com/foo/", 790 CheckAdjustedOffsets("http://www.google.com/foo/",
793 kFormatUrlOmitNothing, net::UnescapeRule::NORMAL, 791 kFormatUrlOmitNothing, net::UnescapeRule::NORMAL,
794 basic_offsets); 792 basic_offsets);
795 793
796 const size_t omit_auth_offsets_1[] = { 794 const size_t omit_auth_offsets_1[] = {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 0, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, kNpos, kNpos, kNpos, kNpos, 888 0, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, kNpos, kNpos, kNpos, kNpos,
891 0, 1, 2, 3, 4, 5, 6, 7 889 0, 1, 2, 3, 4, 5, 6, 7
892 }; 890 };
893 CheckAdjustedOffsets("http://user@foo.com/", kFormatUrlOmitAll, 891 CheckAdjustedOffsets("http://user@foo.com/", kFormatUrlOmitAll,
894 net::UnescapeRule::NORMAL, omit_all_offsets); 892 net::UnescapeRule::NORMAL, omit_all_offsets);
895 } 893 }
896 894
897 } // namespace 895 } // namespace
898 896
899 } // namespace url_formatter 897 } // namespace url_formatter
OLDNEW
« no previous file with comments | « components/url_formatter/url_formatter.cc ('k') | content/browser/download/save_package.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698