fune/browser/components/preferences/in-content/syncChooseWhatToSync.js
Kirk Steuber 589b7532ea Bug 1585482 - Restructure all <xul:dialog> usages such that they are not the top level element r=bgrins
This patch also includes necessary JS changes to support this. Most commonly, the dialog was accessed with document.documentElement, which needed to be changed now that the dialog is not the top level element.

Differential Revision: https://phabricator.services.mozilla.com/D52411

--HG--
extra : moz-landing-system : lando
2019-12-10 18:25:59 +00:00

62 lines
2.3 KiB
JavaScript

/* 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/. */
/* import-globals-from ../../../../toolkit/content/preferencesBindings.js */
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
Preferences.addAll([
{ id: "services.sync.engine.addons", type: "bool" },
{ id: "services.sync.engine.bookmarks", type: "bool" },
{ id: "services.sync.engine.history", type: "bool" },
{ id: "services.sync.engine.tabs", type: "bool" },
{ id: "services.sync.engine.prefs", type: "bool" },
{ id: "services.sync.engine.passwords", type: "bool" },
{ id: "services.sync.engine.addresses", type: "bool" },
{ id: "services.sync.engine.creditcards", type: "bool" },
]);
let gSyncChooseWhatToSync = {
init() {
this._adjustForPrefs();
let options = window.arguments[0];
if (options.disconnectFun) {
// We offer 'disconnect'
document.addEventListener("dialogextra2", function() {
options.disconnectFun().then(disconnected => {
if (disconnected) {
window.close();
}
});
});
} else {
// no "disconnect" - hide the button.
document
.getElementById("syncChooseOptions")
.getButton("extra2").hidden = true;
}
},
// make whatever tweaks we need based on preferences.
_adjustForPrefs() {
// These 2 engines are unique in that there are prefs that make the
// entire engine unavailable (which is distinct from "disabled").
let enginePrefs = [
["services.sync.engine.addresses", ".sync-engine-addresses"],
["services.sync.engine.creditcards", ".sync-engine-creditcards"],
];
for (let [enabledPref, className] of enginePrefs) {
let availablePref = enabledPref + ".available";
// If the engine is enabled we force it to be available, otherwise we see
// spooky things happen (like it magically re-appear later)
if (Services.prefs.getBoolPref(enabledPref, false)) {
Services.prefs.setBoolPref(availablePref, true);
}
if (!Services.prefs.getBoolPref(availablePref)) {
let elt = document.querySelector(className);
elt.hidden = true;
}
}
},
};