diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:34:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:34:42 +0000 |
commit | da4c7e7ed675c3bf405668739c3012d140856109 (patch) | |
tree | cdd868dba063fecba609a1d819de271f0d51b23e /devtools/server/connectors/js-process-actor/target-watchers/service_worker.sys.mjs | |
parent | Adding upstream version 125.0.3. (diff) | |
download | firefox-da4c7e7ed675c3bf405668739c3012d140856109.tar.xz firefox-da4c7e7ed675c3bf405668739c3012d140856109.zip |
Adding upstream version 126.0.upstream/126.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/server/connectors/js-process-actor/target-watchers/service_worker.sys.mjs')
-rw-r--r-- | devtools/server/connectors/js-process-actor/target-watchers/service_worker.sys.mjs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/devtools/server/connectors/js-process-actor/target-watchers/service_worker.sys.mjs b/devtools/server/connectors/js-process-actor/target-watchers/service_worker.sys.mjs new file mode 100644 index 0000000000..f2f307f297 --- /dev/null +++ b/devtools/server/connectors/js-process-actor/target-watchers/service_worker.sys.mjs @@ -0,0 +1,51 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +import { WorkerTargetWatcherClass } from "resource://devtools/server/connectors/js-process-actor/target-watchers/worker.sys.mjs"; +import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; + +const lazy = {}; +XPCOMUtils.defineLazyServiceGetter( + lazy, + "wdm", + "@mozilla.org/dom/workers/workerdebuggermanager;1", + "nsIWorkerDebuggerManager" +); + +class ServiceWorkerTargetWatcherClass extends WorkerTargetWatcherClass { + constructor() { + super("service_worker"); + } + + /** + * Called whenever the debugged browser element navigates to a new page + * and the URL's host changes. + * This is used to maintain the list of active Service Worker targets + * based on that host name. + * + * @param {Object} watcherDataObject + * See ContentProcessWatcherRegistry + */ + async updateBrowserElementHost(watcherDataObject) { + const { sessionData } = watcherDataObject; + + // Create target actor matching this new host. + // Note that we may be navigating to the same host name and the target will already exist. + const promises = []; + for (const dbg of lazy.wdm.getWorkerDebuggerEnumerator()) { + const alreadyCreated = watcherDataObject.workers.some( + info => info.dbg === dbg + ); + if ( + this.shouldHandleWorker(sessionData, dbg, "service_worker") && + !alreadyCreated + ) { + promises.push(this.createWorkerTargetActor(watcherDataObject, dbg)); + } + } + await Promise.all(promises); + } +} + +export const ServiceWorkerTargetWatcher = new ServiceWorkerTargetWatcherClass(); |