зеркало из https://github.com/mozilla/gecko-dev.git
176 строки
5.3 KiB
HTML
176 строки
5.3 KiB
HTML
<!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>
|