mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 09:45:41 +00:00
Bug 1405491 Switch WebExtensions StartupCache to DeferredTask r=kmag
MozReview-Commit-ID: GfdM0hkAHqP --HG-- extra : rebase_source : 6e3638436056041790d7e6ad99e0b99cfda6a8d7
This commit is contained in:
parent
5a55bb3e50
commit
c0580db8aa
@ -20,7 +20,8 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetters(this, {
|
||||
AppConstants: "resource://gre/modules/AppConstants.jsm",
|
||||
DeferredSave: "resource://gre/modules/DeferredSave.jsm",
|
||||
AsyncShutdown: "resource://gre/modules/AsyncShutdown.jsm",
|
||||
DeferredTask: "resource://gre/modules/DeferredTask.jsm",
|
||||
E10SUtils: "resource:///modules/E10SUtils.jsm",
|
||||
MessageChannel: "resource://gre/modules/MessageChannel.jsm",
|
||||
OS: "resource://gre/modules/osfile.jsm",
|
||||
@ -1418,26 +1419,28 @@ StartupCache = {
|
||||
|
||||
file: OS.Path.join(OS.Constants.Path.localProfileDir, "startupCache", "webext.sc.lz4"),
|
||||
|
||||
get saver() {
|
||||
if (!this._saver) {
|
||||
async _saveNow() {
|
||||
let data = new Uint8Array(aomStartup.encodeBlob(this._data));
|
||||
await OS.File.writeAtomic(this.file, data, {tmpPath: `${this.file}.tmp`});
|
||||
},
|
||||
|
||||
async save() {
|
||||
if (!this._saveTask) {
|
||||
OS.File.makeDir(OS.Path.dirname(this.file), {
|
||||
ignoreExisting: true,
|
||||
from: OS.Constants.Path.localProfileDir,
|
||||
});
|
||||
|
||||
this._saver = new DeferredSave(this.file,
|
||||
() => this.getBlob(),
|
||||
{delay: 5000});
|
||||
this._saveTask = new DeferredTask(() => this._saveNow(), 5000);
|
||||
|
||||
AsyncShutdown.profileBeforeChange.addBlocker(
|
||||
"Flush WebExtension StartupCache",
|
||||
async () => {
|
||||
await this._saveTask.finalize();
|
||||
this._saveTask = null;
|
||||
});
|
||||
}
|
||||
return this._saver;
|
||||
},
|
||||
|
||||
async save() {
|
||||
return this.saver.saveChanges();
|
||||
},
|
||||
|
||||
getBlob() {
|
||||
return new Uint8Array(aomStartup.encodeBlob(this._data));
|
||||
return this._saveTask.arm();
|
||||
},
|
||||
|
||||
_data: null,
|
||||
|
Loading…
Reference in New Issue
Block a user