blob: a155382c2d9019fc08e1c83e3ee5437368330b67 [file] [log] [blame]
<html>
<head>
<script src="../inspector-test.js"></script>
<script src="service-workers-test.js"></script>
<script src="../resources-test.js"></script>
<script src="../console-test.js"></script>
<script>
function test()
{
// Need to enable networkInWorkers experiment for off-main-thread-fetch virtual test.
Runtime.experiments.enableForTest("networkInWorkers");
function waitForTarget()
{
return new Promise(function(resolve) {
var sniffer = {
targetAdded: function(target)
{
if (InspectorTest.isServiceWorker(target)) {
resolve();
SDK.targetManager.unobserveTargets(sniffer);
}
},
targetRemoved: function(e)
{
}
};
SDK.targetManager.observeTargets(sniffer);
});
}
function waitForConsoleMessage(regex)
{
return new Promise(function(resolve) {
ConsoleModel.consoleModel.addEventListener(ConsoleModel.ConsoleModel.Events.MessageAdded, sniff);
function sniff(e)
{
if (e.data && regex.test(e.data.messageText)) {
resolve(e.data);
ConsoleModel.consoleModel.removeEventListener(ConsoleModel.ConsoleModel.Events.MessageAdded, sniff);
}
}
});
}
var scriptURL = "http://127.0.0.1:8000/inspector/service-workers/resources/user-agent-override-worker.js";
var scope = "http://127.0.0.1:8000/inspector/service-workers/resources/user-agent-override/";
var userAgentString = "Mozilla/5.0 (Overridden User Agent)";
var originalUserAgent = navigator.userAgent;
InspectorTest.addResult("Enable emulation and set User-Agent override");
SDK.multitargetNetworkManager.setUserAgentOverride(userAgentString);
InspectorTest.registerServiceWorker(scriptURL, scope)
.then(waitForTarget)
.then(InspectorTest.postToServiceWorker.bind(InspectorTest, scope, "message"))
.then(waitForConsoleMessage.bind(null, /HTTP_USER_AGENT/))
.then(function(msg) {
InspectorTest.addResult("Overriden user agent: " + msg.messageText);
InspectorTest.addResult("Disable emulation");
SDK.multitargetNetworkManager.setUserAgentOverride("");
return InspectorTest.unregisterServiceWorker(scope);
})
.then(function() {
return InspectorTest.registerServiceWorker(scriptURL + '?2', scope);
})
.then(waitForTarget)
.then(InspectorTest.postToServiceWorker.bind(InspectorTest, scope, "message"))
.then(waitForConsoleMessage.bind(null, /HTTP_USER_AGENT/))
.then(function(msg) {
InspectorTest.addResult("User agent without override is correct: " + (msg.messageText != userAgentString));
return InspectorTest.unregisterServiceWorker(scope);
})
.then(function() {
InspectorTest.addResult("Test complete");
InspectorTest.completeTest();
})
.catch(function(err) {
console.log(err);
InspectorTest.completeTest();
});
}
</script>
</head>
<body onload="runTest()">
<p>Tests that User-Agent override works for requests from Service Workers.</p>
</body>
</html>