summaryrefslogtreecommitdiffstats
path: root/toolkit/components/prompts/content/commonDialog.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/prompts/content/commonDialog.js')
-rw-r--r--toolkit/components/prompts/content/commonDialog.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/toolkit/components/prompts/content/commonDialog.js b/toolkit/components/prompts/content/commonDialog.js
new file mode 100644
index 0000000000..f1b401f5f1
--- /dev/null
+++ b/toolkit/components/prompts/content/commonDialog.js
@@ -0,0 +1,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]);
+ }
+}