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
|
// 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/.
ChromeUtils.defineModuleGetter(
this,
"SyncDisconnect",
"resource://services-sync/SyncDisconnect.jsm"
);
let gSyncDisconnectDialog = {
init() {
if (SyncDisconnect.promiseDisconnectFinished) {
// There's a sanitization under way - just re-show our "waiting" state
// and close the dialog when it's complete.
this.waitForCompletion(SyncDisconnect.promiseDisconnectFinished);
}
},
// when either of the checkboxes are changed.
onDeleteOptionChange() {
let eitherChecked =
document.getElementById("deleteRemoteSyncData").checked ||
document.getElementById("deleteRemoteOtherData").checked;
let newTitle = eitherChecked
? "sync-disconnect-confirm-disconnect-delete"
: "sync-disconnect-confirm-disconnect";
let butDisconnect = document.getElementById("butDisconnect");
document.l10n.setAttributes(butDisconnect, newTitle);
},
accept(event) {
let options = {
sanitizeSyncData: document.getElementById("deleteRemoteSyncData").checked,
sanitizeBrowserData: document.getElementById("deleteRemoteOtherData")
.checked,
};
// And do the santize.
this.waitForCompletion(SyncDisconnect.disconnect(options));
},
waitForCompletion(promiseComplete) {
// Change the dialog to show we are waiting for completion.
document.getElementById("deleteOptionsContent").hidden = true;
document.getElementById("deletingContent").hidden = false;
// And do the santize.
promiseComplete
.catch(ex => {
console.error("Failed to sanitize", ex);
})
.then(() => {
// We dispatch a custom event so the caller knows how we were closed
// (if we were a dialog we'd get this for free, but we'd also lose the
// ability to keep the dialog open while the sanitize was running)
let closingEvent = new CustomEvent("dialogclosing", {
bubbles: true,
detail: { button: "accept" },
});
document.documentElement.dispatchEvent(closingEvent);
close();
});
},
};
|