WebAPI/SystemUpdateAPI: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎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();
      showUpdateReady();
    applyButton.onclick = function() {
      applyButton.onclick = function() {
      provider.applyUpdate();
        provider.applyUpdate();
      };
     };
     };
   };
   });
});
 
Scheduled update


// 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;
  var info = event.alarm.data;
  navigator.updateManager.setActiveProvider(info.uuid)
  navigator.updateManager.setActiveProvider(info.uuid)
  .then(function(provider) {
  .then(function(provider) {
    provider.checkForUpdate();
    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();
  });
};