Bug 1897278 - Add methods to BackupService to enable / disable encryption. r=backup-reviewers,kpatenio
Differential Revision: https://phabricator.services.mozilla.com/D211438
This commit is contained in:
@@ -31,6 +31,9 @@
|
||||
preference="browser.backup.log"
|
||||
/>BackupService debug logging enabled
|
||||
</li>
|
||||
<li>
|
||||
<input id="encryption-enabled" type="checkbox" />Encryption enabled
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
<section id="controls">
|
||||
|
||||
@@ -17,12 +17,39 @@ let DebugUI = {
|
||||
init() {
|
||||
let controls = document.querySelector("#controls");
|
||||
controls.addEventListener("click", this);
|
||||
|
||||
let encryptionEnabled = document.querySelector("#encryption-enabled");
|
||||
encryptionEnabled.addEventListener("click", this);
|
||||
|
||||
// We use `init` instead of `get` here, since this page might load before
|
||||
// the BackupService has had a chance to initialize itself.
|
||||
let service = BackupService.init();
|
||||
service.addEventListener("BackupService:StateUpdate", this);
|
||||
this.onStateUpdate();
|
||||
|
||||
// Kick-off reading any pre-existing encryption state off of the disk.
|
||||
service.loadEncryptionState();
|
||||
},
|
||||
|
||||
handleEvent(event) {
|
||||
let target = event.target;
|
||||
if (HTMLButtonElement.isInstance(event.target)) {
|
||||
this.onButtonClick(target);
|
||||
switch (event.type) {
|
||||
case "BackupService:StateUpdate": {
|
||||
this.onStateUpdate();
|
||||
break;
|
||||
}
|
||||
case "click": {
|
||||
let target = event.target;
|
||||
if (HTMLButtonElement.isInstance(event.target)) {
|
||||
this.onButtonClick(target);
|
||||
} else if (
|
||||
HTMLInputElement.isInstance(event.target) &&
|
||||
event.target.type == "checkbox"
|
||||
) {
|
||||
event.preventDefault();
|
||||
this.onCheckboxClick(target);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -111,9 +138,50 @@ let DebugUI = {
|
||||
);
|
||||
throw e;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
async onCheckboxClick(checkbox) {
|
||||
if (checkbox.id == "encryption-enabled") {
|
||||
let service = BackupService.get();
|
||||
if (checkbox.checked) {
|
||||
let password = prompt("What's the encryption password? (8 char min)");
|
||||
if (password != null) {
|
||||
try {
|
||||
await service.enableEncryption(password);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
} else if (confirm("Disable encryption?")) {
|
||||
try {
|
||||
await service.disableEncryption();
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onStateUpdate() {
|
||||
let service = BackupService.get();
|
||||
let state = service.state;
|
||||
|
||||
let encryptionEnabled = document.querySelector("#encryption-enabled");
|
||||
encryptionEnabled.checked = state.encryptionEnabled;
|
||||
},
|
||||
};
|
||||
|
||||
DebugUI.init();
|
||||
// Wait until the load event fires before setting up any listeners or updating
|
||||
// any of the state of the page. We do this in order to avoid having any of
|
||||
// our control states overwritten by SessionStore after a restoration, as
|
||||
// restoration of form state occurs _prior_ to the load event firing.
|
||||
addEventListener(
|
||||
"load",
|
||||
() => {
|
||||
DebugUI.init();
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user