1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
/* 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/. */
/* eslint-env mozilla/frame-script */
"use strict";
const searchParams = new URLSearchParams(document.documentURI.split("?")[1]);
function initPage() {
if (!searchParams.get("e")) {
document.getElementById("error").remove();
}
const explanation1 = document.getElementById(
"insecure-explanation-unavailable"
);
const pageUrl = new URL(window.location.href.replace(/^view-source:/, ""));
document.l10n.setAttributes(
explanation1,
"about-httpsonly-explanation-unavailable2",
{ websiteUrl: pageUrl.host }
);
const baseSupportURL = RPMGetFormatURLPref("app.support.baseURL");
document
.getElementById("learnMoreLink")
.setAttribute("href", baseSupportURL + "https-only-prefs");
document
.getElementById("openInsecure")
.addEventListener("click", onOpenInsecureButtonClick);
if (window.top == window) {
document
.getElementById("goBack")
.addEventListener("click", onReturnButtonClick);
addAutofocus("#goBack", "beforeend");
} else {
document.getElementById("goBack").remove();
}
}
/* Button Events */
function onOpenInsecureButtonClick() {
RPMSendAsyncMessage("openInsecure", {
inFrame: window.top != window,
});
}
function onReturnButtonClick() {
RPMSendAsyncMessage("goBack");
}
/* Utils */
function addAutofocus(selector, position = "afterbegin") {
if (window.top != window) {
return;
}
var button = document.querySelector(selector);
var parent = button.parentNode;
button.remove();
button.setAttribute("autofocus", "true");
parent.insertAdjacentElement(position, button);
}
/* Initialize Page */
initPage();
// Dispatch this event so tests can detect that we finished loading the error page.
// We're using the same event name as neterror because BrowserTestUtils.jsm relies on that.
let event = new CustomEvent("AboutNetErrorLoad", { bubbles: true });
document.dispatchEvent(event);
|