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
79
80
|
/* 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 { CommonDialog } = ChromeUtils.import(
"resource://gre/modules/CommonDialog.jsm"
);
var propBag, args, Dialog;
function commonDialogOnLoad() {
propBag = window.arguments[0]
.QueryInterface(Ci.nsIWritablePropertyBag2)
.QueryInterface(Ci.nsIWritablePropertyBag);
// Convert to a JS object
args = {};
for (let prop of propBag.enumerator) {
args[prop.name] = prop.value;
}
let dialog = document.getElementById("commonDialog");
let ui = {
prompt: window,
loginContainer: document.getElementById("loginContainer"),
loginTextbox: document.getElementById("loginTextbox"),
loginLabel: document.getElementById("loginLabel"),
password1Container: document.getElementById("password1Container"),
password1Textbox: document.getElementById("password1Textbox"),
password1Label: document.getElementById("password1Label"),
infoBody: document.getElementById("infoBody"),
infoTitle: document.getElementById("infoTitle"),
infoIcon: document.getElementById("infoIcon"),
checkbox: document.getElementById("checkbox"),
checkboxContainer: document.getElementById("checkboxContainer"),
button3: dialog.getButton("extra2"),
button2: dialog.getButton("extra1"),
button1: dialog.getButton("cancel"),
button0: dialog.getButton("accept"),
focusTarget: window,
};
Dialog = new CommonDialog(args, ui);
window.addEventListener("dialogclosing", function(aEvent) {
if (aEvent.detail?.abort) {
Dialog.abortPrompt();
}
});
document.addEventListener("dialogaccept", function() {
Dialog.onButton0();
});
document.addEventListener("dialogcancel", function() {
Dialog.onButton1();
});
document.addEventListener("dialogextra1", function() {
Dialog.onButton2();
window.close();
});
document.addEventListener("dialogextra2", function() {
Dialog.onButton3();
window.close();
});
Dialog.onLoad(dialog);
// resize the window to the content
window.sizeToContent();
// If the icon hasn't loaded yet, size the window to the content again when
// it does, as its layout can change.
ui.infoIcon.addEventListener("load", () => window.sizeToContent());
window.getAttention();
}
function commonDialogOnUnload() {
// Convert args back into property bag
for (let propName in args) {
propBag.setProperty(propName, args[propName]);
}
}
|