WebAPI/SystemUpdateAPI: Difference between revisions
< WebAPI
Jump to navigation
Jump to search
JamesCheng (talk | contribs) (→Basic WebIDL Interface: Ident) |
JamesCheng (talk | contribs) (→Examples: update sample code) |
||
| Line 48: | Line 48: | ||
== Examples == | == Examples == | ||
navigator.udpateManager.getProviders().then(function(providerInfos) { | navigator.udpateManager.getProviders().then(function(providerInfos) { | ||
var providerInfo = providerInfos[0]; | var providerInfo = providerInfos[0]; | ||
return navigator.updateManager.setActiveProvider(providerInfo.uuid); | return navigator.updateManager.setActiveProvider(providerInfo.uuid); | ||
}).then(function(provider) { | }).then(function(provider) { | ||
// notify available update | // notify available update | ||
checkButton.onclick = function(event) { | checkButton.onclick = function(event) { | ||
| Line 62: | Line 62: | ||
}; | }; | ||
}; | }; | ||
// display download progress | |||
// display download progress | |||
provider.onprogress = function(event) { | provider.onprogress = function(event) { | ||
showDownloadProgress(event); | showDownloadProgress(event); | ||
}; | }; | ||
// prompt when update package is ready to apply | // prompt when update package is ready to apply | ||
provider.onupdateready = function(event) { | provider.onupdateready = function(event) { | ||
showUpdateReady(); | |||
applyButton.onclick = function() { | |||
provider.applyUpdate(); | |||
}; | |||
}; | }; | ||
}; | }); | ||
Scheduled update | |||
var myDate = new Date("May 15, 2012 16:20:00"); | |||
var myDate = new Date("May 15, 2012 16:20:00"); | var req = navigator.mozAlarms.add(myDate, "ignoreTimezone", provider.info); | ||
var req = navigator.mozAlarms.add(myDate, "ignoreTimezone", provider.info); | req.onsuccess = function(event) { | ||
req.onsuccess = function(event) { | var info = event.alarm.data; | ||
navigator.updateManager.setActiveProvider(info.uuid) | |||
.then(function(provider) { | |||
provider.checkForUpdate(); | |||
}); | |||
}; | |||
}; | |||
Revision as of 08:35, 3 August 2015
Goals
Contributors
Shih-Chiang Chien, James Cheng
Status
Features
- .
- .
- .
Proposed API
Basic WebIDL Interface
[JSImplementation="@mozilla.org/system-update-provider;1",
CheckPermissions="system-update",
Pref="dom.system_update.enabled"]
interface SystemUpdateProvider : EventTarget {
readonly attribute DOMString name;
readonly attribute DOMString uuid;
attribute EventHandler onupdateavailable;
attribute EventHandler onprogress;
attribute EventHandler onupdateready;
attribute EventHandler onerror;
void checkForUpdate();
void startDownload();
void stopDownload();
void applyUpdate();
boolean setParameter(DOMString name, DOMString value);
DOMString getParameter(DOMString name);
};
[NavigatorProperty="updateManager",
JSImplementation="@mozilla.org/system-update-manager;1",
CheckPermissions="system-update",
Pref="dom.system_update.enabled"]
interface SystemUpdateManager {
Promise<sequence<SystemUpdateProviderInfo>> getProviders();
Promise<SystemUpdateProvider> setActiveProvider(DOMString uuid);
Promise<SystemUpdateProvider> getActiveProvider();
};
Examples
navigator.udpateManager.getProviders().then(function(providerInfos) {
var providerInfo = providerInfos[0];
return navigator.updateManager.setActiveProvider(providerInfo.uuid);
}).then(function(provider) {
// notify available update
checkButton.onclick = function(event) {
provider.checkForUpdate();
};
provider.onupdateavailable = function(evt) {
showUpdateAvailable(event.detail.packageInfo);
downloadButton.onclick = function(event) {
provider.startDownload();
};
};
// display download progress
provider.onprogress = function(event) {
showDownloadProgress(event);
};
// prompt when update package is ready to apply
provider.onupdateready = function(event) {
showUpdateReady();
applyButton.onclick = function() {
provider.applyUpdate();
};
};
});
Scheduled update
var myDate = new Date("May 15, 2012 16:20:00");
var req = navigator.mozAlarms.add(myDate, "ignoreTimezone", provider.info);
req.onsuccess = function(event) {
var info = event.alarm.data;
navigator.updateManager.setActiveProvider(info.uuid)
.then(function(provider) {
provider.checkForUpdate();
});
};