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, {
|
XPCOMUtils.defineLazyModuleGetters(this, {
|
||||||
AppConstants: "resource://gre/modules/AppConstants.jsm",
|
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",
|
E10SUtils: "resource:///modules/E10SUtils.jsm",
|
||||||
MessageChannel: "resource://gre/modules/MessageChannel.jsm",
|
MessageChannel: "resource://gre/modules/MessageChannel.jsm",
|
||||||
OS: "resource://gre/modules/osfile.jsm",
|
OS: "resource://gre/modules/osfile.jsm",
|
||||||
@ -1418,26 +1419,28 @@ StartupCache = {
|
|||||||
|
|
||||||
file: OS.Path.join(OS.Constants.Path.localProfileDir, "startupCache", "webext.sc.lz4"),
|
file: OS.Path.join(OS.Constants.Path.localProfileDir, "startupCache", "webext.sc.lz4"),
|
||||||
|
|
||||||
get saver() {
|
async _saveNow() {
|
||||||
if (!this._saver) {
|
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), {
|
OS.File.makeDir(OS.Path.dirname(this.file), {
|
||||||
ignoreExisting: true,
|
ignoreExisting: true,
|
||||||
from: OS.Constants.Path.localProfileDir,
|
from: OS.Constants.Path.localProfileDir,
|
||||||
});
|
});
|
||||||
|
|
||||||
this._saver = new DeferredSave(this.file,
|
this._saveTask = new DeferredTask(() => this._saveNow(), 5000);
|
||||||
() => this.getBlob(),
|
|
||||||
{delay: 5000});
|
AsyncShutdown.profileBeforeChange.addBlocker(
|
||||||
|
"Flush WebExtension StartupCache",
|
||||||
|
async () => {
|
||||||
|
await this._saveTask.finalize();
|
||||||
|
this._saveTask = null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return this._saver;
|
return this._saveTask.arm();
|
||||||
},
|
|
||||||
|
|
||||||
async save() {
|
|
||||||
return this.saver.saveChanges();
|
|
||||||
},
|
|
||||||
|
|
||||||
getBlob() {
|
|
||||||
return new Uint8Array(aomStartup.encodeBlob(this._data));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_data: null,
|
_data: null,
|
||||||
|
Loading…
Reference in New Issue
Block a user