Changeset 89915 in webkit
- Timestamp:
- Jun 28, 2011 2:46:08 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r89914 r89915 1 2011-06-28 Kentaro Hara <haraken@google.com> 2 3 Reviewed by Kent Tamura. 4 5 Allow spaces between e-mail addresses in 'email' input type. 6 https://bugs.webkit.org/show_bug.cgi?id=55987 7 8 Allowed spaces between e-mail addresses in 'email' input type, 9 e.g. ' a@p.com , b@p.com ' is a valid value. Implemented the 10 value sanitization algorithm for an e-mail value. Added more unit 11 tests that check the e-mail value parser. 12 13 * fast/forms/ValidityState-typeMismatch-email-expected.txt: 14 * fast/forms/resources/ValidityState-typeMismatch-email.js: 15 1 16 2011-06-28 Csaba Osztrogonác <ossy@webkit.org> 2 17 -
trunk/LayoutTests/fast/forms/ValidityState-typeMismatch-email-expected.txt
r86298 r89915 1 This test aims to check for typeMismatch flag with type=email input fields.1 This test aims to check for typeMismatch flag and sanitization with type=email input fields. 2 2 3 3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". 4 4 5 5 6 PASS something@something.com is a correct valid email address 7 PASS someone@localhost.localdomain is a correct valid email address 8 PASS someone@127.0.0.1 is a correct valid email address 9 PASS a@b.b is a correct valid email address 10 PASS a/b@domain.com is a correct valid email address 11 PASS {}@domain.com is a correct valid email address 12 PASS ddjk-s-jk@asl-.com is a correct valid email address 13 PASS m*'!%@something.sa is a correct valid email address 14 PASS tu!!7n7.ad##0!!!@company.ca is a correct valid email address 15 PASS %@com.com is a correct valid email address 16 PASS !#$%&'*+/=?^_`{|}~.-@com.com is a correct valid email address 17 PASS .wooly@example.com is a correct valid email address 18 PASS wo..oly@example.com is a correct valid email address 19 PASS someone@do-ma-in.com is a correct valid email address 20 PASS someone@do-.com is a correct valid email address 21 PASS somebody@-.com is a correct valid email address 22 PASS somebody@example is a correct valid email address 23 PASS invalid:email@example.com is a correct invalid email address 24 PASS @somewhere.com is a correct invalid email address 25 PASS example.com is a correct invalid email address 26 PASS @@example.com is a correct invalid email address 27 PASS a space@example.com is a correct invalid email address 28 PASS something@ex..ample.com is a correct invalid email address 29 PASS a@c is a correct invalid email address 30 PASS someone@somewhere.com. is a correct invalid email address 31 PASS ""testlah""@example.com is a correct invalid email address 32 PASS "testblah"@example.com is a correct invalid email address 33 PASS someone@somewhere.com@ is a correct invalid email address 34 PASS someone@somewhere_com is a correct invalid email address 35 PASS someone@some:where.com is a correct invalid email address 36 PASS . is a correct invalid email address 37 PASS F/s/f/a@feo+re.com is a correct invalid email address 38 PASS some+long+email+address@some+host-weird-/looking.com is a correct invalid email address 39 PASS someone@somewhere.com,john@doe.com,a@b.c,a/b@c.c,ualla@ualla.127 is a correct valid email address list 40 PASS tu!!7n7.ad##0!!!@company.ca,F/s/f/a@feo-re.com,m*'@a.b is a correct valid email address list 41 PASS ,,,,,,,,,,, is a correct valid email address list 42 PASS someone@somewhere.com,john@doe..com,a@b,a/b@c,ualla@ualla.127 is a correct invalid email address list 43 PASS some+long+email+address@some+host:weird-/looking.com,F/s/f/a@feo+re.com,,m*'@'!% is a correct invalid email address list 44 PASS ,,,,,,,,, ,, is a correct invalid email address list 6 Valid single addresses when 'multiple' attribute is not set. 7 PASS "something@something.com" is a valid email address. 8 PASS "someone@localhost.localdomain" is a valid email address. 9 PASS "someone@127.0.0.1" is a valid email address. 10 PASS "a@b.b" is a valid email address. 11 PASS "a/b@domain.com" is a valid email address. 12 PASS "{}@domain.com" is a valid email address. 13 PASS "ddjk-s-jk@asl-.com" is a valid email address. 14 PASS "m*'!%@something.sa" is a valid email address. 15 PASS "tu!!7n7.ad##0!!!@company.ca" is a valid email address. 16 PASS "%@com.com" is a valid email address. 17 PASS "!#$%&'*+/=?^_`{|}~.-@com.com" is a valid email address. 18 PASS ".wooly@example.com" is a valid email address. 19 PASS "wo..oly@example.com" is a valid email address. 20 PASS "someone@do-ma-in.com" is a valid email address. 21 PASS "someone@do-.com" is a valid email address. 22 PASS "somebody@-.com" is a valid email address. 23 PASS "somebody@example" is a valid email address. 24 PASS " 25 a@p.com 26 " is a valid email address. It was sanitized to "a@p.com". 27 PASS " 28 a@p.com 29 " is a valid email address. It was sanitized to "a@p.com". 30 PASS "a 31 @p.com" is a valid email address. It was sanitized to "a@p.com". 32 PASS "a 33 @p.com" is a valid email address. It was sanitized to "a@p.com". 34 PASS "" is a valid email address. 35 Invalid single addresses when 'multiple' attribute is not set. 36 PASS "invalid:email@example.com" is a invalid email address. 37 PASS "@somewhere.com" is a invalid email address. 38 PASS "example.com" is a invalid email address. 39 PASS "@@example.com" is a invalid email address. 40 PASS "a space@example.com" is a invalid email address. 41 PASS "something@ex..ample.com" is a invalid email address. 42 PASS "a@c" is a invalid email address. 43 PASS "someone@somewhere.com." is a invalid email address. 44 PASS """testlah""@example.com" is a invalid email address. 45 PASS ""testblah"@example.com" is a invalid email address. 46 PASS "someone@somewhere.com@" is a invalid email address. 47 PASS "someone@somewhere_com" is a invalid email address. 48 PASS "someone@some:where.com" is a invalid email address. 49 PASS "." is a invalid email address. 50 PASS "F/s/f/a@feo+re.com" is a invalid email address. 51 PASS "some+long+email+address@some+host-weird-/looking.com" is a invalid email address. 52 PASS " " is a invalid email address. 53 PASS " a@p.com" is a invalid email address. 54 PASS "a@p.com " is a invalid email address. 55 PASS " a@p.com " is a invalid email address. 56 PASS " a@p.com " is a invalid email address. 57 PASS " a@p.com " is a invalid email address. 58 PASS " 59 a@p.com 60 " is a invalid email address. 61 PASS " 62 a@p.com 63 " is a invalid email address. 64 PASS " a@p.com " is a invalid email address. 65 PASS " a@p.com " is a invalid email address. 66 PASS "a @p.com" is a invalid email address. 67 PASS "a @p.com" is a invalid email address. 68 PASS "a @p.com" is a invalid email address. 69 PASS "a 70 @p.com" is a invalid email address. 71 PASS "a 72 @p.com" is a invalid email address. 73 PASS "a @p.com" is a invalid email address. 74 PASS "a @p.com" is a invalid email address. 75 Valid single addresses when 'multiple' attribute is set. 76 PASS "something@something.com" is a valid email address list. 77 PASS "someone@localhost.localdomain" is a valid email address list. 78 PASS "someone@127.0.0.1" is a valid email address list. 79 PASS "a@b.b" is a valid email address list. 80 PASS "a/b@domain.com" is a valid email address list. 81 PASS "{}@domain.com" is a valid email address list. 82 PASS "ddjk-s-jk@asl-.com" is a valid email address list. 83 PASS "m*'!%@something.sa" is a valid email address list. 84 PASS "tu!!7n7.ad##0!!!@company.ca" is a valid email address list. 85 PASS "%@com.com" is a valid email address list. 86 PASS "!#$%&'*+/=?^_`{|}~.-@com.com" is a valid email address list. 87 PASS ".wooly@example.com" is a valid email address list. 88 PASS "wo..oly@example.com" is a valid email address list. 89 PASS "someone@do-ma-in.com" is a valid email address list. 90 PASS "someone@do-.com" is a valid email address list. 91 PASS "somebody@-.com" is a valid email address list. 92 PASS "somebody@example" is a valid email address list. 93 PASS " a@p.com " is a valid email address list. It was sanitized to "a@p.com". 94 PASS " a@p.com " is a valid email address list. It was sanitized to "a@p.com". 95 PASS " 96 a@p.com 97 " is a valid email address list. It was sanitized to "a@p.com". 98 PASS " 99 a@p.com 100 " is a valid email address list. It was sanitized to "a@p.com". 101 PASS " 102 a@p.com 103 " is a valid email address list. It was sanitized to "a@p.com". 104 PASS "a 105 @p.com" is a valid email address list. It was sanitized to "a@p.com". 106 PASS "a 107 @p.com" is a valid email address list. It was sanitized to "a@p.com". 108 PASS "" is a valid email address list. 109 PASS " " is a valid email address list. It was sanitized to "". 110 PASS " a@p.com" is a valid email address list. It was sanitized to "a@p.com". 111 PASS "a@p.com " is a valid email address list. It was sanitized to "a@p.com". 112 PASS " a@p.com " is a valid email address list. It was sanitized to "a@p.com". 113 Invalid single addresses when 'multiple' attribute is set. 114 PASS "invalid:email@example.com" is a invalid email address list. 115 PASS "@somewhere.com" is a invalid email address list. 116 PASS "example.com" is a invalid email address list. 117 PASS "@@example.com" is a invalid email address list. 118 PASS "a space@example.com" is a invalid email address list. 119 PASS "something@ex..ample.com" is a invalid email address list. 120 PASS "a@c" is a invalid email address list. 121 PASS "someone@somewhere.com." is a invalid email address list. 122 PASS """testlah""@example.com" is a invalid email address list. 123 PASS ""testblah"@example.com" is a invalid email address list. 124 PASS "someone@somewhere.com@" is a invalid email address list. 125 PASS "someone@somewhere_com" is a invalid email address list. 126 PASS "someone@some:where.com" is a invalid email address list. 127 PASS "." is a invalid email address list. 128 PASS "F/s/f/a@feo+re.com" is a invalid email address list. 129 PASS "some+long+email+address@some+host-weird-/looking.com" is a invalid email address list. 130 PASS " 131 a@p.com 132 " is a invalid email address list. 133 PASS " a@p.com " is a invalid email address list. 134 PASS " a@p.com " is a invalid email address list. 135 PASS "a @p.com" is a invalid email address list. 136 PASS "a @p.com" is a invalid email address list. 137 PASS "a @p.com" is a invalid email address list. 138 PASS "a 139 @p.com" is a invalid email address list. 140 PASS "a 141 @p.com" is a invalid email address list. 142 PASS "a @p.com" is a invalid email address list. 143 PASS "a @p.com" is a invalid email address list. 144 Valid multiple addresses when 'multiple' attribute is set. 145 PASS "someone@somewhere.com,john@doe.com,a@b.c,a/b@c.c,ualla@ualla.127" is a valid email address list. 146 PASS "tu!!7n7.ad##0!!!@company.ca,F/s/f/a@feo-re.com,m*'@a.b" is a valid email address list. 147 PASS " a@p.com,b@p.com" is a valid email address list. It was sanitized to "a@p.com,b@p.com". 148 PASS "a@p.com ,b@p.com" is a valid email address list. It was sanitized to "a@p.com,b@p.com". 149 PASS "a@p.com, b@p.com" is a valid email address list. It was sanitized to "a@p.com,b@p.com". 150 PASS "a@p.com,b@p.com " is a valid email address list. It was sanitized to "a@p.com,b@p.com". 151 PASS " a@p.com , b@p.com " is a valid email address list. It was sanitized to "a@p.com,b@p.com". 152 PASS " a@p.com , b@p.com " is a valid email address list. It was sanitized to "a@p.com,b@p.com". 153 PASS " a@p.com , b@p.com " is a valid email address list. It was sanitized to "a@p.com,b@p.com". 154 PASS " 155 a@p.com 156 , 157 b@p.com 158 " is a valid email address list. It was sanitized to "a@p.com,b@p.com". 159 PASS " 160 a@p.com 161 , 162 b@p.com 163 " is a valid email address list. It was sanitized to "a@p.com,b@p.com". 164 PASS " 165 a@p.com 166 , 167 b@p.com 168 " is a valid email address list. It was sanitized to "a@p.com,b@p.com". 169 Invalid multiple addresses when 'multiple' attribute is set. 170 PASS "someone@somewhere.com,john@doe..com,a@b,a/b@c,ualla@ualla.127" is a invalid email address list. 171 PASS "some+long+email+address@some+host:weird-/looking.com,F/s/f/a@feo+re.com,,m*'@'!%" is a invalid email address list. 172 PASS " a @p.com , b@p.com " is a invalid email address list. It was sanitized to "a @p.com,b@p.com". 173 PASS " a@p.com , b @p.com " is a invalid email address list. It was sanitized to "a@p.com,b @p.com". 174 PASS " 175 a@p.com 176 , 177 b@p.com 178 " is a invalid email address list. 179 PASS " a@p.com , b@p.com " is a invalid email address list. 180 PASS " a@p.com , b@p.com " is a invalid email address list. 181 PASS ",," is a invalid email address list. 182 PASS " ,," is a invalid email address list. It was sanitized to ",,". 183 PASS ", ," is a invalid email address list. It was sanitized to ",,". 184 PASS ",, " is a invalid email address list. It was sanitized to ",,". 185 PASS " , , " is a invalid email address list. It was sanitized to ",,". 186 PASS " , , " is a invalid email address list. It was sanitized to ",,". 187 PASS " , , " is a invalid email address list. It was sanitized to ",,". 188 PASS " 189 , 190 , 191 " is a invalid email address list. It was sanitized to ",,". 192 PASS " 193 , 194 , 195 " is a invalid email address list. 196 PASS " 197 , 198 , 199 " is a invalid email address list. It was sanitized to ",,". 200 PASS " 201 , 202 , 203 " is a invalid email address list. It was sanitized to ",,". 204 PASS " , , " is a invalid email address list. 205 PASS " , , " is a invalid email address list. 45 206 PASS successfullyParsed is true 46 207 -
trunk/LayoutTests/fast/forms/resources/ValidityState-typeMismatch-email.js
r86298 r89915 1 description("This test aims to check for typeMismatch flag with type=email input fields.");1 description("This test aims to check for typeMismatch flag and sanitization with type=email input fields."); 2 2 3 3 var i = document.createElement('input'); 4 4 i.type = 'email'; 5 5 6 function emailCheck(val , expectedValid)6 function emailCheck(value, expectedValue, expectedMismatch, multiple) 7 7 { 8 i.value = val; 9 var vs = i.validity.typeMismatch; 10 var didPass = vs == expectedValid; 11 var didPassText = didPass ? "a correct" : "an incorrect"; 12 var validityText = vs ? "invalid" : "valid"; 13 var multipleText = i.multiple ? "list" : ""; 14 var resultText = val + " is " + didPassText + " " + validityText + " email address " + multipleText; 15 if (didPass) 16 testPassed(resultText); 8 i.value = value; 9 i.multiple = !!multiple; 10 var mismatch = i.validity.typeMismatch; 11 var mismatchPass = mismatch == expectedMismatch; 12 var sanitizePass = i.value == expectedValue; 13 var mismatchResult = '"' + value + '" is a ' + (mismatch ? 'invalid' : 'valid') + ' email address' + (multiple ? ' list. ' : '. '); 14 var sanitizeResult = 'It was sanitized to "' + i.value + '"' + (sanitizePass ? '.' : ', but should be sanitized to "' + expectedValue + '"'); 15 var result = mismatchResult; 16 if (value != expectedValue || !sanitizePass) 17 result += sanitizeResult; 18 19 if (mismatchPass && sanitizePass) 20 testPassed(result); 17 21 else 18 testFailed(result Text);22 testFailed(result); 19 23 } 20 24 21 // VALID 22 emailCheck("something@something.com", false); 23 emailCheck("someone@localhost.localdomain", false); 24 emailCheck("someone@127.0.0.1", false); 25 emailCheck("a@b.b", false); 26 emailCheck("a/b@domain.com", false); 27 emailCheck("{}@domain.com", false); 28 emailCheck("ddjk-s-jk@asl-.com", false); 29 emailCheck("m*'!%@something.sa", false); 30 emailCheck("tu!!7n7.ad##0!!!@company.ca", false); 31 emailCheck("%@com.com", false); 32 emailCheck("!#$%&'*+/=?^_`{|}~.-@com.com", false); 33 emailCheck(".wooly@example.com", false); 34 emailCheck("wo..oly@example.com", false); 35 emailCheck("someone@do-ma-in.com", false); 36 emailCheck("someone@do-.com", false); 37 emailCheck("somebody@-.com", false); 38 emailCheck("somebody@example", false); 25 var expectValid = false; 26 var expectInvalid = true; 27 var multiple = true; 39 28 40 // INVALID 41 emailCheck("invalid:email@example.com", true); 42 emailCheck("@somewhere.com", true); 43 emailCheck("example.com", true); 44 emailCheck("@@example.com", true); 45 emailCheck("a space@example.com", true); 46 emailCheck("something@ex..ample.com", true); 47 emailCheck("a\b@c", true); 48 emailCheck("someone@somewhere.com.", true); 49 emailCheck("\"\"test\blah\"\"@example.com", true); 50 emailCheck("\"testblah\"@example.com", true); 51 emailCheck("someone@somewhere.com@", true); 52 emailCheck("someone@somewhere_com", true); 53 emailCheck("someone@some:where.com", true); 54 emailCheck(".", true); 55 emailCheck("F/s/f/a@feo+re.com", true); 56 emailCheck("some+long+email+address@some+host-weird-/looking.com", true); 29 debug("Valid single addresses when 'multiple' attribute is not set."); 30 emailCheck("something@something.com", "something@something.com", expectValid); 31 emailCheck("someone@localhost.localdomain", "someone@localhost.localdomain", expectValid); 32 emailCheck("someone@127.0.0.1", "someone@127.0.0.1", expectValid); 33 emailCheck("a@b.b", "a@b.b", expectValid); 34 emailCheck("a/b@domain.com", "a/b@domain.com", expectValid); 35 emailCheck("{}@domain.com", "{}@domain.com", expectValid); 36 emailCheck("ddjk-s-jk@asl-.com", "ddjk-s-jk@asl-.com", expectValid); 37 emailCheck("m*'!%@something.sa", "m*'!%@something.sa", expectValid); 38 emailCheck("tu!!7n7.ad##0!!!@company.ca", "tu!!7n7.ad##0!!!@company.ca", expectValid); 39 emailCheck("%@com.com", "%@com.com", expectValid); 40 emailCheck("!#$%&'*+/=?^_`{|}~.-@com.com", "!#$%&'*+/=?^_`{|}~.-@com.com", expectValid); 41 emailCheck(".wooly@example.com", ".wooly@example.com", expectValid); 42 emailCheck("wo..oly@example.com", "wo..oly@example.com", expectValid); 43 emailCheck("someone@do-ma-in.com", "someone@do-ma-in.com", expectValid); 44 emailCheck("someone@do-.com", "someone@do-.com", expectValid); 45 emailCheck("somebody@-.com", "somebody@-.com", expectValid); 46 emailCheck("somebody@example", "somebody@example", expectValid); 47 emailCheck("\u000Aa@p.com\u000A", "a@p.com", expectValid); 48 emailCheck("\u000Da@p.com\u000D", "a@p.com", expectValid); 49 emailCheck("a\u000A@p.com", "a@p.com", expectValid); 50 emailCheck("a\u000D@p.com", "a@p.com", expectValid); 51 emailCheck("", "", expectValid); 57 52 58 i.multiple = true; 53 debug("Invalid single addresses when 'multiple' attribute is not set."); 54 emailCheck("invalid:email@example.com", "invalid:email@example.com", expectInvalid); 55 emailCheck("@somewhere.com", "@somewhere.com", expectInvalid); 56 emailCheck("example.com", "example.com", expectInvalid); 57 emailCheck("@@example.com", "@@example.com", expectInvalid); 58 emailCheck("a space@example.com", "a space@example.com", expectInvalid); 59 emailCheck("something@ex..ample.com", "something@ex..ample.com", expectInvalid); 60 emailCheck("a\b@c", "a\b@c", expectInvalid); 61 emailCheck("someone@somewhere.com.", "someone@somewhere.com.", expectInvalid); 62 emailCheck("\"\"test\blah\"\"@example.com", "\"\"test\blah\"\"@example.com", expectInvalid); 63 emailCheck("\"testblah\"@example.com", "\"testblah\"@example.com", expectInvalid); 64 emailCheck("someone@somewhere.com@", "someone@somewhere.com@", expectInvalid); 65 emailCheck("someone@somewhere_com", "someone@somewhere_com", expectInvalid); 66 emailCheck("someone@some:where.com", "someone@some:where.com", expectInvalid); 67 emailCheck(".", ".", expectInvalid); 68 emailCheck("F/s/f/a@feo+re.com", "F/s/f/a@feo+re.com", expectInvalid); 69 emailCheck("some+long+email+address@some+host-weird-/looking.com", "some+long+email+address@some+host-weird-/looking.com", expectInvalid); 70 emailCheck(" ", " ", expectInvalid); 71 emailCheck(" a@p.com", " a@p.com", expectInvalid); 72 emailCheck("a@p.com ", "a@p.com ", expectInvalid); 73 emailCheck(" a@p.com ", " a@p.com ", expectInvalid); 74 emailCheck("\u0020a@p.com\u0020", "\u0020a@p.com\u0020", expectInvalid); 75 emailCheck("\u0009a@p.com\u0009", "\u0009a@p.com\u0009", expectInvalid); 76 emailCheck("\u000Ba@p.com\u000B", "\u000Ba@p.com\u000B", expectInvalid); 77 emailCheck("\u000Ca@p.com\u000C", "\u000Ca@p.com\u000C", expectInvalid); 78 emailCheck("\u2003a@p.com\u2003", "\u2003a@p.com\u2003", expectInvalid); 79 emailCheck("\u3000a@p.com\u3000", "\u3000a@p.com\u3000", expectInvalid); 80 emailCheck("a @p.com", "a @p.com", expectInvalid); 81 emailCheck("a\u0020@p.com", "a\u0020@p.com", expectInvalid); 82 emailCheck("a\u0009@p.com", "a\u0009@p.com", expectInvalid); 83 emailCheck("a\u000B@p.com", "a\u000B@p.com", expectInvalid); 84 emailCheck("a\u000C@p.com", "a\u000C@p.com", expectInvalid); 85 emailCheck("a\u2003@p.com", "a\u2003@p.com", expectInvalid); 86 emailCheck("a\u3000@p.com", "a\u3000@p.com", expectInvalid); 59 87 60 // VALID MULTIPLE 61 emailCheck("someone@somewhere.com,john@doe.com,a@b.c,a/b@c.c,ualla@ualla.127", false) 62 emailCheck("tu!!7n7.ad##0!!!@company.ca,F/s/f/a@feo-re.com,m*'@a.b", false) 63 emailCheck(",,,,,,,,,,,", false) 88 debug("Valid single addresses when 'multiple' attribute is set."); 89 emailCheck("something@something.com", "something@something.com", expectValid, multiple); 90 emailCheck("someone@localhost.localdomain", "someone@localhost.localdomain", expectValid, multiple); 91 emailCheck("someone@127.0.0.1", "someone@127.0.0.1", expectValid, multiple); 92 emailCheck("a@b.b", "a@b.b", expectValid, multiple); 93 emailCheck("a/b@domain.com", "a/b@domain.com", expectValid, multiple); 94 emailCheck("{}@domain.com", "{}@domain.com", expectValid, multiple); 95 emailCheck("ddjk-s-jk@asl-.com", "ddjk-s-jk@asl-.com", expectValid, multiple); 96 emailCheck("m*'!%@something.sa", "m*'!%@something.sa", expectValid, multiple); 97 emailCheck("tu!!7n7.ad##0!!!@company.ca", "tu!!7n7.ad##0!!!@company.ca", expectValid, multiple); 98 emailCheck("%@com.com", "%@com.com", expectValid, multiple); 99 emailCheck("!#$%&'*+/=?^_`{|}~.-@com.com", "!#$%&'*+/=?^_`{|}~.-@com.com", expectValid, multiple); 100 emailCheck(".wooly@example.com", ".wooly@example.com", expectValid, multiple); 101 emailCheck("wo..oly@example.com", "wo..oly@example.com", expectValid, multiple); 102 emailCheck("someone@do-ma-in.com", "someone@do-ma-in.com", expectValid, multiple); 103 emailCheck("someone@do-.com", "someone@do-.com", expectValid, multiple); 104 emailCheck("somebody@-.com", "somebody@-.com", expectValid, multiple); 105 emailCheck("somebody@example", "somebody@example", expectValid, multiple); 106 emailCheck("\u0020a@p.com\u0020", "a@p.com", expectValid, multiple); 107 emailCheck("\u0009a@p.com\u0009", "a@p.com", expectValid, multiple); 108 emailCheck("\u000Aa@p.com\u000A", "a@p.com", expectValid, multiple); 109 emailCheck("\u000Ca@p.com\u000C", "a@p.com", expectValid, multiple); 110 emailCheck("\u000Da@p.com\u000D", "a@p.com", expectValid, multiple); 111 emailCheck("a\u000A@p.com", "a@p.com", expectValid, multiple); 112 emailCheck("a\u000D@p.com", "a@p.com", expectValid, multiple); 113 emailCheck("", "", expectValid, multiple); 114 emailCheck(" ", "", expectValid, multiple); 115 emailCheck(" a@p.com", "a@p.com", expectValid, multiple); 116 emailCheck("a@p.com ", "a@p.com", expectValid, multiple); 117 emailCheck(" a@p.com ", "a@p.com", expectValid, multiple); 64 118 65 // INVALID MULTIPLE (true on the first invalid occurrence) 66 emailCheck("someone@somewhere.com,john@doe..com,a@b,a/b@c,ualla@ualla.127", true) 67 emailCheck("some+long+email+address@some+host:weird-/looking.com,F/s/f/a@feo+re.com,,m*'@'!%", true) 68 emailCheck(",,,,,,,,, ,,", true) 119 debug("Invalid single addresses when 'multiple' attribute is set."); 120 emailCheck("invalid:email@example.com", "invalid:email@example.com", expectInvalid, multiple); 121 emailCheck("@somewhere.com", "@somewhere.com", expectInvalid, multiple); 122 emailCheck("example.com", "example.com", expectInvalid, multiple); 123 emailCheck("@@example.com", "@@example.com", expectInvalid, multiple); 124 emailCheck("a space@example.com", "a space@example.com", expectInvalid, multiple); 125 emailCheck("something@ex..ample.com", "something@ex..ample.com", expectInvalid, multiple); 126 emailCheck("a\b@c", "a\b@c", expectInvalid, multiple); 127 emailCheck("someone@somewhere.com.", "someone@somewhere.com.", expectInvalid, multiple); 128 emailCheck("\"\"test\blah\"\"@example.com", "\"\"test\blah\"\"@example.com", expectInvalid, multiple); 129 emailCheck("\"testblah\"@example.com", "\"testblah\"@example.com", expectInvalid, multiple); 130 emailCheck("someone@somewhere.com@", "someone@somewhere.com@", expectInvalid, multiple); 131 emailCheck("someone@somewhere_com", "someone@somewhere_com", expectInvalid, multiple); 132 emailCheck("someone@some:where.com", "someone@some:where.com", expectInvalid, multiple); 133 emailCheck(".", ".", expectInvalid, multiple); 134 emailCheck("F/s/f/a@feo+re.com", "F/s/f/a@feo+re.com", expectInvalid, multiple); 135 emailCheck("some+long+email+address@some+host-weird-/looking.com", "some+long+email+address@some+host-weird-/looking.com", expectInvalid, multiple); 136 emailCheck("\u000Ba@p.com\u000B", "\u000Ba@p.com\u000B", expectInvalid, multiple); 137 emailCheck("\u2003a@p.com\u2003", "\u2003a@p.com\u2003", expectInvalid, multiple); 138 emailCheck("\u3000a@p.com\u3000", "\u3000a@p.com\u3000", expectInvalid, multiple); 139 emailCheck("a @p.com", "a @p.com", expectInvalid, multiple); 140 emailCheck("a\u0020@p.com", "a\u0020@p.com", expectInvalid, multiple); 141 emailCheck("a\u0009@p.com", "a\u0009@p.com", expectInvalid, multiple); 142 emailCheck("a\u000B@p.com", "a\u000B@p.com", expectInvalid, multiple); 143 emailCheck("a\u000C@p.com", "a\u000C@p.com", expectInvalid, multiple); 144 emailCheck("a\u2003@p.com", "a\u2003@p.com", expectInvalid, multiple); 145 emailCheck("a\u3000@p.com", "a\u3000@p.com", expectInvalid, multiple); 146 147 debug("Valid multiple addresses when 'multiple' attribute is set."); 148 emailCheck("someone@somewhere.com,john@doe.com,a@b.c,a/b@c.c,ualla@ualla.127", "someone@somewhere.com,john@doe.com,a@b.c,a/b@c.c,ualla@ualla.127", expectValid, multiple); 149 emailCheck("tu!!7n7.ad##0!!!@company.ca,F/s/f/a@feo-re.com,m*'@a.b", "tu!!7n7.ad##0!!!@company.ca,F/s/f/a@feo-re.com,m*'@a.b", expectValid, multiple); 150 emailCheck(" a@p.com,b@p.com", "a@p.com,b@p.com", expectValid, multiple); 151 emailCheck("a@p.com ,b@p.com", "a@p.com,b@p.com", expectValid, multiple); 152 emailCheck("a@p.com, b@p.com", "a@p.com,b@p.com", expectValid, multiple); 153 emailCheck("a@p.com,b@p.com ", "a@p.com,b@p.com", expectValid, multiple); 154 emailCheck(" a@p.com , b@p.com ", "a@p.com,b@p.com", expectValid, multiple); 155 emailCheck("\u0020a@p.com\u0020,\u0020b@p.com\u0020", "a@p.com,b@p.com", expectValid, multiple); 156 emailCheck("\u0009a@p.com\u0009,\u0009b@p.com\u0009", "a@p.com,b@p.com", expectValid, multiple); 157 emailCheck("\u000Aa@p.com\u000A,\u000Ab@p.com\u000A", "a@p.com,b@p.com", expectValid, multiple); 158 emailCheck("\u000Ca@p.com\u000C,\u000Cb@p.com\u000C", "a@p.com,b@p.com", expectValid, multiple); 159 emailCheck("\u000Da@p.com\u000D,\u000Db@p.com\u000D", "a@p.com,b@p.com", expectValid, multiple); 160 161 debug("Invalid multiple addresses when 'multiple' attribute is set."); 162 emailCheck("someone@somewhere.com,john@doe..com,a@b,a/b@c,ualla@ualla.127", "someone@somewhere.com,john@doe..com,a@b,a/b@c,ualla@ualla.127", expectInvalid, multiple); 163 emailCheck("some+long+email+address@some+host:weird-/looking.com,F/s/f/a@feo+re.com,,m*'@'!%", "some+long+email+address@some+host:weird-/looking.com,F/s/f/a@feo+re.com,,m*'@'!%", expectInvalid, multiple); 164 emailCheck(" a @p.com , b@p.com ", "a @p.com,b@p.com", expectInvalid, multiple); 165 emailCheck(" a@p.com , b @p.com ", "a@p.com,b @p.com", expectInvalid, multiple); 166 emailCheck("\u000Ba@p.com\u000B,\u000Bb@p.com\u000B", "\u000Ba@p.com\u000B,\u000Bb@p.com\u000B", expectInvalid, multiple); 167 emailCheck("\u2003a@p.com\u2003,\u2003b@p.com\u2003", "\u2003a@p.com\u2003,\u2003b@p.com\u2003", expectInvalid, multiple); 168 emailCheck("\u3000a@p.com\u3000,\u3000b@p.com\u3000", "\u3000a@p.com\u3000,\u3000b@p.com\u3000", expectInvalid, multiple); 169 emailCheck(",,", ",,", expectInvalid, multiple); 170 emailCheck(" ,,", ",,", expectInvalid, multiple); 171 emailCheck(", ,", ",,", expectInvalid, multiple); 172 emailCheck(",, ", ",,", expectInvalid, multiple); 173 emailCheck(" , , ", ",,", expectInvalid, multiple); 174 emailCheck("\u0020,\u0020,\u0020", ",,", expectInvalid, multiple); 175 emailCheck("\u0009,\u0009,\u0009", ",,", expectInvalid, multiple); 176 emailCheck("\u000A,\u000A,\u000A", ",,", expectInvalid, multiple); 177 emailCheck("\u000B,\u000B,\u000B", "\u000B,\u000B,\u000B", expectInvalid, multiple); 178 emailCheck("\u000C,\u000C,\u000C", ",,", expectInvalid, multiple); 179 emailCheck("\u000D,\u000D,\u000D", ",,", expectInvalid, multiple); 180 emailCheck("\u2003,\u2003,\u2003", "\u2003,\u2003,\u2003", expectInvalid, multiple); 181 emailCheck("\u3000,\u3000,\u3000", "\u3000,\u3000,\u3000", expectInvalid, multiple); 182 69 183 70 184 var successfullyParsed = true; -
trunk/Source/WebCore/ChangeLog
r89913 r89915 1 2011-06-28 Kentaro Hara <haraken@google.com> 2 3 Reviewed by Kent Tamura. 4 5 Allow spaces between e-mail addresses in 'email' input type. 6 https://bugs.webkit.org/show_bug.cgi?id=55987 7 8 Allowed spaces between e-mail addresses in 'email' input type, 9 e.g. ' a@p.com , b@p.com ' is a valid value. Implemented the 10 value sanitization algorithm for an e-mail value. Added more unit 11 tests that check the e-mail value parser. 12 13 Test: fast/forms/ValidityState-typeMismatch-email.html 14 15 * html/EmailInputType.cpp: 16 (WebCore::EmailInputType::typeMismatchFor): 17 (WebCore::EmailInputType::sanitizeValue): 18 * html/EmailInputType.h: 19 * html/parser/HTMLParserIdioms.cpp: 20 (WebCore::stripHTMLLineBreaks): 21 * html/parser/HTMLParserIdioms.h: 22 (WebCore::isHTMLLineBreak): 23 1 24 2011-06-28 Kent Tamura <tkent@chromium.org> 2 25 -
trunk/Source/WebCore/html/EmailInputType.cpp
r86298 r89915 26 26 27 27 #include "HTMLInputElement.h" 28 #include "HTMLParserIdioms.h" 28 29 #include "LocalizedStrings.h" 29 30 #include "RegularExpression.h" 30 31 #include <wtf/PassOwnPtr.h> 32 #include <wtf/text/StringBuilder.h> 31 33 32 34 namespace WebCore { … … 68 70 return !isValidEmailAddress(value); 69 71 Vector<String> addresses; 70 value.split(',', addresses);72 value.split(',', true, addresses); 71 73 for (unsigned i = 0; i < addresses.size(); ++i) { 72 if (!isValidEmailAddress( addresses[i]))74 if (!isValidEmailAddress(stripLeadingAndTrailingHTMLSpaces(addresses[i]))) 73 75 return true; 74 76 } … … 91 93 } 92 94 95 String EmailInputType::sanitizeValue(const String& proposedValue) 96 { 97 String noLineBreakValue = proposedValue.removeCharacters(isHTMLLineBreak); 98 if (!element()->multiple()) 99 return noLineBreakValue; 100 Vector<String> addresses; 101 noLineBreakValue.split(',', true, addresses); 102 StringBuilder strippedValue; 103 for (unsigned i = 0; i < addresses.size(); ++i) { 104 if (i > 0) 105 strippedValue.append(","); 106 strippedValue.append(stripLeadingAndTrailingHTMLSpaces(addresses[i])); 107 } 108 return strippedValue.toString(); 109 } 110 93 111 } // namespace WebCore -
trunk/Source/WebCore/html/EmailInputType.h
r74895 r89915 47 47 virtual String typeMismatchText() const; 48 48 virtual bool isEmailField() const; 49 virtual String sanitizeValue(const String&); 49 50 }; 50 51 -
trunk/Source/WebCore/html/parser/HTMLParserIdioms.cpp
r77774 r89915 30 30 #include <wtf/dtoa.h> 31 31 #include <wtf/text/AtomicString.h> 32 #include <wtf/text/StringBuilder.h> 32 33 33 34 namespace WebCore { -
trunk/Source/WebCore/html/parser/HTMLParserIdioms.h
r71622 r89915 33 33 // Space characters as defined by the HTML specification. 34 34 bool isHTMLSpace(UChar); 35 bool isHTMLLineBreak(UChar); 35 36 bool isNotHTMLSpace(UChar); 36 37 … … 67 68 } 68 69 70 inline bool isHTMLLineBreak(UChar character) 71 { 72 return character <= '\r' && (character == '\n' || character == '\r'); 73 } 74 69 75 inline bool isNotHTMLSpace(UChar character) 70 76 {
Note: See TracChangeset
for help on using the changeset viewer.