Title: [210394] branches/safari-603-branch

Diff

Modified: branches/safari-603-branch/LayoutTests/ChangeLog (210393 => 210394)


--- branches/safari-603-branch/LayoutTests/ChangeLog	2017-01-05 23:49:47 UTC (rev 210393)
+++ branches/safari-603-branch/LayoutTests/ChangeLog	2017-01-05 23:49:52 UTC (rev 210394)
@@ -1,5 +1,22 @@
 2017-01-05  Matthew Hanson  <[email protected]>
 
+        Merge r210361. rdar://problem/29870245
+
+    2017-01-05  Chris Dumez  <[email protected]>
+
+            Form validation: Align email validation with the latest HTML specification
+            https://bugs.webkit.org/show_bug.cgi?id=166697
+            <rdar://problem/29870245>
+
+            Reviewed by Alex Christensen.
+
+            Extended / updated existing layout test to cover behavior changes.
+
+            * fast/forms/ValidityState-typeMismatch-email-expected.txt:
+            * fast/forms/resources/ValidityState-typeMismatch-email.js:
+
+2017-01-05  Matthew Hanson  <[email protected]>
+
         Merge r210284. rdar://problem/29865854
 
     2017-01-04  Chris Dumez  <[email protected]>

Modified: branches/safari-603-branch/LayoutTests/fast/forms/ValidityState-typeMismatch-email-expected.txt (210393 => 210394)


--- branches/safari-603-branch/LayoutTests/fast/forms/ValidityState-typeMismatch-email-expected.txt	2017-01-05 23:49:47 UTC (rev 210393)
+++ branches/safari-603-branch/LayoutTests/fast/forms/ValidityState-typeMismatch-email-expected.txt	2017-01-05 23:49:52 UTC (rev 210394)
@@ -10,7 +10,6 @@
 PASS "[email protected]" is a valid email address. 
 PASS "a/[email protected]" is a valid email address. 
 PASS "{}@domain.com" is a valid email address. 
-PASS "[email protected]" is a valid email address. 
 PASS "m*'!%@something.sa" is a valid email address. 
 PASS "tu!!7n7.ad##[email protected]" is a valid email address. 
 PASS "%@com.com" is a valid email address. 
@@ -18,8 +17,6 @@
 PASS "[email protected]" is a valid email address. 
 PASS "[email protected]" is a valid email address. 
 PASS "[email protected]" is a valid email address. 
-PASS "[email protected]" is a valid email address. 
-PASS "[email protected]" is a valid email address. 
 PASS "somebody@example" is a valid email address. 
 PASS "
 [email protected]
@@ -39,6 +36,8 @@
 PASS " [email protected] " is a valid email address. It was sanitized to "[email protected]".
 PASS "	[email protected]	" is a valid email address. It was sanitized to "[email protected]".
 PASS "[email protected]" is a valid email address. It was sanitized to "[email protected]".
+PASS "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...@p.com" is a valid email address. 
+PASS "a@ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" is a valid email address. 
 Invalid single addresses when 'multiple' attribute is not set.
 PASS "invalid:[email protected]" is a invalid email address. 
 PASS "@somewhere.com" is a invalid email address. 
@@ -63,6 +62,11 @@
 PASS "a@p.com" is a invalid email address. 
 PASS "a @p.com" is a invalid email address. 
 PASS "a @p.com" is a invalid email address. 
+PASS "[email protected]" is a invalid email address. 
+PASS "[email protected]" is a invalid email address. 
+PASS "[email protected]" is a invalid email address. 
+PASS "a...@pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.com" is a invalid email address. 
+PASS "a@p.cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" is a invalid email address. 
 Valid single addresses when 'multiple' attribute is set.
 PASS "[email protected]" is a valid email address list. 
 PASS "[email protected]" is a valid email address list. 
@@ -70,7 +74,6 @@
 PASS "[email protected]" is a valid email address list. 
 PASS "a/[email protected]" is a valid email address list. 
 PASS "{}@domain.com" is a valid email address list. 
-PASS "[email protected]" is a valid email address list. 
 PASS "m*'!%@something.sa" is a valid email address list. 
 PASS "tu!!7n7.ad##[email protected]" is a valid email address list. 
 PASS "%@com.com" is a valid email address list. 
@@ -78,8 +81,6 @@
 PASS "[email protected]" is a valid email address list. 
 PASS "[email protected]" is a valid email address list. 
 PASS "[email protected]" is a valid email address list. 
-PASS "[email protected]" is a valid email address list. 
-PASS "[email protected]" is a valid email address list. 
 PASS "somebody@example" is a valid email address list. 
 PASS " [email protected] " is a valid email address list. It was sanitized to "[email protected]".
 PASS "	[email protected]	" is a valid email address list. It was sanitized to "[email protected]".
@@ -99,6 +100,8 @@
 PASS " [email protected]" is a valid email address list. It was sanitized to "[email protected]".
 PASS "[email protected] " is a valid email address list. It was sanitized to "[email protected]".
 PASS " [email protected] " is a valid email address list. It was sanitized to "[email protected]".
+PASS "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...@p.com" is a valid email address list. 
+PASS "a@ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" is a valid email address list. 
 Invalid single addresses when 'multiple' attribute is set.
 PASS "invalid:[email protected]" is a invalid email address list. 
 PASS "@somewhere.com" is a invalid email address list. 
@@ -126,6 +129,11 @@
 PASS "a@p.com" is a invalid email address list. 
 PASS "a @p.com" is a invalid email address list. 
 PASS "a @p.com" is a invalid email address list. 
+PASS "[email protected]" is a invalid email address list. 
+PASS "[email protected]" is a invalid email address list. 
+PASS "[email protected]" is a invalid email address list. 
+PASS "a...@pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.com" is a invalid email address list. 
+PASS "a@p.cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" is a invalid email address list. 
 Valid multiple addresses when 'multiple' attribute is set.
 PASS "[email protected],[email protected],[email protected],a/[email protected],[email protected]" is a valid email address list. 
 PASS "tu!!7n7.ad##[email protected],F/s/f/[email protected],m*'@a.b" is a valid email address list. 

Modified: branches/safari-603-branch/LayoutTests/fast/forms/resources/ValidityState-typeMismatch-email.js (210393 => 210394)


--- branches/safari-603-branch/LayoutTests/fast/forms/resources/ValidityState-typeMismatch-email.js	2017-01-05 23:49:47 UTC (rev 210393)
+++ branches/safari-603-branch/LayoutTests/fast/forms/resources/ValidityState-typeMismatch-email.js	2017-01-05 23:49:52 UTC (rev 210394)
@@ -33,7 +33,6 @@
 emailCheck("[email protected]", "[email protected]", expectValid);
 emailCheck("a/[email protected]", "a/[email protected]", expectValid);
 emailCheck("{}@domain.com", "{}@domain.com", expectValid);
-emailCheck("[email protected]", "[email protected]", expectValid);
 emailCheck("m*'!%@something.sa", "m*'!%@something.sa", expectValid);
 emailCheck("tu!!7n7.ad##[email protected]", "tu!!7n7.ad##[email protected]", expectValid);
 emailCheck("%@com.com", "%@com.com", expectValid);
@@ -41,8 +40,6 @@
 emailCheck("[email protected]", "[email protected]", expectValid);
 emailCheck("[email protected]", "[email protected]", expectValid);
 emailCheck("[email protected]", "[email protected]", expectValid);
-emailCheck("[email protected]", "[email protected]", expectValid);
-emailCheck("[email protected]", "[email protected]", expectValid);
 emailCheck("somebody@example", "somebody@example", expectValid);
 emailCheck("\[email protected]\u000A", "[email protected]", expectValid);
 emailCheck("\[email protected]\u000D", "[email protected]", expectValid);
@@ -56,6 +53,8 @@
 emailCheck("\[email protected]\u0020", "[email protected]", expectValid);
 emailCheck("\[email protected]\u0009", "[email protected]", expectValid);
 emailCheck("\[email protected]\u000C", "[email protected]", expectValid);
+emailCheck("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...@p.com", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...@p.com", expectValid); // 64 characters in left part.
+emailCheck("a@ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", "a@ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", expectValid); // Labels with 63 characters.
 
 debug("Invalid single addresses when 'multiple' attribute is not set.");
 emailCheck("invalid:[email protected]", "invalid:[email protected]", expectInvalid);
@@ -81,6 +80,11 @@
 emailCheck("a\[email protected]", "a\[email protected]", expectInvalid);
 emailCheck("a\[email protected]", "a\[email protected]", expectInvalid);
 emailCheck("a\[email protected]", "a\[email protected]", expectInvalid);
+emailCheck("[email protected]", "[email protected]", expectInvalid); // Domain should end with a letter or a digit.
+emailCheck("[email protected]", "[email protected]", expectInvalid); // Domain should end with a letter or a digit.
+emailCheck("[email protected]", "[email protected]", expectInvalid); // Domain should start with a letter or a digit.
+emailCheck("a...@pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.com", "a...@pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.com", expectInvalid); // Label with 64 characters.
+emailCheck("a@p.cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", "a@p.cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", expectInvalid); // Label with 64 characters.
 
 debug("Valid single addresses when 'multiple' attribute is set.");
 emailCheck("[email protected]", "[email protected]", expectValid, multiple);
@@ -89,7 +93,6 @@
 emailCheck("[email protected]", "[email protected]", expectValid, multiple);
 emailCheck("a/[email protected]", "a/[email protected]", expectValid, multiple);
 emailCheck("{}@domain.com", "{}@domain.com", expectValid, multiple);
-emailCheck("[email protected]", "[email protected]", expectValid, multiple);
 emailCheck("m*'!%@something.sa", "m*'!%@something.sa", expectValid, multiple);
 emailCheck("tu!!7n7.ad##[email protected]", "tu!!7n7.ad##[email protected]", expectValid, multiple);
 emailCheck("%@com.com", "%@com.com", expectValid, multiple);
@@ -97,8 +100,6 @@
 emailCheck("[email protected]", "[email protected]", expectValid, multiple);
 emailCheck("[email protected]", "[email protected]", expectValid, multiple);
 emailCheck("[email protected]", "[email protected]", expectValid, multiple);
-emailCheck("[email protected]", "[email protected]", expectValid, multiple);
-emailCheck("[email protected]", "[email protected]", expectValid, multiple);
 emailCheck("somebody@example", "somebody@example", expectValid, multiple);
 emailCheck("\[email protected]\u0020", "[email protected]", expectValid, multiple);
 emailCheck("\[email protected]\u0009", "[email protected]", expectValid, multiple);
@@ -112,6 +113,8 @@
 emailCheck(" [email protected]", "[email protected]", expectValid, multiple);
 emailCheck("[email protected] ", "[email protected]", expectValid, multiple);
 emailCheck(" [email protected] ", "[email protected]", expectValid, multiple);
+emailCheck("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...@p.com", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...@p.com", expectValid, multiple); // 64 characters in left part.
+emailCheck("a@ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", "a@ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", expectValid, multiple); // Labels with 63 characters.
 
 debug("Invalid single addresses when 'multiple' attribute is set.");
 emailCheck("invalid:[email protected]", "invalid:[email protected]", expectInvalid, multiple);
@@ -140,6 +143,11 @@
 emailCheck("a\[email protected]", "a\[email protected]", expectInvalid, multiple);
 emailCheck("a\[email protected]", "a\[email protected]", expectInvalid, multiple);
 emailCheck("a\[email protected]", "a\[email protected]", expectInvalid, multiple);
+emailCheck("[email protected]", "[email protected]", expectInvalid, multiple); // Domain should end with a letter or a digit.
+emailCheck("[email protected]", "[email protected]", expectInvalid, multiple); // Domain should end with a letter or a digit.
+emailCheck("[email protected]", "[email protected]", expectInvalid, multiple); // Domain should start with a letter or a digit.
+emailCheck("a...@pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.com", "a...@pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp.com", expectInvalid, multiple); // Label with 64 characters.
+emailCheck("a@p.cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", "a@p.cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", expectInvalid, multiple); // Label with 64 characters.
 
 debug("Valid multiple addresses when 'multiple' attribute is set.");
 emailCheck("[email protected],[email protected],[email protected],a/[email protected],[email protected]", "[email protected],[email protected],[email protected],a/[email protected],[email protected]", expectValid, multiple);

Modified: branches/safari-603-branch/Source/WebCore/ChangeLog (210393 => 210394)


--- branches/safari-603-branch/Source/WebCore/ChangeLog	2017-01-05 23:49:47 UTC (rev 210393)
+++ branches/safari-603-branch/Source/WebCore/ChangeLog	2017-01-05 23:49:52 UTC (rev 210394)
@@ -1,5 +1,28 @@
 2017-01-05  Matthew Hanson  <[email protected]>
 
+        Merge r210361. rdar://problem/29870245
+
+    2017-01-05  Chris Dumez  <[email protected]>
+
+            Form validation: Align email validation with the latest HTML specification
+            https://bugs.webkit.org/show_bug.cgi?id=166697
+            <rdar://problem/29870245>
+
+            Reviewed by Alex Christensen.
+
+            Align email validation with the latest HTML specification:
+            - https://html.spec.whatwg.org/#valid-e-mail-address
+
+            It particular, the following changes were made:
+            - The first and last character of the domain now needs to be a letter or a digit
+            - Parts of the domain can only be 63 characters in length
+
+            No new tests, extended existing test.
+
+            * html/EmailInputType.cpp:
+
+2017-01-05  Matthew Hanson  <[email protected]>
+
         Merge r210360. rdar://problem/19595567
 
     2017-01-05  Enrica Casucci  <[email protected]>

Modified: branches/safari-603-branch/Source/WebCore/html/EmailInputType.cpp (210393 => 210394)


--- branches/safari-603-branch/Source/WebCore/html/EmailInputType.cpp	2017-01-05 23:49:47 UTC (rev 210393)
+++ branches/safari-603-branch/Source/WebCore/html/EmailInputType.cpp	2017-01-05 23:49:52 UTC (rev 210394)
@@ -34,10 +34,8 @@
 
 namespace WebCore {
 
-static const char emailPattern[] =
-    "[a-z0-9!#$%&'*+/=?^_`{|}~.-]+" // local part
-    "@"
-    "[a-z0-9-]+(\\.[a-z0-9-]+)*"; // domain part
+// From https://html.spec.whatwg.org/#valid-e-mail-address.
+static const char emailPattern[] = "^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$";
 
 static bool isValidEmailAddress(const String& address)
 {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to