mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 00:05:36 +00:00
Bug 1147699 - Part 9: Add tests for FetchEvent.request.context when intercepting embeds and objects; r=nsm
This commit is contained in:
parent
3ccccb6763
commit
dd3079f0ba
@ -33,13 +33,11 @@ self.addEventListener("fetch", function(event) {
|
||||
event.respondWith(fetch(event.request));
|
||||
}
|
||||
} else if (event.request.url.indexOf("csp-report.sjs") >= 0) {
|
||||
event.respondWith(clients.matchAll()
|
||||
.then(function(clients) {
|
||||
clients.forEach(function(c) {
|
||||
c.postMessage({data: "csp-report", context: event.request.context});
|
||||
});
|
||||
return new Response("ack");
|
||||
}));
|
||||
respondToServiceWorker(event, "csp-report");
|
||||
} else if (event.request.url.indexOf("embed") >= 0) {
|
||||
respondToServiceWorker(event, "embed");
|
||||
} else if (event.request.url.indexOf("object") >= 0) {
|
||||
respondToServiceWorker(event, "object");
|
||||
}
|
||||
// Fail any request that we don't know about.
|
||||
try {
|
||||
@ -49,3 +47,13 @@ self.addEventListener("fetch", function(event) {
|
||||
// code above has called respondWith too.
|
||||
}
|
||||
});
|
||||
|
||||
function respondToServiceWorker(event, data) {
|
||||
event.respondWith(clients.matchAll()
|
||||
.then(function(clients) {
|
||||
clients.forEach(function(c) {
|
||||
c.postMessage({data: data, context: event.request.context});
|
||||
});
|
||||
return new Response("ack");
|
||||
}));
|
||||
}
|
||||
|
@ -110,6 +110,37 @@
|
||||
});
|
||||
}
|
||||
|
||||
function testEmbed() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var embed = document.createElement("embed");
|
||||
embed.src = "embed";
|
||||
document.documentElement.appendChild(embed);
|
||||
navigator.serviceWorker.addEventListener("message", function onMessage(e) {
|
||||
if (e.data.data == "embed") {
|
||||
// FIXME: Bug 1148030: This should be "embed".
|
||||
is(e.data.context, "object", "Expected the object context on an embed");
|
||||
navigator.serviceWorker.removeEventListener("message", onMessage);
|
||||
resolve();
|
||||
}
|
||||
}, false);
|
||||
});
|
||||
}
|
||||
|
||||
function testObject() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var object = document.createElement("object");
|
||||
object.data = "object";
|
||||
document.documentElement.appendChild(object);
|
||||
navigator.serviceWorker.addEventListener("message", function onMessage(e) {
|
||||
if (e.data.data == "object") {
|
||||
is(e.data.context, "object", "Expected the object context on an object");
|
||||
navigator.serviceWorker.removeEventListener("message", onMessage);
|
||||
resolve();
|
||||
}
|
||||
}, false);
|
||||
});
|
||||
}
|
||||
|
||||
Promise.all([
|
||||
testFetch(),
|
||||
testImage(),
|
||||
@ -119,6 +150,8 @@
|
||||
testVideo(),
|
||||
testBeacon(),
|
||||
testCSPReport(),
|
||||
testEmbed(),
|
||||
testObject(),
|
||||
])
|
||||
.then(function() {
|
||||
finish();
|
||||
|
Loading…
Reference in New Issue
Block a user