Title: [207805] trunk
Revision
207805
Author
achristen...@apple.com
Date
2016-10-24 21:40:23 -0700 (Mon, 24 Oct 2016)

Log Message

URLParser should match old URL::parse with %2E in path
https://bugs.webkit.org/show_bug.cgi?id=163929

Reviewed by Alexey Proskuryakov.

LayoutTests/imported/w3c:

* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* web-platform-tests/url/url-constructor-expected.txt:

Source/WebCore:

Covered by updated API tests, which show that URLParser now matches URL::parse in these cases.
Also covered by newly failing web platform tests, which were failing before URLParser was enabled.
If https://github.com/whatwg/url/issues/87 is resolved we can change behavior to match.

* platform/URLParser.cpp:
(WebCore::URLParser::isSingleDotPathSegment):
(WebCore::URLParser::isDoubleDotPathSegment):
(WebCore::URLParser::consumeSingleDotPathSegment):
(WebCore::URLParser::consumeDoubleDotPathSegment):
(WebCore::URLParser::parse):
(WebCore::URLParser::isPercentEncodedDot): Deleted.

Tools:

* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::TEST_F):

LayoutTests:

* fast/url/path-expected.txt:
* fast/url/standard-url-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (207804 => 207805)


--- trunk/LayoutTests/ChangeLog	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/LayoutTests/ChangeLog	2016-10-25 04:40:23 UTC (rev 207805)
@@ -1,3 +1,13 @@
+2016-10-24  Alex Christensen  <achristen...@webkit.org>
+
+        URLParser should match old URL::parse with %2E in path
+        https://bugs.webkit.org/show_bug.cgi?id=163929
+
+        Reviewed by Alexey Proskuryakov.
+
+        * fast/url/path-expected.txt:
+        * fast/url/standard-url-expected.txt:
+
 2016-10-24  Zalan Bujtas  <za...@apple.com>
 
         Do not update selection rect on dirty lineboxes.

Modified: trunk/LayoutTests/fast/url/path-expected.txt (207804 => 207805)


--- trunk/LayoutTests/fast/url/path-expected.txt	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/LayoutTests/fast/url/path-expected.txt	2016-10-25 04:40:23 UTC (rev 207805)
@@ -14,9 +14,9 @@
 PASS canonicalize('http://example.com/foo/bar/../ton/../../a') is 'http://example.com/a'
 PASS canonicalize('http://example.com/foo/../../..') is 'http://example.com/'
 PASS canonicalize('http://example.com/foo/../../../ton') is 'http://example.com/ton'
-PASS canonicalize('http://example.com/foo/%2e') is 'http://example.com/foo/'
-PASS canonicalize('http://example.com/foo/%2e%2') is 'http://example.com/foo/.%2'
-PASS canonicalize('http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar') is 'http://example.com/..bar'
+FAIL canonicalize('http://example.com/foo/%2e') should be http://example.com/foo/. Was http://example.com/foo/%2e.
+FAIL canonicalize('http://example.com/foo/%2e%2') should be http://example.com/foo/.%2. Was http://example.com/foo/%2e%2.
+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.
 PASS canonicalize('http://example.com////../..') is 'http://example.com//'
 PASS canonicalize('http://example.com/foo/bar//../..') is 'http://example.com/foo/'
 PASS canonicalize('http://example.com/foo/bar//..') is 'http://example.com/foo/bar/'

Modified: trunk/LayoutTests/fast/url/standard-url-expected.txt (207804 => 207805)


--- trunk/LayoutTests/fast/url/standard-url-expected.txt	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/LayoutTests/fast/url/standard-url-expected.txt	2016-10-25 04:40:23 UTC (rev 207805)
@@ -9,7 +9,7 @@
 PASS canonicalize('http://www.google.com') is 'http://www.google.com/'
 PASS canonicalize('http:////////user:@google.com:99?foo') is 'http://u...@google.com:99/?foo'
 PASS canonicalize('http://192.0x00A80001') is 'http://192.168.0.1/'
-PASS canonicalize('http://www/foo%2Ehtml') is 'http://www/foo.html'
+FAIL canonicalize('http://www/foo%2Ehtml') should be http://www/foo.html. Was http://www/foo%2Ehtml.
 PASS canonicalize('http://user:pass@/') is 'http://user:pass@/'
 PASS canonicalize('http://%25DOMAIN:foo...@foodomain.com/') is 'http://%25DOMAIN:foo...@foodomain.com/'
 PASS canonicalize('http:\\\\www.google.com\\foo') is 'http://www.google.com/foo'

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (207804 => 207805)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2016-10-25 04:40:23 UTC (rev 207805)
@@ -1,3 +1,14 @@
+2016-10-24  Alex Christensen  <achristen...@webkit.org>
+
+        URLParser should match old URL::parse with %2E in path
+        https://bugs.webkit.org/show_bug.cgi?id=163929
+
+        Reviewed by Alexey Proskuryakov.
+
+        * web-platform-tests/url/a-element-expected.txt:
+        * web-platform-tests/url/a-element-xhtml-expected.txt:
+        * web-platform-tests/url/url-constructor-expected.txt:
+
 2016-10-24  Ryan Haddad  <ryanhad...@apple.com>
 
         Unreviewed, rolling out r207795.

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt (207804 => 207805)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt	2016-10-25 04:40:23 UTC (rev 207805)
@@ -126,9 +126,9 @@
 PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+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"
+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"
+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"
 PASS Parsing: <http://example.com////../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
@@ -157,8 +157,8 @@
 PASS Parsing: <http://[www.google.com]/> against <about:blank> 
 PASS Parsing: <http://www.google.com> against <about:blank> 
 PASS Parsing: <http://192.0x00A80001> against <about:blank> 
-PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 
-PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml"
+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"
 PASS Parsing: <http://user:pass@/> against <about:blank> 
 PASS Parsing: <http://%25DOMAIN:foo...@foodomain.com/> against <about:blank> 
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt (207804 => 207805)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt	2016-10-25 04:40:23 UTC (rev 207805)
@@ -126,9 +126,9 @@
 PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+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"
+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"
+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"
 PASS Parsing: <http://example.com////../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
@@ -157,8 +157,8 @@
 PASS Parsing: <http://[www.google.com]/> against <about:blank> 
 PASS Parsing: <http://www.google.com> against <about:blank> 
 PASS Parsing: <http://192.0x00A80001> against <about:blank> 
-PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 
-PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml"
+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"
 PASS Parsing: <http://user:pass@/> against <about:blank> 
 PASS Parsing: <http://%25DOMAIN:foo...@foodomain.com/> against <about:blank> 
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt (207804 => 207805)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt	2016-10-25 04:40:23 UTC (rev 207805)
@@ -130,9 +130,9 @@
 PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 
-PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
+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"
+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"
+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"
 PASS Parsing: <http://example.com////../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
@@ -161,8 +161,8 @@
 PASS Parsing: <http://[www.google.com]/> against <about:blank> 
 PASS Parsing: <http://www.google.com> against <about:blank> 
 PASS Parsing: <http://192.0x00A80001> against <about:blank> 
-PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 
-PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
+FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml"
+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"
 PASS Parsing: <http://user:pass@/> against <about:blank> 
 PASS Parsing: <http://%25DOMAIN:foo...@foodomain.com/> against <about:blank> 
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 

Modified: trunk/Source/WebCore/ChangeLog (207804 => 207805)


--- trunk/Source/WebCore/ChangeLog	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/Source/WebCore/ChangeLog	2016-10-25 04:40:23 UTC (rev 207805)
@@ -1,3 +1,22 @@
+2016-10-24  Alex Christensen  <achristen...@webkit.org>
+
+        URLParser should match old URL::parse with %2E in path
+        https://bugs.webkit.org/show_bug.cgi?id=163929
+
+        Reviewed by Alexey Proskuryakov.
+
+        Covered by updated API tests, which show that URLParser now matches URL::parse in these cases.
+        Also covered by newly failing web platform tests, which were failing before URLParser was enabled.
+        If https://github.com/whatwg/url/issues/87 is resolved we can change behavior to match.
+
+        * platform/URLParser.cpp:
+        (WebCore::URLParser::isSingleDotPathSegment):
+        (WebCore::URLParser::isDoubleDotPathSegment):
+        (WebCore::URLParser::consumeSingleDotPathSegment):
+        (WebCore::URLParser::consumeDoubleDotPathSegment):
+        (WebCore::URLParser::parse):
+        (WebCore::URLParser::isPercentEncodedDot): Deleted.
+
 2016-10-24  Zalan Bujtas  <za...@apple.com>
 
         Do not update selection rect on dirty lineboxes.

Modified: trunk/Source/WebCore/platform/URLParser.cpp (207804 => 207805)


--- trunk/Source/WebCore/platform/URLParser.cpp	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/Source/WebCore/platform/URLParser.cpp	2016-10-25 04:40:23 UTC (rev 207805)
@@ -891,27 +891,7 @@
     ASSERT_NOT_REACHED();
 }
 
-static const char* dotASCIICode = "2e";
-
 template<typename CharacterType>
-ALWAYS_INLINE bool URLParser::isPercentEncodedDot(CodePointIterator<CharacterType> c)
-{
-    if (c.atEnd())
-        return false;
-    if (*c != '%')
-        return false;
-    advance<CharacterType, ReportSyntaxViolation::No>(c);
-    if (c.atEnd())
-        return false;
-    if (*c != dotASCIICode[0])
-        return false;
-    advance<CharacterType, ReportSyntaxViolation::No>(c);
-    if (c.atEnd())
-        return false;
-    return toASCIILower(*c) == dotASCIICode[1];
-}
-
-template<typename CharacterType>
 ALWAYS_INLINE bool URLParser::isSingleDotPathSegment(CodePointIterator<CharacterType> c)
 {
     if (c.atEnd())
@@ -920,18 +900,6 @@
         advance<CharacterType, ReportSyntaxViolation::No>(c);
         return c.atEnd() || isSlashQuestionOrHash(*c);
     }
-    if (*c != '%')
-        return false;
-    advance<CharacterType, ReportSyntaxViolation::No>(c);
-    if (c.atEnd() || *c != dotASCIICode[0])
-        return false;
-    advance<CharacterType, ReportSyntaxViolation::No>(c);
-    if (c.atEnd())
-        return false;
-    if (toASCIILower(*c) == dotASCIICode[1]) {
-        advance<CharacterType, ReportSyntaxViolation::No>(c);
-        return c.atEnd() || isSlashQuestionOrHash(*c);
-    }
     return false;
 }
 
@@ -944,18 +912,6 @@
         advance<CharacterType, ReportSyntaxViolation::No>(c);
         return isSingleDotPathSegment(c);
     }
-    if (*c != '%')
-        return false;
-    advance<CharacterType, ReportSyntaxViolation::No>(c);
-    if (c.atEnd() || *c != dotASCIICode[0])
-        return false;
-    advance<CharacterType, ReportSyntaxViolation::No>(c);
-    if (c.atEnd())
-        return false;
-    if (toASCIILower(*c) == dotASCIICode[1]) {
-        advance<CharacterType, ReportSyntaxViolation::No>(c);
-        return isSingleDotPathSegment(c);
-    }
     return false;
 }
 
@@ -963,27 +919,12 @@
 void URLParser::consumeSingleDotPathSegment(CodePointIterator<CharacterType>& c)
 {
     ASSERT(isSingleDotPathSegment(c));
-    if (*c == '.') {
-        advance(c);
-        if (!c.atEnd()) {
-            if (*c == '/' || *c == '\\')
-                advance(c);
-            else
-                ASSERT(*c == '?' || *c == '#');
-        }
-    } else {
-        ASSERT(*c == '%');
-        advance(c);
-        ASSERT(*c == dotASCIICode[0]);
-        advance(c);
-        ASSERT(toASCIILower(*c) == dotASCIICode[1]);
-        advance(c);
-        if (!c.atEnd()) {
-            if (*c == '/' || *c == '\\')
-                advance(c);
-            else
-                ASSERT(*c == '?' || *c == '#');
-        }
+    advance(c);
+    if (!c.atEnd()) {
+        if (*c == '/' || *c == '\\')
+            advance(c);
+        else
+            ASSERT(*c == '?' || *c == '#');
     }
 }
 
@@ -991,16 +932,7 @@
 void URLParser::consumeDoubleDotPathSegment(CodePointIterator<CharacterType>& c)
 {
     ASSERT(isDoubleDotPathSegment(c));
-    if (*c == '.')
-        advance(c);
-    else {
-        ASSERT(*c == '%');
-        advance(c);
-        ASSERT(*c == dotASCIICode[0]);
-        advance(c);
-        ASSERT(toASCIILower(*c) == dotASCIICode[1]);
-        advance(c);
-    }
+    advance(c);
     consumeSingleDotPathSegment(c);
 }
 
@@ -1723,17 +1655,6 @@
                 state = State::Fragment;
                 break;
             }
-            if (UNLIKELY(isPercentEncodedDot(c))) {
-                syntaxViolation(c);
-                appendToASCIIBuffer('.');
-                ASSERT(*c == '%');
-                advance(c);
-                ASSERT(*c == dotASCIICode[0]);
-                advance(c);
-                ASSERT(toASCIILower(*c) == dotASCIICode[1]);
-                advance(c);
-                break;
-            }
             utf8PercentEncode<isInDefaultEncodeSet>(c);
             ++c;
             break;

Modified: trunk/Tools/ChangeLog (207804 => 207805)


--- trunk/Tools/ChangeLog	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/Tools/ChangeLog	2016-10-25 04:40:23 UTC (rev 207805)
@@ -1,3 +1,13 @@
+2016-10-24  Alex Christensen  <achristen...@webkit.org>
+
+        URLParser should match old URL::parse with %2E in path
+        https://bugs.webkit.org/show_bug.cgi?id=163929
+
+        Reviewed by Alexey Proskuryakov.
+
+        * TestWebKitAPI/Tests/WebCore/URLParser.cpp:
+        (TestWebKitAPI::TEST_F):
+
 2016-10-24  Ryan Haddad  <ryanhad...@apple.com>
 
         Unreviewed, rolling out r207795.

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp (207804 => 207805)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp	2016-10-25 04:19:09 UTC (rev 207804)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp	2016-10-25 04:40:23 UTC (rev 207805)
@@ -596,42 +596,18 @@
     checkURLDifferences("http://127.0.0.01/",
         {"http", "", "", "127.0.0.1", 0, "/", "", "", "http://127.0.0.1/"},
         {"http", "", "", "127.0.0.01", 0, "/", "", "", "http://127.0.0.01/"});
-    checkURLDifferences("http://example.com/path1/.%2e",
-        {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"},
-        {"http", "", "", "example.com", 0, "/path1/.%2e", "", "", "http://example.com/path1/.%2e"});
-    checkURLDifferences("http://example.com/path1/.%2E",
-        {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"},
-        {"http", "", "", "example.com", 0, "/path1/.%2E", "", "", "http://example.com/path1/.%2E"});
-    checkURLDifferences("http://example.com/path1/.%2E/",
-        {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"},
-        {"http", "", "", "example.com", 0, "/path1/.%2E/", "", "", "http://example.com/path1/.%2E/"});
-    checkURLDifferences("http://example.com/path1/%2e.",
-        {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"},
-        {"http", "", "", "example.com", 0, "/path1/%2e.", "", "", "http://example.com/path1/%2e."});
-    checkURLDifferences("http://example.com/path1/%2E%2e",
-        {"http", "", "", "example.com", 0, "/", "", "", "http://example.com/"},
-        {"http", "", "", "example.com", 0, "/path1/%2E%2e", "", "", "http://example.com/path1/%2E%2e"});
-    checkURLDifferences("http://example.com/path1/%2e",
-        {"http", "", "", "example.com", 0, "/path1/", "", "", "http://example.com/path1/"},
-        {"http", "", "", "example.com", 0, "/path1/%2e", "", "", "http://example.com/path1/%2e"});
-    checkURLDifferences("http://example.com/path1/%2E",
-        {"http", "", "", "example.com", 0, "/path1/", "", "", "http://example.com/path1/"},
-        {"http", "", "", "example.com", 0, "/path1/%2E", "", "", "http://example.com/path1/%2E"});
-    checkURLDifferences("http://example.com/path1/%2E/",
-        {"http", "", "", "example.com", 0, "/path1/", "", "", "http://example.com/path1/"},
-        {"http", "", "", "example.com", 0, "/path1/%2E/", "", "", "http://example.com/path1/%2E/"});
-    checkURLDifferences("http://example.com/path1/path2/%2e?query",
-        {"http", "", "", "example.com", 0, "/path1/path2/", "query", "", "http://example.com/path1/path2/?query"},
-        {"http", "", "", "example.com", 0, "/path1/path2/%2e", "query", "", "http://example.com/path1/path2/%2e?query"});
-    checkURLDifferences("http://example.com/path1/path2/%2e%2e?query",
-        {"http", "", "", "example.com", 0, "/path1/", "query", "", "http://example.com/path1/?query"},
-        {"http", "", "", "example.com", 0, "/path1/path2/%2e%2e", "query", "", "http://example.com/path1/path2/%2e%2e?query"});
-    checkURLDifferences("http://example.com/path1/path2/%2e#fragment",
-        {"http", "", "", "example.com", 0, "/path1/path2/", "", "fragment", "http://example.com/path1/path2/#fragment"},
-        {"http", "", "", "example.com", 0, "/path1/path2/%2e", "", "fragment", "http://example.com/path1/path2/%2e#fragment"});
-    checkURLDifferences("http://example.com/path1/path2/%2e%2e#fragment",
-        {"http", "", "", "example.com", 0, "/path1/", "", "fragment", "http://example.com/path1/#fragment"},
-        {"http", "", "", "example.com", 0, "/path1/path2/%2e%2e", "", "fragment", "http://example.com/path1/path2/%2e%2e#fragment"});
+    checkURL("http://example.com/path1/.%2e", {"http", "", "", "example.com", 0, "/path1/.%2e", "", "", "http://example.com/path1/.%2e"});
+    checkURL("http://example.com/path1/.%2E", {"http", "", "", "example.com", 0, "/path1/.%2E", "", "", "http://example.com/path1/.%2E"});
+    checkURL("http://example.com/path1/.%2E/", {"http", "", "", "example.com", 0, "/path1/.%2E/", "", "", "http://example.com/path1/.%2E/"});
+    checkURL("http://example.com/path1/%2e.", {"http", "", "", "example.com", 0, "/path1/%2e.", "", "", "http://example.com/path1/%2e."});
+    checkURL("http://example.com/path1/%2E%2e", {"http", "", "", "example.com", 0, "/path1/%2E%2e", "", "", "http://example.com/path1/%2E%2e"});
+    checkURL("http://example.com/path1/%2e", {"http", "", "", "example.com", 0, "/path1/%2e", "", "", "http://example.com/path1/%2e"});
+    checkURL("http://example.com/path1/%2E", {"http", "", "", "example.com", 0, "/path1/%2E", "", "", "http://example.com/path1/%2E"});
+    checkURL("http://example.com/path1/%2E/", {"http", "", "", "example.com", 0, "/path1/%2E/", "", "", "http://example.com/path1/%2E/"});
+    checkURL("http://example.com/path1/path2/%2e?query", {"http", "", "", "example.com", 0, "/path1/path2/%2e", "query", "", "http://example.com/path1/path2/%2e?query"});
+    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"});
+    checkURL("http://example.com/path1/path2/%2e#fragment", {"http", "", "", "example.com", 0, "/path1/path2/%2e", "", "fragment", "http://example.com/path1/path2/%2e#fragment"});
+    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"});
     checkURLDifferences("file://[0:a:0:0:b:c:0:0]/path",
         {"file", "", "", "[0:a::b:c:0:0]", 0, "/path", "", "", "file://[0:a::b:c:0:0]/path"},
         {"file", "", "", "[0:a:0:0:b:c:0:0]", 0, "/path", "", "", "file://[0:a:0:0:b:c:0:0]/path"});
@@ -734,10 +710,9 @@
     checkURLDifferences(utf16String(u"http://0Xc0.0250.01"),
         {"http", "", "", "192.168.0.1", 0, "/", "", "", "http://192.168.0.1/"},
         {"http", "", "", "0xc0.0250.01", 0, "/", "", "", "http://0xc0.0250.01/"});
-    checkURLDifferences("http://host/path%2e.%2E",
-        {"http", "", "", "host", 0, "/path...", "", "", "http://host/path..."},
-        {"http", "", "", "host", 0, "/path%2e.%2E", "", "", "http://host/path%2e.%2E"});
 
+    checkURL("http://host/path%2e.%2E", {"http", "", "", "host", 0, "/path%2e.%2E", "", "", "http://host/path%2e.%2E"});
+
     checkRelativeURLDifferences(utf16String(u"http://foo:💩@example.com/bar"), "http://other.com/",
         {"http", "foo", utf16String(u"💩"), "example.com", 0, "/bar", "", "", "http://foo:%f0%9f%92...@example.com/bar"},
         {"", "", "", "", 0, "", "", "", utf16String(u"http://foo:💩@example.com/bar")}, testTabsValueForSurrogatePairs);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to