123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <!DOCTYPE HTML>
- <html>
- <!--
- https://bugzilla.mozilla.org/show_bug.cgi?id=1037329
- -->
- <head>
- <meta charset="utf-8">
- <title>System Update API Test</title>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- </head>
- <body>
- <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1037329">Test System Update API</a>
- <script type="application/javascript;version=1.8">
- 'use strict';
- SimpleTest.waitForExplicitFinish();
- function setup() {
- window.gUrl = SimpleTest.getTestFileURL('preload-SystemUpdateManager-jsm.js');
- window.gScript = SpecialPowers.loadChromeScript(gUrl);
- return Promise.resolve();
- }
- function testGetProviders() {
- return new Promise(function(resolve, reject) {
- navigator.updateManager.getProviders().then(function(providerInfos) {
- info('num of providers: ' + providerInfos.length);
- for (let providerInfo of providerInfos) {
- info('provider info: ' + JSON.stringify(providerInfo));
- }
- resolve(providerInfos);
- });
- });
- }
- function testSetActiveProvider(providerInfos) {
- return new Promise(function(resolve, reject) {
- //Find the mock provider for our testing provider instead.
- //Set the mock provider as active provider.
- let targetProvider = providerInfos[0];
- for(let provider of providerInfos) {
- if(provider.uuid == "{17a84227-28f4-453d-9b80-9ae75a5682e0}") {
- info('target provider uuid: ' + provider.uuid);
- targetProvider = provider;
- break;
- }
- }
- is("{17a84227-28f4-453d-9b80-9ae75a5682e0}", targetProvider.uuid, 'get the dynamically added provider');
- navigator.updateManager.setActiveProvider(targetProvider.uuid).then(function(activeProvider) {
- info('active provider info: ' + JSON.stringify(activeProvider.info));
- is(activeProvider.name, targetProvider.name, 'expected name of active provider');
- is(activeProvider.uuid, targetProvider.uuid, 'expected uuid of active provider');
- resolve({name : activeProvider.name, uuid : activeProvider.uuid});
- });
- });
- }
- function testGetActiveProvider(providerInfo) {
- info('test GetActiveProvider');
- return new Promise(function(resolve, reject) {
- navigator.updateManager.getActiveProvider().then(function(activeProvider) {
- is(activeProvider.name, providerInfo.name, 'expected name of active provider');
- is(activeProvider.uuid, providerInfo.uuid, 'expected uuid of active provider');
- resolve(activeProvider);
- });
- });
- }
- function testCheckForUpdate(provider) {
- info('test CheckForUpdate');
- return new Promise(function(resolve, reject) {
- provider.addEventListener('updateavailable', function(event) {
- ok(true, 'receive updateavailable event');
- info('event: ' + JSON.stringify(event.detail));
- resolve(provider);
- });
- provider.checkForUpdate();
- });
- }
- function testStartDownload(provider) {
- info('test StartDownload');
- return new Promise(function(resolve, reject) {
- provider.addEventListener('progress', function(event) {
- ok(true, 'receive progress event');
- is(event.loaded, 10, 'expected loaded');
- is(event.total, 100, 'expected total');
- resolve(provider);
- });
- provider.startDownload();
- });
- }
- function testStopDownload(provider) {
- info('test StopDownload');
- return new Promise(function(resolve, reject) {
- provider.stopDownload();
- resolve(provider);
- });
- }
- function testApplyUpdate(provider) {
- info('test ApplyUpdate');
- return new Promise(function(resolve, reject) {
- provider.applyUpdate();
- resolve(provider);
- });
- }
- function testGetParameter(provider) {
- info('test GetParameter');
- return new Promise(function(resolve, reject) {
- let dummy = provider.getParameter('dummy');
- is(dummy, 'dummy-value', 'expected parameter');
- resolve(provider);
- });
- }
- function testSetParameter(provider) {
- info('test SetParameter');
- return new Promise(function(resolve, reject) {
- provider.setParameter('dummy', 'dummy-value');
- resolve();
- });
- }
- function testSetActiveProviderError() {
- info('test setActiveProvider error');
- return new Promise(function(resolve, reject) {
- navigator.updateManager.setActiveProvider('something not exsited').then(function(provider) {
- ok(false, 'should not success');
- resolve();
- }, function(reason) {
- info('error message: ' + reason);
- ok(true, 'expected error while setActiveProvider');
- resolve();
- });
- });
- }
- function runTest() {
- ok(navigator.updateManager, 'should have navigator.updateManager');
- setup()
- .then(testGetProviders)
- .then(testSetActiveProvider)
- .then(testGetActiveProvider)
- .then(testCheckForUpdate)
- .then(testStartDownload)
- .then(testStopDownload)
- .then(testApplyUpdate)
- .then(testGetParameter)
- .then(testSetParameter)
- .then(testSetActiveProviderError)
- .then(function() {
- info('test finished');
- gScript.destroy();
- SimpleTest.finish();
- });
- }
- SpecialPowers.pushPermissions([
- {type: 'system-update', allow: true, context: document},
- ], function() {
- SpecialPowers.pushPrefEnv({
- 'set': [
- ['dom.system_update.enabled', true],
- ['dom.system_update.debug', true],
- ['dom.system_update.active', '@mozilla.org/test-update-provider;1'],
- ]
- }, runTest);
- }
- );
- </script>
- </pre>
- </body>
- </html>
|