Source code

Revision control

Copy as Markdown

Other Tools

/* 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/. */
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
getBrowsingContextDetails:
"chrome://remote/content/shared/messagehandler/transports/BrowsingContextUtils.sys.mjs",
Log: "chrome://remote/content/shared/Log.sys.mjs",
truncate: "chrome://remote/content/shared/Log.sys.mjs",
});
ChromeUtils.defineLazyGetter(lazy, "logger", () => lazy.Log.get());
export class WebDriverDocumentInsertedChild extends JSProcessActorChild {
actorCreated() {
lazy.logger.trace(
`WebDriverDocumentInsertedChild actor created for PID ${Services.appinfo.processID}`
);
}
observe = async (subject, topic) => {
if (topic === "initial-document-element-inserted") {
const window = subject?.defaultView;
// Ignore events without a window (such as from SVG documents).
if (!window) {
return;
}
const context = window.browsingContext;
const url = window.location.href;
const payload = {
contextDetails: lazy.getBrowsingContextDetails(context),
url,
};
try {
this.sendAsyncMessage(
"WebDriverDocumentInsertedChild:documentInserted",
payload
);
} catch {
lazy.logger.trace(
lazy.truncate`Could not send WebDriverDocumentInsertedChild:documentInserted for URL: ${url}`
);
}
}
};
}