mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 691534 - Use asyncFetch when loading files in aboutHome.xhtml [r=mbrubeck]
This commit is contained in:
parent
97e680e837
commit
8f31dd5827
@ -127,7 +127,9 @@
|
||||
<script type="application/javascript;version=1.8"><![CDATA[
|
||||
let Ci = Components.interfaces, Cc = Components.classes, Cu = Components.utils;
|
||||
let gChromeWin = null;
|
||||
|
||||
Cu.import("resource://gre/modules/AddonManager.jsm");
|
||||
Cu.import("resource://gre/modules/NetUtil.jsm");
|
||||
|
||||
function openLink(aElement) {
|
||||
try {
|
||||
@ -177,23 +179,21 @@
|
||||
uninitAddons();
|
||||
}
|
||||
|
||||
function _readFile(aFile) {
|
||||
try {
|
||||
let stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
|
||||
stream.init(aFile, 0x01, 0, 0);
|
||||
let cvstream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
|
||||
|
||||
let fileSize = stream.available();
|
||||
cvstream.init(stream, "UTF-8", fileSize, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
|
||||
let data = {};
|
||||
cvstream.readString(fileSize, data);
|
||||
let content = data.value;
|
||||
cvstream.close();
|
||||
return content.replace(/\r\n?/g, "\n");
|
||||
function _readFile(aFile, aCallback) {
|
||||
let channel = NetUtil.newChannel(aFile);
|
||||
channel.contentType = "application/json";
|
||||
NetUtil.asyncFetch(channel, function(aStream, aResult) {
|
||||
if (!Components.isSuccessCode(aResult)) {
|
||||
Cu.reportError("AboutHome: Could not read from " + aFile.leafName);
|
||||
aCallback(null);
|
||||
return;
|
||||
}
|
||||
catch (ex) { Cu.reportError(ex); }
|
||||
|
||||
return null;
|
||||
let content = NetUtil.readInputStreamToString(aStream, aStream.available()) || "";
|
||||
aStream.close();
|
||||
|
||||
aCallback(content.replace(/\r\n?/g, "\n"));
|
||||
});
|
||||
}
|
||||
|
||||
function openTabs(aURLs) {
|
||||
@ -218,7 +218,8 @@
|
||||
return;
|
||||
}
|
||||
|
||||
let data = JSON.parse(_readFile(session));
|
||||
_readFile(session, function(aContent) {
|
||||
let data = JSON.parse(aContent);
|
||||
if (!data || data.windows.length == 0) {
|
||||
noRecentTabs();
|
||||
return;
|
||||
@ -287,6 +288,7 @@
|
||||
} else {
|
||||
noRecentTabs();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function openRemoteTabs() {
|
||||
@ -315,26 +317,6 @@
|
||||
return file;
|
||||
},
|
||||
|
||||
_readFile: function(aFile) {
|
||||
try {
|
||||
let stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
|
||||
stream.init(aFile, 0x01, 0, 0);
|
||||
let cvstream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
|
||||
|
||||
let fileSize = stream.available();
|
||||
cvstream.init(stream, "UTF-8", fileSize, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
|
||||
let data = {};
|
||||
cvstream.readString(fileSize, data);
|
||||
let content = data.value;
|
||||
cvstream.close();
|
||||
return content.replace(/\r\n?/g, "\n");
|
||||
}
|
||||
catch (ex) {
|
||||
Cu.reportError(ex);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
_loadAddons: function(aAddons, aAddonCount, aTotalResults) {
|
||||
let list = document.getElementById("newAddons");
|
||||
let loading = document.getElementById("loadingAddons");
|
||||
@ -384,12 +366,17 @@
|
||||
},
|
||||
|
||||
loadFromCacheOrScheduleUpdate: function(aDelay) {
|
||||
let self = this;
|
||||
let file = this._getFile();
|
||||
if (file.exists()) {
|
||||
let json = JSON.parse(this._readFile(file));
|
||||
_readFile(file, function(aContent) {
|
||||
let json = JSON.parse(aContent);
|
||||
if (!json || json.addons.length == 0) {
|
||||
self._loadAddons([], 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
// Ignore addons already installed
|
||||
let self = this;
|
||||
let addonsCache = json.addons;
|
||||
AddonManager.getAllAddons(function(aAddons) {
|
||||
let addons = addonsCache.filter(function(addon) {
|
||||
@ -402,6 +389,7 @@
|
||||
|
||||
self._loadAddons(addons, addons.length, json.totalResults);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
setTimeout(function() {
|
||||
let aus = Cc["@mozilla.org/browser/addon-update-service;1"].getService(Ci.nsITimerCallback);
|
||||
|
Loading…
Reference in New Issue
Block a user