diff options
Diffstat (limited to 'dom/presentation/tests/mochitest/test_presentation_availability.html')
-rw-r--r-- | dom/presentation/tests/mochitest/test_presentation_availability.html | 236 |
1 files changed, 0 insertions, 236 deletions
diff --git a/dom/presentation/tests/mochitest/test_presentation_availability.html b/dom/presentation/tests/mochitest/test_presentation_availability.html deleted file mode 100644 index 89f1ad1b7e..0000000000 --- a/dom/presentation/tests/mochitest/test_presentation_availability.html +++ /dev/null @@ -1,236 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- Any copyright is dedicated to the Public Domain. - - http://creativecommons.org/publicdomain/zero/1.0/ --> -<head> - <meta charset="utf-8"> - <title>Test for PresentationAvailability</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=1228508">Test PresentationAvailability</a> -<script type="application/javascript;version=1.8"> - -"use strict"; - -var testDevice = { - id: 'id', - name: 'name', - type: 'type', -}; - -var gScript = SpecialPowers.loadChromeScript(SimpleTest.getTestFileURL('PresentationDeviceInfoChromeScript.js')); -var request; -var availability; - -function testSetup() { - return new Promise(function(aResolve, aReject) { - gScript.addMessageListener('setup-complete', function() { - aResolve(); - }); - gScript.sendAsyncMessage('setup'); - }); -} - -function testInitialUnavailable() { - request = new PresentationRequest("https://example.com"); - - return request.getAvailability().then(function(aAvailability) { - is(aAvailability.value, false, "Should have no available device after setup"); - aAvailability.onchange = function() { - aAvailability.onchange = null; - ok(aAvailability.value, "Device should be available."); - } - availability = aAvailability; - gScript.sendAsyncMessage('trigger-device-add', testDevice); - }).catch(function(aError) { - ok(false, "Error occurred when getting availability: " + aError); - teardown(); - }); -} - -function testInitialAvailable() { - let anotherRequest = new PresentationRequest("https://example.net"); - return anotherRequest.getAvailability().then(function(aAvailability) { - is(aAvailability.value, true, "Should have available device initially"); - isnot(aAvailability, availability, "Should get different availability object for different request URL"); - }).catch(function(aError) { - ok(false, "Error occurred when getting availability: " + aError); - teardown(); - }); -} - -function testSameObject() { - let sameUrlRequest = new PresentationRequest("https://example.com"); - return sameUrlRequest.getAvailability().then(function(aAvailability) { - is(aAvailability, availability, "Should get same availability object for same request URL"); - }).catch(function(aError) { - ok(false, "Error occurred when getting availability: " + aError); - teardown(); - }); -} - -function testOnChangeEvent() { - return new Promise(function(aResolve, aReject) { - availability.onchange = function() { - availability.onchange = null; - is(availability.value, false, "Should have no available device after device removed"); - aResolve(); - } - gScript.sendAsyncMessage('trigger-device-remove'); - }); -} - -function testConsecutiveGetAvailability() { - let request = new PresentationRequest("https://example.org"); - let firstAvailabilityResolved = false; - return Promise.all([ - request.getAvailability().then(function() { - firstAvailabilityResolved = true; - }), - request.getAvailability().then(function() { - ok(firstAvailabilityResolved, "getAvailability() should be resolved in sequence"); - }) - ]).catch(function(aError) { - ok(false, "Error occurred when getting availability: " + aError); - teardown(); - }); -} - -function testUnsupportedDeviceAvailability() { - return Promise.race([ - new Promise(function(aResolve, aReject) { - let request = new PresentationRequest("https://test.com"); - request.getAvailability().then(function(aAvailability) { - availability = aAvailability; - aAvailability.onchange = function() { - availability.onchange = null; - ok(false, "Should not get onchange event."); - teardown(); - } - }); - gScript.sendAsyncMessage('trigger-add-unsupport-url-device'); - }), - new Promise(function(aResolve, aReject) { - setTimeout(function() { - ok(true, "Should not get onchange event."); - availability.onchange = null; - gScript.sendAsyncMessage('trigger-remove-unsupported-device'); - aResolve(); - }, 3000); - }), - ]); -} - -function testMultipleAvailabilityURLs() { - let request1 = new PresentationRequest(["https://example.com", - "https://example1.com"]); - let request2 = new PresentationRequest(["https://example1.com", - "https://example2.com"]); - return Promise.all([ - request1.getAvailability().then(function(aAvailability) { - return new Promise(function(aResolve) { - aAvailability.onchange = function() { - aAvailability.onchange = null; - ok(true, "Should get onchange event."); - aResolve(); - }; - }); - }), - request2.getAvailability().then(function(aAvailability) { - return new Promise(function(aResolve) { - aAvailability.onchange = function() { - aAvailability.onchange = null; - ok(true, "Should get onchange event."); - aResolve(); - }; - }); - }), - new Promise(function(aResolve) { - gScript.sendAsyncMessage('trigger-add-multiple-devices'); - aResolve(); - }), - ]).then(new Promise(function(aResolve) { - gScript.sendAsyncMessage('trigger-remove-multiple-devices'); - aResolve(); - })); -} - -function testPartialSupportedDeviceAvailability() { - let request1 = new PresentationRequest(["https://supportedUrl.com"]); - let request2 = new PresentationRequest(["http://notSupportedUrl.com"]); - - return Promise.all([ - request1.getAvailability().then(function(aAvailability) { - return new Promise(function(aResolve) { - aAvailability.onchange = function() { - aAvailability.onchange = null; - ok(true, "Should get onchange event."); - aResolve(); - }; - }); - }), - Promise.race([ - request2.getAvailability().then(function(aAvailability) { - return new Promise(function(aResolve) { - aAvailability.onchange = function() { - aAvailability.onchange = null; - ok(false, "Should get onchange event."); - aResolve(); - }; - }); - }), - new Promise(function(aResolve) { - setTimeout(function() { - ok(true, "Should not get onchange event."); - availability.onchange = null; - aResolve(); - }, 3000); - }), - ]), - new Promise(function(aResolve) { - gScript.sendAsyncMessage('trigger-add-https-devices'); - aResolve(); - }), - ]).then(new Promise(function(aResolve) { - gScript.sendAsyncMessage('trigger-remove-https-devices'); - aResolve(); - })); -} - -function teardown() { - request = null; - availability = null; - gScript.sendAsyncMessage('teardown'); - gScript.destroy(); - SimpleTest.finish(); -} - -function runTests() { - ok(navigator.presentation, "navigator.presentation should be available."); - testSetup().then(testInitialUnavailable) - .then(testInitialAvailable) - .then(testSameObject) - .then(testOnChangeEvent) - .then(testConsecutiveGetAvailability) - .then(testMultipleAvailabilityURLs) - .then(testUnsupportedDeviceAvailability) - .then(testPartialSupportedDeviceAvailability) - .then(teardown); -} - -SimpleTest.waitForExplicitFinish(); -SimpleTest.requestFlakyTimeout('Test for guarantee not firing async event'); -SpecialPowers.pushPermissions([ - {type: "presentation-device-manage", allow: false, context: document}, -], function() { - SpecialPowers.pushPrefEnv({ "set": [["dom.presentation.enabled", true], - ["dom.presentation.controller.enabled", true], - ["dom.presentation.session_transport.data_channel.enable", false]]}, - runTests); -}); - -</script> -</body> -</html> |