// This helper expects these globals to be defined. /* global PARAMS, SJS, testCases */
/* * common functionality for iframe, anchor, and area referrer attribute tests
*/ const GET_RESULT = SJS + "ACTION=get-test-results"; const RESET_STATE = SJS + "ACTION=resetState";
SimpleTest.waitForExplicitFinish(); var advance = function () {
tests.next();
};
/** * Listen for notifications from the child. * These are sent in case of error, or when the loads we await have completed.
*/
window.addEventListener("message", function (event) { if (event.data == "childLoadComplete") { // all loads happen, continue the test.
advance();
}
});
/** * helper to perform an XHR * to do checkIndividualResults and resetState
*/ function doXHR(aUrl, onSuccess, onFail) { // The server is at http[s]://example.com so we need cross-origin XHR. var xhr = new XMLHttpRequest({ mozSystem: true });
xhr.responseType = "json";
xhr.onload = function () {
onSuccess(xhr);
};
xhr.onerror = function () {
onFail(xhr);
};
xhr.open("GET", "http" + aUrl, true);
xhr.send(null);
}
/** * Grabs the results via XHR and passes to checker.
*/ function checkIndividualResults(aTestname, aExpectedReferrer, aName) { var onload = xhr => { var results = xhr.response;
info(JSON.stringify(xhr.response));
ok(aName in results, aName + " tests have to be performed.");
is(
results[aName].policy,
aExpectedReferrer,
aTestname + " --- " +
results[aName].policy + " (" +
results[aName].referrer + ")"
);
advance();
}; var onerror = xhr => {
ok(false, "Can't get results from the counter server.");
SimpleTest.finish();
};
doXHR(GET_RESULT, onload, onerror);
}
function resetState() {
doXHR(RESET_STATE, advance, function (xhr) {
ok(false, "error in reset state");
SimpleTest.finish();
});
}
var iframe = document.getElementById("testframe");
for (var j = 0; j < testCases.length; j++) { if (testCases[j].PREFS) {
yield SpecialPowers.pushPrefEnv({ set: testCases[j].PREFS }, advance);
}
var actions = testCases[j].ACTION; var subTests = testCases[j].TESTS; for (var k = 0; k < actions.length; k++) { var actionString = actions[k]; for (var i = 0; i < subTests.length; i++) {
yield resetState(); var searchParams = new URLSearchParams();
searchParams.append("ACTION", actionString);
searchParams.append("NAME", subTests[i].NAME); for (var l of PARAMS) { if (subTests[i][l]) {
searchParams.append(l, subTests[i][l]);
}
} var schemeFrom = subTests[i].SCHEME_FROM || "http";
yield (iframe.src = schemeFrom + SJS + searchParams.toString());
yield checkIndividualResults(
subTests[i].DESC,
subTests[i].RESULT,
subTests[i].NAME
);
}
}
}
// complete.
SimpleTest.finish();
})();
Messung V0.5
¤ Dauer der Verarbeitung: 0.21 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.