Log Message
Merge r210361. rdar://problem/29870245
Modified Paths
- branches/safari-603-branch/LayoutTests/ChangeLog
- branches/safari-603-branch/LayoutTests/fast/forms/ValidityState-typeMismatch-email-expected.txt
- branches/safari-603-branch/LayoutTests/fast/forms/resources/ValidityState-typeMismatch-email.js
- branches/safari-603-branch/Source/WebCore/ChangeLog
- branches/safari-603-branch/Source/WebCore/html/EmailInputType.cpp
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
