// The main testing function. var test = async function (isContent) {
await SpecialPowers.contentTransformsReceived(window);
// Each definition is [eventType, prefSetting] // Where we are setting the "privacy.resistFingerprinting" pref.
let eventDefs = [
["mousedown", true],
["mouseup", true],
["mousedown", false],
["mouseup", false],
];
let testCounter = 0;
// Declare ahead of time.
let setup;
// This function is called when the event handler fires.
let handleEvent = function (event, prefVal) {
let resisting = prefVal && isContent; if (resisting) {
is(
event.screenX,
event.clientX, "event.screenX and event.clientX should be the same"
);
is(
event.screenY,
event.clientY, "event.screenY and event.clientY should be the same"
);
} else { // We can't be sure about X coordinates not being equal, but we can test Y.
isnot(event.screenY, event.clientY, "event.screenY !== event.clientY");
}
++testCounter; if (testCounter < eventDefs.length) {
nextTest();
} else {
SimpleTest.finish();
}
};
// In this function, we set up the nth div and event handler, // and then synthesize a mouse event in the div, to test // whether the resulting events resist fingerprinting by // suppressing absolute screen coordinates.
nextTest = function () {
let [eventType, prefVal] = eventDefs[testCounter];
SpecialPowers.pushPrefEnv(
{ set: [["privacy.resistFingerprinting", prefVal]] }, function () { // The following code creates a new div for each event in eventDefs, // attaches a listener to listen for the event, and then generates // a fake event at the center of the div.
let div = document.createElementNS( "http://www.w3.org/1999/xhtml", "div"
);
div.style.width = "10px";
div.style.height = "10px";
div.style.backgroundColor = "red"; // Name the div after the event we're listening for.
div.id = eventType;
document.getElementById("body").appendChild(div); // Seems we can't add an event listener in chrome unless we run // it in a later task.
window.setTimeout(function () {
div.addEventListener(eventType, event => handleEvent(event, prefVal)); // For some reason, the following synthesizeMouseAtCenter call only seems to run if we // wrap it in a window.setTimeout(..., 0).
window.setTimeout(function () {
synthesizeMouseAtCenter(div, { type: eventType });
}, 0);
}, 0);
}
);
};
// Now run by starting with the 0th event.
nextTest();
};
Messung V0.5
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet)
¤
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.