forked from mirrors/gecko-dev
Differential Revision: https://phabricator.services.mozilla.com/D16377 --HG-- extra : rebase_source : 6c4311387d25de425806aeb6c4691e12c9fcb855
57 lines
2.2 KiB
JavaScript
57 lines
2.2 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/.
|
|
|
|
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();
|
|
});
|
|
},
|
|
};
|