mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 602983 - Add a way to check for updates from about:firefox [r=mbrubeck]
This commit is contained in:
parent
39cd805be3
commit
b093279bb9
@ -67,6 +67,10 @@
|
||||
<img src="about:logo" alt="&brandShortName;"/>
|
||||
#expand <p id="version">&about.version; __MOZ_APP_VERSION__</p>
|
||||
</div>
|
||||
<button id="update" onclick="checkForUpdates();">&aboutPage.checkForUpdates.button;</button>
|
||||
<span id="update-message-checking">&aboutPage.checkForUpdates.checking;</span>
|
||||
<span id="update-message-none">&aboutPage.checkForUpdates.none;</span>
|
||||
<span id="update-message-found">&aboutPage.checkForUpdates.found;</span>
|
||||
|
||||
<ul id="aboutLinks">
|
||||
<li><a id="faqURL">&aboutPage.faq.label;</a></li>
|
||||
@ -83,10 +87,11 @@
|
||||
</div>
|
||||
|
||||
<script type="application/javascript;version=1.8"><![CDATA[
|
||||
let Ci = Components.interfaces, Cc = Components.classes, Cu = Components.utils, Cr = Components.results;
|
||||
|
||||
// get URLs from prefs
|
||||
try {
|
||||
let formatter = Components.classes["@mozilla.org/toolkit/URLFormatterService;1"]
|
||||
.getService(Components.interfaces.nsIURLFormatter);
|
||||
let formatter = Cc["@mozilla.org/toolkit/URLFormatterService;1"].getService(Ci.nsIURLFormatter);
|
||||
|
||||
let links = [
|
||||
{id: "releaseNotesURL", pref: "app.releaseNotesURL"},
|
||||
@ -108,6 +113,120 @@
|
||||
let uaP = document.getElementById("aboutUA");
|
||||
uaP.appendChild(document.createTextNode(ua));
|
||||
}
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
let Updater = {
|
||||
isChecking: false,
|
||||
update: null,
|
||||
|
||||
get updateEnabled() {
|
||||
try {
|
||||
return Services.prefs.getBoolPref("app.update.enabled");
|
||||
}
|
||||
catch (e) { }
|
||||
return false; // Mobile default is false
|
||||
},
|
||||
|
||||
startDownload: function() {
|
||||
if (!this.update)
|
||||
this.update = this.um.activeUpdate;
|
||||
|
||||
this.aus.pauseDownload();
|
||||
let state = this.aus.downloadUpdate(this.update, false);
|
||||
if (state == "failed")
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(Updater, "aus",
|
||||
"@mozilla.org/updates/update-service;1",
|
||||
"nsIApplicationUpdateService");
|
||||
XPCOMUtils.defineLazyServiceGetter(Updater, "checker",
|
||||
"@mozilla.org/updates/update-checker;1",
|
||||
"nsIUpdateChecker");
|
||||
XPCOMUtils.defineLazyServiceGetter(Updater, "um",
|
||||
"@mozilla.org/updates/update-manager;1",
|
||||
"nsIUpdateManager");
|
||||
|
||||
let UpdateCheckListener = {
|
||||
onProgress: function(aRequest, aPosition, aTotalSize) {
|
||||
},
|
||||
|
||||
onCheckComplete: function(aRequest, aUpdates, aUpdateCount) {
|
||||
Updater.isChecking = false;
|
||||
|
||||
Updater.update = Updater.aus.selectUpdate(aUpdates, aUpdates.length);
|
||||
if (!Updater.update || !Updater.aus.canApplyUpdates) {
|
||||
showUpdateMessage(false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Updater.update.appVersion || Services.vc.compare(Updater.update.appVersion, Services.appinfo.version) < 0) {
|
||||
showUpdateMessage(false);
|
||||
return;
|
||||
}
|
||||
|
||||
showUpdateMessage(true);
|
||||
Updater.startDownload();
|
||||
},
|
||||
|
||||
onError: function(aRequest, aUpdate) {
|
||||
// Errors in the update check are treated as no updates found. If the
|
||||
// update check fails repeatedly without a success the user will be
|
||||
// notified with the normal app update user interface so this is safe.
|
||||
Updater.isChecking = false;
|
||||
showUpdateMessage(false);
|
||||
},
|
||||
|
||||
QueryInterface: function(aIID) {
|
||||
if (!aIID.equals(Ci.nsIUpdateCheckListener) && !aIID.equals(Ci.nsISupports))
|
||||
throw Cr.NS_ERROR_NO_INTERFACE;
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
if (!Updater.updateEnabled)
|
||||
document.getElementById("update").style.display = "none";
|
||||
|
||||
function checkForUpdates() {
|
||||
Updater.isChecking = true;
|
||||
showCheckingMessage();
|
||||
|
||||
Updater.checker.checkForUpdates(UpdateCheckListener, true);
|
||||
}
|
||||
|
||||
let updateButton = document.getElementById("update");
|
||||
let checkingSpan = document.getElementById("update-message-checking");
|
||||
let noneSpan = document.getElementById("update-message-none");
|
||||
let foundSpan = document.getElementById("update-message-found");
|
||||
|
||||
function showCheckingMessage() {
|
||||
updateButton.style.display = "none";
|
||||
noneSpan.style.display = "none";
|
||||
foundSpan.style.display = "none";
|
||||
checkingSpan.style.display = "block";
|
||||
}
|
||||
|
||||
function showUpdateMessage(aHasUpdate) {
|
||||
updateButton.style.display = "none";
|
||||
checkingSpan.style.display = "none";
|
||||
if (aHasUpdate) {
|
||||
noneSpan.style.display = "none";
|
||||
foundSpan.style.display = "block";
|
||||
} else {
|
||||
foundSpan.style.display = "none";
|
||||
noneSpan.style.display = "block";
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
noneSpan.style.display = "none";
|
||||
foundSpan.style.display = "none";
|
||||
checkingSpan.style.display = "none";
|
||||
updateButton.style.display = "block";
|
||||
}, 2000);
|
||||
}
|
||||
]]></script>
|
||||
</div>
|
||||
</body>
|
||||
|
@ -5,6 +5,11 @@
|
||||
<!ENTITY aboutPage.rights.label "Know Your Rights">
|
||||
<!ENTITY aboutPage.relNotes.label "Release Notes">
|
||||
<!ENTITY aboutPage.credits.label "Credits">
|
||||
<!ENTITY aboutPage.checkForUpdates.button "Check for Updates">
|
||||
<!ENTITY aboutPage.checkForUpdates.checking "Looking for updates…">
|
||||
<!ENTITY aboutPage.checkForUpdates.none "No updates available">
|
||||
<!ENTITY aboutPage.checkForUpdates.found "Update available">
|
||||
|
||||
|
||||
<!-- LOCALIZATION NOTE:
|
||||
These strings are concatenated in order. Unneeded strings may be left blank.
|
||||
|
@ -45,6 +45,21 @@
|
||||
margin: -24px 20px 0 118px;
|
||||
}
|
||||
|
||||
#update {
|
||||
float: right;
|
||||
padding: 8px;
|
||||
margin-top: -32px;
|
||||
}
|
||||
|
||||
#update-message-checking,
|
||||
#update-message-none,
|
||||
#update-message-found {
|
||||
display: none;
|
||||
float: right;
|
||||
padding: 8px;
|
||||
margin-top: -32px;
|
||||
}
|
||||
|
||||
#aboutLinks {
|
||||
background-color: white;
|
||||
padding: 5px;
|
||||
|
Loading…
Reference in New Issue
Block a user