Changeset 207803 in webkit
- Timestamp:
- Oct 24, 2016 8:46:32 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r207798 r207803 1 2016-10-24 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r207795. 4 5 Introduced API test failures on iOS and macOS. 6 7 Reverted changeset: 8 9 "URLParser should match old URL::parse with %2E in path" 10 https://bugs.webkit.org/show_bug.cgi?id=163929 11 http://trac.webkit.org/changeset/207795 12 1 13 2016-10-24 Yusuke Suzuki <utatane.tea@gmail.com> 2 14 -
trunk/LayoutTests/fast/url/path-expected.txt
r207795 r207803 15 15 PASS canonicalize('http://example.com/foo/../../..') is 'http://example.com/' 16 16 PASS canonicalize('http://example.com/foo/../../../ton') is 'http://example.com/ton' 17 FAIL canonicalize('http://example.com/foo/%2e') should be http://example.com/foo/. Was http://example.com/foo/%2e. 18 FAIL canonicalize('http://example.com/foo/%2e%2') should be http://example.com/foo/.%2. Was http://example.com/foo/%2e%2. 19 FAIL canonicalize('http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar') should be http://example.com/..bar. Was http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar. 17 PASS canonicalize('http://example.com/foo/%2e') is 'http://example.com/foo/' 18 PASS canonicalize('http://example.com/foo/%2e%2') is 'http://example.com/foo/.%2' 19 PASS canonicalize('http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar') is 'http://example.com/..bar' 20 20 PASS canonicalize('http://example.com////../..') is 'http://example.com//' 21 21 PASS canonicalize('http://example.com/foo/bar//../..') is 'http://example.com/foo/' -
trunk/LayoutTests/fast/url/standard-url-expected.txt
r207795 r207803 10 10 PASS canonicalize('http:////////user:@google.com:99?foo') is 'http://user@google.com:99/?foo' 11 11 PASS canonicalize('http://192.0x00A80001') is 'http://192.168.0.1/' 12 FAIL canonicalize('http://www/foo%2Ehtml') should be http://www/foo.html. Was http://www/foo%2Ehtml. 12 PASS canonicalize('http://www/foo%2Ehtml') is 'http://www/foo.html' 13 13 PASS canonicalize('http://user:pass@/') is 'http://user:pass@/' 14 14 PASS canonicalize('http://%25DOMAIN:foobar@foodomain.com/') is 'http://%25DOMAIN:foobar@foodomain.com/' -
trunk/LayoutTests/fetch/fetch-url-serialization-expected.txt
r207795 r207803 124 124 PASS Testing Request url 'http://example.com/foo/../../..' with base 'about:blank' 125 125 PASS Testing Request url 'http://example.com/foo/../../../ton' with base 'about:blank' 126 FAIL Testing Request url 'http://example.com/foo/%2e' with base 'about:blank' assert_equals: expected "http://example.com/foo/" but got "http://example.com/foo/%2e" 127 FAIL Testing Request url 'http://example.com/foo/%2e%2' with base 'about:blank' assert_equals: expected "http://example.com/foo/.%2" but got "http://example.com/foo/%2e%2" 128 FAIL Testing Request url 'http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar' with base 'about:blank' assert_equals: expected "http://example.com/..bar" but got "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar" 126 PASS Testing Request url 'http://example.com/foo/%2e' with base 'about:blank' 127 PASS Testing Request url 'http://example.com/foo/%2e%2' with base 'about:blank' 128 PASS Testing Request url 'http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar' with base 'about:blank' 129 129 PASS Testing Request url 'http://example.com////../..' with base 'about:blank' 130 130 PASS Testing Request url 'http://example.com/foo/bar//../..' with base 'about:blank' … … 155 155 PASS Testing Request url 'http://www.google.com' with base 'about:blank' 156 156 PASS Testing Request url 'http://192.0x00A80001' with base 'about:blank' 157 FAIL Testing Request url 'http://www/foo%2Ehtml' with base 'about:blank' assert_equals: expected "http://www/foo.html" but got "http://www/foo%2Ehtml" 158 FAIL Testing Request url 'http://www/foo/%2E/html' with base 'about:blank' assert_equals: expected "http://www/foo/html" but got "http://www/foo/%2E/html" 157 PASS Testing Request url 'http://www/foo%2Ehtml' with base 'about:blank' 158 PASS Testing Request url 'http://www/foo/%2E/html' with base 'about:blank' 159 159 PASS Testing Request url 'http://user:pass@/' with base 'about:blank' 160 160 PASS Testing Request url 'http://%25DOMAIN:foobar@foodomain.com/' with base 'about:blank' -
trunk/LayoutTests/imported/w3c/ChangeLog
r207795 r207803 1 2016-10-24 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r207795. 4 5 Introduced API test failures on iOS and macOS. 6 7 Reverted changeset: 8 9 "URLParser should match old URL::parse with %2E in path" 10 https://bugs.webkit.org/show_bug.cgi?id=163929 11 http://trac.webkit.org/changeset/207795 12 1 13 2016-10-24 Alex Christensen <achristensen@webkit.org> 2 14 -
trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt
r207795 r207803 127 127 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 128 128 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 129 FAIL Parsing: <http://example.com/foo/%2e> against <about:blank> assert_equals: href expected "http://example.com/foo/" but got "http://example.com/foo/%2e" 130 FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/.%2" but got "http://example.com/foo/%2e%2" 131 FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/..bar" but got "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar" 129 PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 130 PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 131 PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 132 132 PASS Parsing: <http://example.com////../..> against <about:blank> 133 133 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> … … 158 158 PASS Parsing: <http://www.google.com> against <about:blank> 159 159 PASS Parsing: <http://192.0x00A80001> against <about:blank> 160 FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml" 161 FAIL Parsing: <http://www/foo/%2E/html> against <about:blank> assert_equals: href expected "http://www/foo/html" but got "http://www/foo/%2E/html" 160 PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 161 PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 162 162 PASS Parsing: <http://user:pass@/> against <about:blank> 163 163 PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> -
trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt
r207795 r207803 127 127 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 128 128 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 129 FAIL Parsing: <http://example.com/foo/%2e> against <about:blank> assert_equals: href expected "http://example.com/foo/" but got "http://example.com/foo/%2e" 130 FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/.%2" but got "http://example.com/foo/%2e%2" 131 FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/..bar" but got "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar" 129 PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 130 PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 131 PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 132 132 PASS Parsing: <http://example.com////../..> against <about:blank> 133 133 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> … … 158 158 PASS Parsing: <http://www.google.com> against <about:blank> 159 159 PASS Parsing: <http://192.0x00A80001> against <about:blank> 160 FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml" 161 FAIL Parsing: <http://www/foo/%2E/html> against <about:blank> assert_equals: href expected "http://www/foo/html" but got "http://www/foo/%2E/html" 160 PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 161 PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 162 162 PASS Parsing: <http://user:pass@/> against <about:blank> 163 163 PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> -
trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt
r207795 r207803 131 131 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 132 132 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 133 FAIL Parsing: <http://example.com/foo/%2e> against <about:blank> assert_equals: href expected "http://example.com/foo/" but got "http://example.com/foo/%2e" 134 FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/.%2" but got "http://example.com/foo/%2e%2" 135 FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/..bar" but got "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar" 133 PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 134 PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 135 PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 136 136 PASS Parsing: <http://example.com////../..> against <about:blank> 137 137 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> … … 162 162 PASS Parsing: <http://www.google.com> against <about:blank> 163 163 PASS Parsing: <http://192.0x00A80001> against <about:blank> 164 FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml" 165 FAIL Parsing: <http://www/foo/%2E/html> against <about:blank> assert_equals: href expected "http://www/foo/html" but got "http://www/foo/%2E/html" 164 PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 165 PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 166 166 PASS Parsing: <http://user:pass@/> against <about:blank> 167 167 PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> -
trunk/Source/WebCore/ChangeLog
r207799 r207803 1 2016-10-24 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r207795. 4 5 Introduced API test failures on iOS and macOS. 6 7 Reverted changeset: 8 9 "URLParser should match old URL::parse with %2E in path" 10 https://bugs.webkit.org/show_bug.cgi?id=163929 11 http://trac.webkit.org/changeset/207795 12 1 13 2016-10-24 Yusuke Suzuki <utatane.tea@gmail.com> 2 14 -
trunk/Source/WebCore/platform/URLParser.cpp
r207795 r207803 892 892 } 893 893 894 static const char* dotASCIICode = "2e"; 895 896 template<typename CharacterType> 897 ALWAYS_INLINE bool URLParser::isPercentEncodedDot(CodePointIterator<CharacterType> c) 898 { 899 if (c.atEnd()) 900 return false; 901 if (*c != '%') 902 return false; 903 advance<CharacterType, ReportSyntaxViolation::No>(c); 904 if (c.atEnd()) 905 return false; 906 if (*c != dotASCIICode[0]) 907 return false; 908 advance<CharacterType, ReportSyntaxViolation::No>(c); 909 if (c.atEnd()) 910 return false; 911 return toASCIILower(*c) == dotASCIICode[1]; 912 } 913 894 914 template<typename CharacterType> 895 915 ALWAYS_INLINE bool URLParser::isSingleDotPathSegment(CodePointIterator<CharacterType> c) … … 901 921 return c.atEnd() || isSlashQuestionOrHash(*c); 902 922 } 923 if (*c != '%') 924 return false; 925 advance<CharacterType, ReportSyntaxViolation::No>(c); 926 if (c.atEnd() || *c != dotASCIICode[0]) 927 return false; 928 advance<CharacterType, ReportSyntaxViolation::No>(c); 929 if (c.atEnd()) 930 return false; 931 if (toASCIILower(*c) == dotASCIICode[1]) { 932 advance<CharacterType, ReportSyntaxViolation::No>(c); 933 return c.atEnd() || isSlashQuestionOrHash(*c); 934 } 903 935 return false; 904 936 } … … 913 945 return isSingleDotPathSegment(c); 914 946 } 947 if (*c != '%') 948 return false; 949 advance<CharacterType, ReportSyntaxViolation::No>(c); 950 if (c.atEnd() || *c != dotASCIICode[0]) 951 return false; 952 advance<CharacterType, ReportSyntaxViolation::No>(c); 953 if (c.atEnd()) 954 return false; 955 if (toASCIILower(*c) == dotASCIICode[1]) { 956 advance<CharacterType, ReportSyntaxViolation::No>(c); 957 return isSingleDotPathSegment(c); 958 } 915 959 return false; 916 960 } … … 920 964 { 921 965 ASSERT(isSingleDotPathSegment(c)); 922 advance(c); 923 if (!c.atEnd()) { 924 if (*c == '/' || *c == '\\') 925 advance(c); 926 else 927 ASSERT(*c == '?' || *c == '#'); 966 if (*c == '.') { 967 advance(c); 968 if (!c.atEnd()) { 969 if (*c == '/' || *c == '\\') 970 advance(c); 971 else 972 ASSERT(*c == '?' || *c == '#'); 973 } 974 } else { 975 ASSERT(*c == '%'); 976 advance(c); 977 ASSERT(*c == dotASCIICode[0]); 978 advance(c); 979 ASSERT(toASCIILower(*c) == dotASCIICode[1]); 980 advance(c); 981 if (!c.atEnd()) { 982 if (*c == '/' || *c == '\\') 983 advance(c); 984 else 985 ASSERT(*c == '?' || *c == '#'); 986 } 928 987 } 929 988 } … … 933 992 { 934 993 ASSERT(isDoubleDotPathSegment(c)); 935 advance(c); 994 if (*c == '.') 995 advance(c); 996 else { 997 ASSERT(*c == '%'); 998 advance(c); 999 ASSERT(*c == dotASCIICode[0]); 1000 advance(c); 1001 ASSERT(toASCIILower(*c) == dotASCIICode[1]); 1002 advance(c); 1003 } 936 1004 consumeSingleDotPathSegment(c); 937 1005 } … … 1654 1722 m_url.m_queryEnd = m_url.m_pathEnd; 1655 1723 state = State::Fragment; 1724 break; 1725 } 1726 if (UNLIKELY(isPercentEncodedDot(c))) { 1727 syntaxViolation(c); 1728 appendToASCIIBuffer('.'); 1729 ASSERT(*c == '%'); 1730 advance(c); 1731 ASSERT(*c == dotASCIICode[0]); 1732 advance(c); 1733 ASSERT(toASCIILower(*c) == dotASCIICode[1]); 1734 advance(c); 1656 1735 break; 1657 1736 } … … 2790 2869 bool URLParser::enabled() 2791 2870 { 2792 return true;2793 /*2794 2871 if (urlParserEnabled == URLParserEnabled::Undetermined) { 2795 2872 #if PLATFORM(MAC) … … 2802 2879 } 2803 2880 return urlParserEnabled == URLParserEnabled::Yes; 2804 */2805 2881 } 2806 2882 -
trunk/Tools/ChangeLog
r207795 r207803 1 2016-10-24 Ryan Haddad <ryanhaddad@apple.com> 2 3 Unreviewed, rolling out r207795. 4 5 Introduced API test failures on iOS and macOS. 6 7 Reverted changeset: 8 9 "URLParser should match old URL::parse with %2E in path" 10 https://bugs.webkit.org/show_bug.cgi?id=163929 11 http://trac.webkit.org/changeset/207795 12 1 13 2016-10-24 Alex Christensen <achristensen@webkit.org> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp
r207795 r207803 597 597 {"http", "", "", "127.0.0.1", 0, "/", "", "", "http://127.0.0.1/"}, 598 598 {"http", "", "", "127.0.0.01", 0, "/", "", "", "http://127.0.0.01/"}); 599 checkURL("http://example.com/path1/.%2e", {"http", "", "", "example.com", 0, "/path1/.%2e", "", "", "http://example.com/path1/.%2e"}); 600 checkURL("http://example.com/path1/.%2E", {"http", "", "", "example.com", 0, "/path1/.%2E", "", "", "http://example.com/path1/.%2E"}); 601 checkURL("http://example.com/path1/.%2E/", {"http", "", "", "example.com", 0, "/path1/.%2E/", "", "", "http://example.com/path1/.%2E/"}); 602 checkURL("http://example.com/path1/%2e.", {"http", "", "", "example.com", 0, "/path1/%2e.", "", "", "http://example.com/path1/%2e."}); 603 checkURL("http://example.com/path1/%2E%2e", {"http", "", "", "example.com", 0, "/path1/%2E%2e", "", "", "http://example.com/path1/%2E%2e"}); 604 checkURL("http://example.com/path1/%2e", {"http", "", "", "example.com", 0, "/path1/%2e", "", "", "http://example.com/path1/%2e"}); 605 checkURL("http://example.com/path1/%2E", {"http", "", "", "example.com", 0, "/path1/%2E", "", "", "http://example.com/path1/%2E"}); 606 checkURL("http://example.com/path1/%2E/", {"http", "", "", "example.com", 0, "/path1/%2E/", "", "", "http://example.com/path1/%2E/"}); 607 checkURL("http://example.com/path1/path2/%2e?query", {"http", "", "", "example.com", 0, "/path1/path2/%2e", "query", "", "http://example.com/path1/path2/%2e?query"}); 608 checkURL("http://example.com/path1/path2/%2e%2e?query", {"http", "", "", "example.com", 0, "/path1/path2/%2e%2e", "query", "", "http://example.com/path1/path2/%2e%2e?query"}); 609 checkURL("http://example.com/path1/path2/%2e#fragment", {"http", "", "", "example.com", 0, "/path1/path2/%2e", "", "fragment", "http://example.com/path1/path2/%2e#fragment"}); 610 checkURL("http://example.com/path1/path2/%2e%2e#fragment", {"http", "", "", "example.com", 0, "/path1/path2/%2e%2e", "", "fragment", "http://example.com/path1/path2/%2e%2e#fragment"}); 599 checkURLDifferences("http://example.com/path1/.%2e", 600 {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"}, 601 {"http", "", "", "example.com", 0, "/path1/.%2e", "", "", "http://example.com/path1/.%2e"}); 602 checkURLDifferences("http://example.com/path1/.%2E", 603 {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"}, 604 {"http", "", "", "example.com", 0, "/path1/.%2E", "", "", "http://example.com/path1/.%2E"}); 605 checkURLDifferences("http://example.com/path1/.%2E/", 606 {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"}, 607 {"http", "", "", "example.com", 0, "/path1/.%2E/", "", "", "http://example.com/path1/.%2E/"}); 608 checkURLDifferences("http://example.com/path1/%2e.", 609 {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"}, 610 {"http", "", "", "example.com", 0, "/path1/%2e.", "", "", "http://example.com/path1/%2e."}); 611 checkURLDifferences("http://example.com/path1/%2E%2e", 612 {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"}, 613 {"http", "", "", "example.com", 0, "/path1/%2E%2e", "", "", "http://example.com/path1/%2E%2e"}); 614 checkURLDifferences("http://example.com/path1/%2e", 615 {"http", "", "", "example.com", 0, "/path1/", "", "", "http://example.com/path1/"}, 616 {"http", "", "", "example.com", 0, "/path1/%2e", "", "", "http://example.com/path1/%2e"}); 617 checkURLDifferences("http://example.com/path1/%2E", 618 {"http", "", "", "example.com", 0, "/path1/", "", "", "http://example.com/path1/"}, 619 {"http", "", "", "example.com", 0, "/path1/%2E", "", "", "http://example.com/path1/%2E"}); 620 checkURLDifferences("http://example.com/path1/%2E/", 621 {"http", "", "", "example.com", 0, "/path1/", "", "", "http://example.com/path1/"}, 622 {"http", "", "", "example.com", 0, "/path1/%2E/", "", "", "http://example.com/path1/%2E/"}); 623 checkURLDifferences("http://example.com/path1/path2/%2e?query", 624 {"http", "", "", "example.com", 0, "/path1/path2/", "query", "", "http://example.com/path1/path2/?query"}, 625 {"http", "", "", "example.com", 0, "/path1/path2/%2e", "query", "", "http://example.com/path1/path2/%2e?query"}); 626 checkURLDifferences("http://example.com/path1/path2/%2e%2e?query", 627 {"http", "", "", "example.com", 0, "/path1/", "query", "", "http://example.com/path1/?query"}, 628 {"http", "", "", "example.com", 0, "/path1/path2/%2e%2e", "query", "", "http://example.com/path1/path2/%2e%2e?query"}); 629 checkURLDifferences("http://example.com/path1/path2/%2e#fragment", 630 {"http", "", "", "example.com", 0, "/path1/path2/", "", "fragment", "http://example.com/path1/path2/#fragment"}, 631 {"http", "", "", "example.com", 0, "/path1/path2/%2e", "", "fragment", "http://example.com/path1/path2/%2e#fragment"}); 632 checkURLDifferences("http://example.com/path1/path2/%2e%2e#fragment", 633 {"http", "", "", "example.com", 0, "/path1/", "", "fragment", "http://example.com/path1/#fragment"}, 634 {"http", "", "", "example.com", 0, "/path1/path2/%2e%2e", "", "fragment", "http://example.com/path1/path2/%2e%2e#fragment"}); 611 635 checkURLDifferences("file://[0:a:0:0:b:c:0:0]/path", 612 636 {"file", "", "", "[0:a::b:c:0:0]", 0, "/path", "", "", "file://[0:a::b:c:0:0]/path"}, … … 711 735 {"http", "", "", "192.168.0.1", 0, "/", "", "", "http://192.168.0.1/"}, 712 736 {"http", "", "", "0xc0.0250.01", 0, "/", "", "", "http://0xc0.0250.01/"}); 713 714 checkURL("http://host/path%2e.%2E", {"http", "", "", "host", 0, "/path%2e.%2E", "", "", "http://host/path%2e.%2E"}); 737 checkURLDifferences("http://host/path%2e.%2E", 738 {"http", "", "", "host", 0, "/path...", "", "", "http://host/path..."}, 739 {"http", "", "", "host", 0, "/path%2e.%2E", "", "", "http://host/path%2e.%2E"}); 715 740 716 741 checkRelativeURLDifferences(utf16String(u"http://foo:💩@example.com/bar"), "http://other.com/",
Note: See TracChangeset
for help on using the changeset viewer.