mirror of
https://github.com/Feodor2/Mypal68.git
synced 2025-06-18 23:05:40 -04:00
82 lines
2.6 KiB
JavaScript
82 lines
2.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/* eslint-env browser */
|
|
/* eslint no-unused-vars: [2, {"vars": "local"}] */
|
|
/* import-globals-from ../../../shared/test/shared-head.js */
|
|
|
|
"use strict";
|
|
|
|
// Load the shared-head file first.
|
|
Services.scriptloader.loadSubScript(
|
|
"chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js",
|
|
this
|
|
);
|
|
|
|
/**
|
|
* Set all preferences needed to enable service worker debugging and testing.
|
|
*/
|
|
async function enableServiceWorkerDebugging() {
|
|
// Enable service workers.
|
|
await pushPref("dom.serviceWorkers.enabled", true);
|
|
// Accept workers from mochitest's http.
|
|
await pushPref("dom.serviceWorkers.testing.enabled", true);
|
|
// Force single content process, see Bug 1231208 for the SW refactor that should enable
|
|
// SW debugging in multi-e10s.
|
|
await pushPref("dom.ipc.processCount", 1);
|
|
|
|
// Wait for dom.ipc.processCount to be updated before releasing processes.
|
|
Services.ppmm.releaseCachedProcesses();
|
|
}
|
|
|
|
async function enableApplicationPanel() {
|
|
// Enable all preferences related to service worker debugging.
|
|
await enableServiceWorkerDebugging();
|
|
|
|
// Enable application panel in DevTools.
|
|
await pushPref("devtools.application.enabled", true);
|
|
}
|
|
|
|
function getWorkerContainers(doc) {
|
|
return doc.querySelectorAll(".js-sw-container");
|
|
}
|
|
|
|
function navigate(target, url, waitForTargetEvent = "navigate") {
|
|
executeSoon(() => target.navigateTo({ url }));
|
|
return once(target, waitForTargetEvent);
|
|
}
|
|
|
|
async function openNewTabAndApplicationPanel(url) {
|
|
const tab = await addTab(url);
|
|
const target = await TargetFactory.forTab(tab);
|
|
|
|
const toolbox = await gDevTools.showToolbox(target, "application");
|
|
const panel = toolbox.getCurrentPanel();
|
|
return { panel, tab, target, toolbox };
|
|
}
|
|
|
|
async function unregisterAllWorkers(client) {
|
|
info("Wait until all workers have a valid registrationFront");
|
|
let workers;
|
|
await asyncWaitUntil(async function() {
|
|
workers = await client.mainRoot.listAllWorkers();
|
|
const allWorkersRegistered = workers.service.every(
|
|
worker => !!worker.registrationFront
|
|
);
|
|
return allWorkersRegistered;
|
|
});
|
|
|
|
info("Unregister all service workers");
|
|
for (const worker of workers.service) {
|
|
await worker.registrationFront.unregister();
|
|
}
|
|
}
|
|
|
|
async function waitForWorkerRegistration(swTab) {
|
|
info("Wait until the registration appears on the window");
|
|
const swBrowser = swTab.linkedBrowser;
|
|
await asyncWaitUntil(async () => ContentTask.spawn(swBrowser, {}, function() {
|
|
return content.wrappedJSObject.getRegistration();
|
|
}));
|
|
}
|