2009-12-07 Kent Tamura <tkent@chromium.org>
authoreric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 7 Dec 2009 22:50:15 +0000 (22:50 +0000)
committereric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 7 Dec 2009 22:50:15 +0000 (22:50 +0000)
        Reviewed by Darin Adler.

        Some changes to ValidityState-typeMismatch-url.html.
        https://bugs.webkit.org/show_bug.cgi?id=29913

        - Add more test cases
          Username, IPv6 address, mailto:, file:, tel:, fragment, and IDN.
        - Handle difference between KURL and KURLGoogle

        * fast/forms/ValidityState-typeMismatch-url-expected.txt:
        * fast/forms/script-tests/ValidityState-typeMismatch-url.js:
2009-12-07  Kent Tamura  <tkent@chromium.org>

        Reviewed by Darin Adler.

        Fix a bug that KURL rejects a host name which has an IPv4 address
        inside an IPv6 form like [::127.0.0.1].
        https://bugs.webkit.org/show_bug.cgi?id=29913

        * platform/KURL.cpp:
        (WebCore::characterClassTable): Add IPv6Char to '.'.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@51799 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/forms/ValidityState-typeMismatch-url-expected.txt
LayoutTests/fast/forms/script-tests/ValidityState-typeMismatch-url.js
WebCore/ChangeLog
WebCore/platform/KURL.cpp

index c9734b9bca4b095bf72fd10b74f84c82cab53798..e0e48dfc599b294fde3a1c6756670a9a3cc8386e 100644 (file)
@@ -1,3 +1,17 @@
+2009-12-07  Kent Tamura  <tkent@chromium.org>
+
+        Reviewed by Darin Adler.
+
+        Some changes to ValidityState-typeMismatch-url.html.
+        https://bugs.webkit.org/show_bug.cgi?id=29913
+
+        - Add more test cases
+          Username, IPv6 address, mailto:, file:, tel:, fragment, and IDN.
+        - Handle difference between KURL and KURLGoogle
+
+        * fast/forms/ValidityState-typeMismatch-url-expected.txt:
+        * fast/forms/script-tests/ValidityState-typeMismatch-url.js:
+
 2009-12-07  Darin Fisher  <darin@chromium.org>
 
         Reviewed by Darin Adler.
index e27c6c2c76027c80a18277917f1705ef8bcf1a15..56fde0119ea867448970d13d34982b14d365ba6c 100644 (file)
@@ -4,28 +4,42 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS http://www.google.com is a correct valid url.
+PASS http://foo:bar@www.google.com:80 is a correct valid url.
 PASS http://localhost is a correct valid url.
 PASS http://127.0.0.1 is a correct valid url.
+PASS http://[0000:0000:0000:0000:0000:0000:7f00:0001]/ is a correct valid url.
+PASS http://[0000:0000:0000:0000:0000:0000:127.0.0.1]/ is a correct valid url.
+PASS http://[::7f00:0001]/ is a correct valid url.
+PASS http://[1::2:3]/ is a correct valid url.
+PASS http://[0000:0::ffff:10.0.0.1]/ is a correct valid url.
 PASS http://a is a correct valid url.
 PASS http://www.google.com/search?rls=en&q=WebKit&ie=UTF-8&oe=UTF-8 is a correct valid url.
 PASS ftp://ftp.myhost.com is a correct valid url.
 PASS ssh://ssh.myhost.com is a correct valid url.
+PASS mailto:tkent@chromium.org is a correct valid url.
+PASS mailto:tkent@chromium.org?body=hello is a correct valid url.
+PASS file:///Users/tkent/.zshrc is a correct valid url.
+PASS file:///C:/human.sys is a correct valid url.
+PASS tel:+1-800-12345;ext=9999 is a correct valid url.
+PASS tel:03(1234)5678 is a correct valid url.
 PASS somescheme://ssh.myhost.com is a correct valid url.
 PASS http://a/\/''*<>/ is a correct valid url.
 PASS http://a/dfs/kds@sds is a correct valid url.
 PASS http://a.a:1/search?a&b is a correct valid url.
+PASS http://www.google.com/#top is a correct valid url.
+PASS http://テスト。jp/パス?名前=値 is a correct valid url.
 PASS www.google.com is a correct invalid url.
 PASS 127.0.0.1 is a correct invalid url.
 PASS .com is a correct invalid url.
-PASS http://www.g**gle.com is a correct invalid url.
 PASS http://www.google.com:aaaa is a correct invalid url.
-PASS http:// www.google.com is a correct invalid url.
-PASS http://www .google.com is a correct invalid url.
-PASS http://www.&#10;google.&#13;com is a correct invalid url.
 PASS :// is a correct invalid url.
 PASS /http://www.google.com is a correct invalid url.
 PASS ----ftp://a is a correct invalid url.
 PASS scheme//a is a correct invalid url.
+PASS http://[v8.:::]/ is a correct invalid url.
+PASS http:// www.google.com is a correct invalid url.
+PASS http://www .google.com is a correct invalid url.
+PASS http://www.&#10;google.&#13;com is a correct invalid url.
 PASS http://host+ is a correct invalid url.
 PASS http://myurl! is a correct invalid url.
 PASS successfullyParsed is true
index 2efd2b6acac60836713d220b11fe6689324ee175..040cd4f8a5f6b2249adc72d70f3ba8c3228ded6a 100644 (file)
@@ -11,36 +11,70 @@ function check(value, mismatchExpected) {
         testFailed(resultText);
 }
 
+function expectValid(value) {
+    check(value, false);
+}
+
+function expectInvalid(value) {
+    check(value, true);
+}
+
 var i = document.createElement('input');
 i.type = 'url';
 
 // Valid values
-check('http://www.google.com', false);
-check('http://localhost', false);
-check('http://127.0.0.1', false);
-check('http://a', false);
-check('http://www.google.com/search?rls=en&q=WebKit&ie=UTF-8&oe=UTF-8', false);
-check('ftp://ftp.myhost.com', false);
-check('ssh://ssh.myhost.com', false);
-check('somescheme://ssh.myhost.com', false);
-check('http://a/\\\/\'\'*<>/', false);
-check('http://a/dfs/\kds@sds', false);
-check('http://a.a:1/search?a&b', false);
+expectValid('http://www.google.com');
+expectValid('http://foo:bar@www.google.com:80');
+expectValid('http://localhost');
+expectValid('http://127.0.0.1');
+expectValid('http://[0000:0000:0000:0000:0000:0000:7f00:0001]/');
+expectValid('http://[0000:0000:0000:0000:0000:0000:127.0.0.1]/');
+expectValid('http://[::7f00:0001]/');
+expectValid('http://[1::2:3]/');
+expectValid('http://[0000:0::ffff:10.0.0.1]/');
+expectValid('http://a');
+expectValid('http://www.google.com/search?rls=en&q=WebKit&ie=UTF-8&oe=UTF-8');
+expectValid('ftp://ftp.myhost.com');
+expectValid('ssh://ssh.myhost.com');
+expectValid('mailto:tkent@chromium.org');
+expectValid('mailto:tkent@chromium.org?body=hello');
+expectValid('file:///Users/tkent/.zshrc');
+expectValid('file:///C:/human.sys');
+expectValid('tel:+1-800-12345;ext=9999');
+expectValid('tel:03(1234)5678');
+expectValid('somescheme://ssh.myhost.com');
+expectValid('http://a/\\\/\'\'*<>/');
+expectValid('http://a/dfs/\kds@sds');
+expectValid('http://a.a:1/search?a&b');
+expectValid('http://www.google.com/#top');
+expectValid('http://\u30C6\u30B9\u30C8\u3002jp/\u30D1\u30B9?\u540D\u524D=\u5024');
 
 // Invalid values
-check('www.google.com', true);
-check('127.0.0.1', true);
-check('.com', true);
-check('http://www.g**gle.com', true);
-check('http://www.google.com:aaaa', true);
-check('http:// www.google.com', true);
-check('http://www .google.com', true);
-check('http://www.&#10;google.&#13;com', true);
-check('://', true);
-check('/http://www.google.com', true);
-check('----ftp://a', true);
-check('scheme//a', true);
-check('http://host+', true);
-check('http://myurl!', true);
+expectInvalid('www.google.com');
+expectInvalid('127.0.0.1');
+expectInvalid('.com');
+expectInvalid('http://www.google.com:aaaa');
+expectInvalid('://');
+expectInvalid('/http://www.google.com');
+expectInvalid('----ftp://a');
+expectInvalid('scheme//a');
+expectInvalid('http://[v8.:::]/');
+
+// KURL's host name restriction is stricter than RFC 3986. KURLGoogle is not.
+i.value = 'http://www.g**gle.com'
+var strictHost = i.validity.typeMismatch;
+if (strictHost) {
+    expectInvalid('http:// www.google.com');
+    expectInvalid('http://www .google.com');
+    expectInvalid('http://www.&#10;google.&#13;com');
+    expectInvalid('http://host+');
+    expectInvalid('http://myurl!');
+} else {
+    expectValid('http:// www.google.com');
+    expectValid('http://www .google.com');
+    expectValid('http://www.&#10;google.&#13;com');
+    expectValid('http://host+');
+    expectValid('http://myurl!');
+}
 
 var successfullyParsed = true;
index b5cb2c92eeb7397dcddb49232b63e00e17dc7ff2..b42b1c24eb8264c783cf8644b13205ea387137fa 100644 (file)
@@ -1,3 +1,14 @@
+2009-12-07  Kent Tamura  <tkent@chromium.org>
+
+        Reviewed by Darin Adler.
+
+        Fix a bug that KURL rejects a host name which has an IPv4 address
+        inside an IPv6 form like [::127.0.0.1].
+        https://bugs.webkit.org/show_bug.cgi?id=29913
+
+        * platform/KURL.cpp:
+        (WebCore::characterClassTable): Add IPv6Char to '.'.
+
 2009-12-07  Brady Eidson  <beidson@apple.com>
 
         Reviewed by Sam Weinig.
index 12e34bd8efc71b61a52d528dfddef9bb8622d6dd..a8f79697df123c25713eb81e744a1e00d696c4ba 100644 (file)
@@ -102,7 +102,7 @@ static const unsigned char characterClassTable[256] = {
     /* 42  * */ UserInfoChar,    /* 43  + */ SchemeChar | UserInfoChar,
     /* 44  , */ UserInfoChar,
     /* 45  - */ SchemeChar | UserInfoChar | HostnameChar,
-    /* 46  . */ SchemeChar | UserInfoChar | HostnameChar,
+    /* 46  . */ SchemeChar | UserInfoChar | HostnameChar | IPv6Char,
     /* 47  / */ PathSegmentEndChar,
     /* 48  0 */ SchemeChar | UserInfoChar | HostnameChar | IPv6Char, 
     /* 49  1 */ SchemeChar | UserInfoChar | HostnameChar | IPv6Char,