mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-25 06:28:30 +00:00
191 lines
6.3 KiB
HTML
191 lines
6.3 KiB
HTML
<html>
|
|
<head>
|
|
<title></title>
|
|
|
|
<script type="text/javascript">
|
|
"use strict";
|
|
|
|
var scriptItem = "untouched";
|
|
var scriptItem1 = "untouched";
|
|
var scriptItem2 = "untouched";
|
|
var imageItem1 = "untouched";
|
|
var imageItem2 = "untouched";
|
|
var frameItem1 = "untouched";
|
|
var frameItem2 = "untouched";
|
|
var xhrItem = "untouched";
|
|
var fetchItem = "untouched";
|
|
|
|
var badids = [
|
|
"badscript1",
|
|
"badscript2",
|
|
"badimage1",
|
|
"badimage2",
|
|
"badframe1",
|
|
"badframe2",
|
|
"badcss"
|
|
];
|
|
|
|
function checkLoads() {
|
|
window.parent.is(
|
|
scriptItem1, "untouched", "Should not load tracking javascript");
|
|
window.parent.is(
|
|
scriptItem2, "untouched", "Should not load tracking javascript (2)");
|
|
|
|
window.parent.is(
|
|
imageItem1, "untouched", "Should not load tracking images");
|
|
window.parent.is(
|
|
imageItem2, "untouched", "Should not load tracking images (2)");
|
|
|
|
window.parent.is(
|
|
frameItem1, "untouched", "Should not load tracking iframes");
|
|
window.parent.is(
|
|
frameItem2, "untouched", "Should not load tracking iframes (2)");
|
|
window.parent.is(
|
|
xhrItem, "failed", "Should not load tracking XHRs");
|
|
window.parent.is(
|
|
fetchItem, "error", "Should not fetch from tracking URLs");
|
|
|
|
var elt = document.getElementById("styleCheck");
|
|
var style = document.defaultView.getComputedStyle(elt, "");
|
|
window.parent.isnot(
|
|
style.visibility, "hidden", "Should not load tracking css");
|
|
|
|
window.parent.is(window.document.blockedTrackingNodeCount, badids.length,
|
|
"Should identify all tracking elements");
|
|
|
|
var blockedTrackingNodes = window.document.blockedTrackingNodes;
|
|
|
|
// Make sure that every node in blockedTrackingNodes exists in the tree
|
|
// (that may not always be the case but do not expect any nodes to disappear
|
|
// from the tree here)
|
|
var allNodeMatch = true;
|
|
for (var i = 0; i < blockedTrackingNodes.length; i++) {
|
|
var nodeMatch = false;
|
|
for (var j = 0; j < badids.length && !nodeMatch; j++) {
|
|
nodeMatch = nodeMatch ||
|
|
(blockedTrackingNodes[i] == document.getElementById(badids[j]));
|
|
}
|
|
|
|
allNodeMatch = allNodeMatch && nodeMatch;
|
|
}
|
|
window.parent.ok(allNodeMatch,
|
|
"All annotated nodes are expected in the tree");
|
|
|
|
// Make sure that every node with a badid (see badids) is found in the
|
|
// blockedTrackingNodes. This tells us if we are neglecting to annotate
|
|
// some nodes
|
|
allNodeMatch = true;
|
|
for (var j = 0; j < badids.length; j++) {
|
|
var nodeMatch = false;
|
|
for (var i = 0; i < blockedTrackingNodes.length && !nodeMatch; i++) {
|
|
nodeMatch = nodeMatch ||
|
|
(blockedTrackingNodes[i] == document.getElementById(badids[j]));
|
|
}
|
|
|
|
allNodeMatch = allNodeMatch && nodeMatch;
|
|
}
|
|
window.parent.ok(allNodeMatch,
|
|
"All tracking nodes are expected to be annotated as such");
|
|
|
|
// Unset prefs, etc.
|
|
window.parent.cleanup();
|
|
// End (parent) test.
|
|
window.parent.SimpleTest.finish();
|
|
}
|
|
|
|
var onloadCalled = false;
|
|
var xhrFinished = false;
|
|
var fetchFinished = false;
|
|
function loaded(type) {
|
|
if (type === "onload") {
|
|
onloadCalled = true;
|
|
} else if (type === "xhr") {
|
|
xhrFinished = true;
|
|
} else if (type === "fetch") {
|
|
fetchFinished = true;
|
|
}
|
|
if (onloadCalled && xhrFinished && fetchFinished) {
|
|
checkLoads();
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<!-- Try loading from a tracking CSS URI -->
|
|
<link id="badcss" rel="stylesheet" type="text/css" href="http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/evil.css"></link>
|
|
|
|
</head>
|
|
|
|
<body onload="loaded('onload')">
|
|
|
|
<!-- Try loading from a tracking script URI (1): evil.js onload will have updated the scriptItem variable -->
|
|
<script id="badscript1" src="http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/evil.js" onload="scriptItem1 = scriptItem;"></script>
|
|
|
|
<!-- Try loading from a tracking image URI (1) -->
|
|
<img id="badimage1" src="http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/raptor.jpg?reload=true" onload="imageItem1 = 'spoiled';"/>
|
|
|
|
<!-- Try loading from a tracking frame URI (1) -->
|
|
<iframe id="badframe1" src="http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/track.html" onload="frameItem1 = 'spoiled';"></iframe>
|
|
|
|
<script>
|
|
// Try loading from a tracking script URI (2) - The loader may follow a different path depending on whether the resource is loaded from JS or HTML.
|
|
var newScript = document.createElement("script");
|
|
newScript.id = "badscript2";
|
|
newScript.src = "http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/evil.js";
|
|
newScript.addEventListener("load", function() {scriptItem2 = scriptItem;});
|
|
document.body.appendChild(newScript);
|
|
|
|
/// Try loading from a tracking image URI (2)
|
|
var newImage = document.createElement("img");
|
|
newImage.id = "badimage2";
|
|
newImage.src = "http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/raptor.jpg?reload=true";
|
|
newImage.addEventListener("load", function() {imageItem2 = 'spoiled'});
|
|
document.body.appendChild(newImage);
|
|
|
|
// Try loading from a tracking iframe URI (2)
|
|
var newFrame = document.createElement("iframe");
|
|
newFrame.id = "badframe2";
|
|
newFrame.src = "http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/track.html"
|
|
newFrame.addEventListener("load", function() {frameItem2 = 'spoiled'});
|
|
document.body.appendChild(newFrame);
|
|
|
|
// Try doing an XHR against a tracking domain (bug 1216793)
|
|
function reqListener() {
|
|
xhrItem = "loaded";
|
|
loaded("xhr");
|
|
}
|
|
function transferFailed() {
|
|
xhrItem = "failed";
|
|
loaded("xhr");
|
|
}
|
|
function transferCanceled() {
|
|
xhrItem = "canceled";
|
|
loaded("xhr");
|
|
}
|
|
var oReq = new XMLHttpRequest();
|
|
oReq.addEventListener("load", reqListener);
|
|
oReq.addEventListener("error", transferFailed);
|
|
oReq.addEventListener("abort", transferCanceled);
|
|
oReq.open("GET", "http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/evil.js");
|
|
oReq.send();
|
|
|
|
// Fetch from a tracking domain
|
|
fetch("http://tracking.example.com/tests/toolkit/components/url-classifier/tests/mochitest/evil.js").then(function(response) {
|
|
if(response.ok) {
|
|
fetchItem = "loaded";
|
|
loaded("fetch");
|
|
} else {
|
|
fetchItem = "badresponse";
|
|
loaded("fetch");
|
|
}
|
|
}).catch(function(error) {
|
|
fetchItem = "error";
|
|
loaded("fetch");
|
|
});
|
|
</script>
|
|
|
|
The following should not be hidden:
|
|
<div id="styleCheck">STYLE TEST</div>
|
|
|
|
</body>
|
|
</html>
|