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/. */
export class TLSCertificateBindingChild extends JSWindowActorChild {
#tlsCertificateBindingPromise = undefined;
constructor() {
super();
}
async receiveMessage(message) {
if (message.name == "TLSCertificateBinding::Get") {
this.maybeFetchTLSCertificateBinding();
return this.#tlsCertificateBindingPromise;
}
return undefined;
}
maybeFetchTLSCertificateBinding() {
// `#tlsCertificateBindingPromise` will be undefined if we haven't yet
// attempted fetching for this document.
if (this.#tlsCertificateBindingPromise === undefined) {
this.#tlsCertificateBindingPromise = this.#fetchTLSCertificateBinding();
}
}
async #fetchTLSCertificateBinding() {
if (this.document.tlsCertificateBindingURI) {
try {
let response = await this.contentWindow.fetch(
this.document.tlsCertificateBindingURI.spec
);
if (response.ok) {
return response.text();
}
} catch (e) {
console.error("Fetching TLS certificate binding failed:", e);
}
}
// If there is no TLS certificate binding URI, or if fetching it failed,
// return null to indicate that an attempt to fetch it was made.
return null;
}
}