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 <matthew_han...@apple.com>
+ Merge r210361. rdar://problem/29870245
+
+ 2017-01-05 Chris Dumez <cdu...@apple.com>
+
+ 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 <matthew_han...@apple.com>
+
Merge r210284. rdar://problem/29865854
2017-01-04 Chris Dumez <cdu...@apple.com>
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 "a@b.b" is a valid email address.
PASS "a/b...@domain.com" is a valid email address.
PASS "{}@domain.com" is a valid email address.
-PASS "ddjk-s...@asl-.com" is a valid email address.
PASS "m*'!%@something.sa" is a valid email address.
PASS "tu!!7n7.ad##0!!!@company.ca" is a valid email address.
PASS "%@com.com" is a valid email address.
@@ -18,8 +17,6 @@
PASS ".wo...@example.com" is a valid email address.
PASS "wo.....@example.com" is a valid email address.
PASS "some...@do-ma-in.com" is a valid email address.
-PASS "some...@do-.com" is a valid email address.
-PASS "someb...@-.com" is a valid email address.
PASS "somebody@example" is a valid email address.
PASS "
a...@p.com
@@ -39,6 +36,8 @@
PASS " a...@p.com " is a valid email address. It was sanitized to "a...@p.com".
PASS " a...@p.com " is a valid email address. It was sanitized to "a...@p.com".
PASS "a...@p.com" is a valid email address. It was sanitized to "a...@p.com".
+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:em...@example.com" 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 "ddjk-s...@asl-.com" is a invalid email address.
+PASS "some...@do-.com" is a invalid email address.
+PASS "someb...@-.com" 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 "someth...@something.com" is a valid email address list.
PASS "someone@localhost.localdomain" is a valid email address list.
@@ -70,7 +74,6 @@
PASS "a@b.b" is a valid email address list.
PASS "a/b...@domain.com" is a valid email address list.
PASS "{}@domain.com" is a valid email address list.
-PASS "ddjk-s...@asl-.com" is a valid email address list.
PASS "m*'!%@something.sa" is a valid email address list.
PASS "tu!!7n7.ad##0!!!@company.ca" is a valid email address list.
PASS "%@com.com" is a valid email address list.
@@ -78,8 +81,6 @@
PASS ".wo...@example.com" is a valid email address list.
PASS "wo.....@example.com" is a valid email address list.
PASS "some...@do-ma-in.com" is a valid email address list.
-PASS "some...@do-.com" is a valid email address list.
-PASS "someb...@-.com" is a valid email address list.
PASS "somebody@example" is a valid email address list.
PASS " a...@p.com " is a valid email address list. It was sanitized to "a...@p.com".
PASS " a...@p.com " is a valid email address list. It was sanitized to "a...@p.com".
@@ -99,6 +100,8 @@
PASS " a...@p.com" is a valid email address list. It was sanitized to "a...@p.com".
PASS "a...@p.com " is a valid email address list. It was sanitized to "a...@p.com".
PASS " a...@p.com " is a valid email address list. It was sanitized to "a...@p.com".
+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:em...@example.com" 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 "ddjk-s...@asl-.com" is a invalid email address list.
+PASS "some...@do-.com" is a invalid email address list.
+PASS "someb...@-.com" 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 "some...@somewhere.com,j...@doe.com,a@b.c,a/b@c.c,ualla@ualla.127" is a valid email address list.
PASS "tu!!7n7.ad##0!!!@company.ca,F/s/f/a...@feo-re.com,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("a@b.b", "a@b.b", expectValid);
emailCheck("a/b...@domain.com", "a/b...@domain.com", expectValid);
emailCheck("{}@domain.com", "{}@domain.com", expectValid);
-emailCheck("ddjk-s...@asl-.com", "ddjk-s...@asl-.com", expectValid);
emailCheck("m*'!%@something.sa", "m*'!%@something.sa", expectValid);
emailCheck("tu!!7n7.ad##0!!!@company.ca", "tu!!7n7.ad##0!!!@company.ca", expectValid);
emailCheck("%@com.com", "%@com.com", expectValid);
@@ -41,8 +40,6 @@
emailCheck(".wo...@example.com", ".wo...@example.com", expectValid);
emailCheck("wo.....@example.com", "wo.....@example.com", expectValid);
emailCheck("some...@do-ma-in.com", "some...@do-ma-in.com", expectValid);
-emailCheck("some...@do-.com", "some...@do-.com", expectValid);
-emailCheck("someb...@-.com", "someb...@-.com", expectValid);
emailCheck("somebody@example", "somebody@example", expectValid);
emailCheck("\u00...@p.com\u000A", "a...@p.com", expectValid);
emailCheck("\u00...@p.com\u000D", "a...@p.com", expectValid);
@@ -56,6 +53,8 @@
emailCheck("\u00...@p.com\u0020", "a...@p.com", expectValid);
emailCheck("\u00...@p.com\u0009", "a...@p.com", expectValid);
emailCheck("\u00...@p.com\u000C", "a...@p.com", 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:em...@example.com", "invalid:em...@example.com", expectInvalid);
@@ -81,6 +80,11 @@
emailCheck("a\u0...@p.com", "a\u0...@p.com", expectInvalid);
emailCheck("a\u2...@p.com", "a\u2...@p.com", expectInvalid);
emailCheck("a\u3...@p.com", "a\u3...@p.com", expectInvalid);
+emailCheck("ddjk-s...@asl-.com", "ddjk-s...@asl-.com", expectInvalid); // Domain should end with a letter or a digit.
+emailCheck("some...@do-.com", "some...@do-.com", expectInvalid); // Domain should end with a letter or a digit.
+emailCheck("someb...@-.com", "someb...@-.com", 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("someth...@something.com", "someth...@something.com", expectValid, multiple);
@@ -89,7 +93,6 @@
emailCheck("a@b.b", "a@b.b", expectValid, multiple);
emailCheck("a/b...@domain.com", "a/b...@domain.com", expectValid, multiple);
emailCheck("{}@domain.com", "{}@domain.com", expectValid, multiple);
-emailCheck("ddjk-s...@asl-.com", "ddjk-s...@asl-.com", expectValid, multiple);
emailCheck("m*'!%@something.sa", "m*'!%@something.sa", expectValid, multiple);
emailCheck("tu!!7n7.ad##0!!!@company.ca", "tu!!7n7.ad##0!!!@company.ca", expectValid, multiple);
emailCheck("%@com.com", "%@com.com", expectValid, multiple);
@@ -97,8 +100,6 @@
emailCheck(".wo...@example.com", ".wo...@example.com", expectValid, multiple);
emailCheck("wo.....@example.com", "wo.....@example.com", expectValid, multiple);
emailCheck("some...@do-ma-in.com", "some...@do-ma-in.com", expectValid, multiple);
-emailCheck("some...@do-.com", "some...@do-.com", expectValid, multiple);
-emailCheck("someb...@-.com", "someb...@-.com", expectValid, multiple);
emailCheck("somebody@example", "somebody@example", expectValid, multiple);
emailCheck("\u00...@p.com\u0020", "a...@p.com", expectValid, multiple);
emailCheck("\u00...@p.com\u0009", "a...@p.com", expectValid, multiple);
@@ -112,6 +113,8 @@
emailCheck(" a...@p.com", "a...@p.com", expectValid, multiple);
emailCheck("a...@p.com ", "a...@p.com", expectValid, multiple);
emailCheck(" a...@p.com ", "a...@p.com", 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:em...@example.com", "invalid:em...@example.com", expectInvalid, multiple);
@@ -140,6 +143,11 @@
emailCheck("a\u0...@p.com", "a\u0...@p.com", expectInvalid, multiple);
emailCheck("a\u2...@p.com", "a\u2...@p.com", expectInvalid, multiple);
emailCheck("a\u3...@p.com", "a\u3...@p.com", expectInvalid, multiple);
+emailCheck("ddjk-s...@asl-.com", "ddjk-s...@asl-.com", expectInvalid, multiple); // Domain should end with a letter or a digit.
+emailCheck("some...@do-.com", "some...@do-.com", expectInvalid, multiple); // Domain should end with a letter or a digit.
+emailCheck("someb...@-.com", "someb...@-.com", 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("some...@somewhere.com,j...@doe.com,a@b.c,a/b@c.c,ualla@ualla.127", "some...@somewhere.com,j...@doe.com,a@b.c,a/b@c.c,ualla@ualla.127", 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 <matthew_han...@apple.com>
+ Merge r210361. rdar://problem/29870245
+
+ 2017-01-05 Chris Dumez <cdu...@apple.com>
+
+ 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 <matthew_han...@apple.com>
+
Merge r210360. rdar://problem/19595567
2017-01-05 Enrica Casucci <enr...@apple.com>
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 webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes