tenfourfox/devtools/shared/webconsole/test/test_console_serviceworker_cached.html
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

119 lines
3.6 KiB
HTML

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for getCachedMessages and Service Workers</title>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for getCachedMessages and Service Workers</p>
<script class="testbody" type="text/javascript;version=1.8">
SimpleTest.waitForExplicitFinish();
let BASE_URL = "https://example.com/chrome/devtools/shared/webconsole/test/";
let SERVICE_WORKER_URL = BASE_URL + "helper_serviceworker.js";
let FRAME_URL = BASE_URL + "sandboxed_iframe.html";
let firstTabExpectedCalls = [
{
level: "log",
filename: /helper_serviceworker/,
arguments: ['script evaluation'],
},
{
level: "log",
filename: /helper_serviceworker/,
arguments: ['install event'],
},
{
level: "log",
filename: /helper_serviceworker/,
arguments: ['activate event'],
},
];
let secondTabExpectedCalls = [
{
level: "log",
filename: /helper_serviceworker/,
arguments: ['fetch event: ' + FRAME_URL],
}
];
let startTest = Task.async(function*() {
removeEventListener("load", startTest);
yield new Promise(resolve => {
SpecialPowers.pushPrefEnv({"set": [
["dom.serviceWorkers.enabled", true],
["dom.serviceWorkers.interception.enabled", true],
["devtools.webconsole.filter.serviceworkers", true]
]}, resolve);
});
info("Adding a tab and attaching a service worker");
let tab1 = yield addTab(FRAME_URL);
let swr = yield withActiveServiceWorker(tab1.linkedBrowser.contentWindow,
SERVICE_WORKER_URL);
yield new Promise(resolve => {
info("Attaching console to tab 1");
attachConsoleToTab(["ConsoleAPI"], function(state) {
state.client.getCachedMessages(["ConsoleAPI"], function(calls) {
checkConsoleAPICalls(calls.messages, firstTabExpectedCalls);
closeDebugger(state, resolve);
});
});
});
// Because this tab is being added after the original messages happened,
// they shouldn't show up in a call to getCachedMessages.
// However, there is a fetch event which is logged due to loading the tab.
info("Adding a new tab at the same URL");
let tab2 = yield addTab(FRAME_URL);
yield new Promise(resolve => {
info("Attaching console to tab 2");
attachConsoleToTab(["ConsoleAPI"], function(state) {
state.client.getCachedMessages(["ConsoleAPI"], function(calls) {
checkConsoleAPICalls(calls.messages, secondTabExpectedCalls);
closeDebugger(state, resolve);
});
});
});
yield swr.unregister();
SimpleTest.finish();
});
addEventListener("load", startTest);
// This test needs to add tabs that are controlled by a service worker
// so use some special powers to dig around and find gBrowser
let {gBrowser} = SpecialPowers._getTopChromeWindow(SpecialPowers.window.get());
SimpleTest.registerCleanupFunction(() => {
while (gBrowser.tabs.length > 1) {
gBrowser.removeCurrentTab();
}
});
function addTab(url) {
info("Adding a new tab with URL: '" + url + "'");
return new Promise(resolve => {
let tab = gBrowser.selectedTab = gBrowser.addTab(url);
gBrowser.selectedBrowser.addEventListener("load", function onload() {
gBrowser.selectedBrowser.removeEventListener("load", onload, true);
info("URL '" + url + "' loading complete");
resolve(tab);
}, true);
});
}
</script>
</body>
</html>