/*
* This test checks that when a user types in some input types, it will not be
* in a state where the value will be un-sanitized and usable (by a script).
*/
varinput = document.getElementById('i'); varform = document.getElementById('f'); var submitFrame = document.getElementsByTagName('iframe')[0]; var testData = []; var gCurrentTest = null; var gValidData = []; var gInvalidData = [];
function submitForm() { form.submit();
}
function sendKeyEventToSubmitForm() {
sendKey("return");
}
function urlify(aStr) {
return aStr.replace(/:/g, '%3A');
}
function runTestsForNextInputType()
{
let {done} = testRunner.next();
if (done) {
SimpleTest.finish();
}
}
function checkValueSubmittedIsValid()
{
is(frames.submit_frame.location.href,
`${location.origin}/tests/dom/html/test/forms/foo?i=${urlify(gValidData[valueIndex++])}`, "The submitted value should not have been sanitized");
input.value = "";
if (valueIndex >= gValidData.length) {
if (gCurrentTest.canHaveBadInputValidityState) {
// Don't run the submission tests on the invalid input if submission
// will be blocked by invalid input.
runTestsForNextInputType();
return;
}
valueIndex = 0;
submitFrame.onload = checkValueSubmittedIsInvalid;
testData = gInvalidData;
}
testSubmissions();
}
function checkValueSubmittedIsInvalid()
{
is(frames.submit_frame.location.href,
`${location.origin}/tests/dom/html/test/forms/foo?i=`, "The submitted value should have been sanitized");
var data = [
{
type: 'number',
canHaveBadInputValidityState: true,
validData: [ "42", "-42", // should work for negative values "42.1234", "123.123456789123", // double precision "1e2", // e should be usable "2e1", "1e-1", // value after e can be negative "1E2", // E can be used instead of e
],
invalidData: [ "e", "e2", "1e0.1", "foo", "42,13", // comma can't be used as a decimal separator
]
},
{
type: 'month',
validData: [ '0001-01', '2012-12', '100000-01',
],
invalidData: [ '1-01', '-', 'december', '2012-dec', '2012/12', '2012-99', '2012-1',
]
},
{
type: 'week',
validData: [ '0001-W01', '1970-W53', '100000-W52', '2016-W30',
],
invalidData: [ '1-W01', 'week', '2016-30', '2010-W80', '2000/W30', '1985-W00', '1000-W'
]
},
];
for (data of gValidData) { input.value = ""; input.focus();
sendString(data); input.blur();
is(input.value, data, "valid user input should not be sanitized");
}
for (data of gInvalidData) { input.value = ""; input.focus();
sendString(data); input.blur();
is(input.value, "", "invalid user input should be sanitized");
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.