mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-29 12:54:46 +00:00
119 lines
3.6 KiB
HTML
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>
|