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
|
/* 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 */
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;
}
}
},
};
|