1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/mobilemessage/tests/test_sms_basics.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,129 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <title>Test for WebSMS</title> 1.8 + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.9 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 1.10 +</head> 1.11 +<body> 1.12 +<p id="display"></p> 1.13 +<div id="content" style="display: none"> 1.14 +<iframe></iframe> 1.15 +</div> 1.16 +<pre id="test"> 1.17 +<script type="application/javascript"> 1.18 +var defaultEnabled = ('mozMobileMessage' in frames[0].navigator); 1.19 + 1.20 +/** Test for WebSMS **/ 1.21 + 1.22 +function checkSmsDisabled() { 1.23 + ok(!('mozMobileMessage' in frames[0].navigator), "navigator.mozMobileMessage should not exist"); 1.24 + ok(frames[0].navigator.mozMobileMessage === undefined, 1.25 + "navigator.mozMobileMessage should return undefined"); 1.26 +} 1.27 + 1.28 +function checkSmsEnabled() { 1.29 + // Bug 784617: WebSms is disabled on all platforms except Android for the moment. 1.30 + if (navigator.appVersion.indexOf("Android") == -1 && SpecialPowers.Services.appinfo.name != "B2G") { 1.31 + checkSmsDisabled(); 1.32 + return; 1.33 + } 1.34 + 1.35 + ok('mozMobileMessage' in frames[0].navigator, "navigator.mozMobileMessage should exist"); 1.36 + ok(frames[0].navigator.mozMobileMessage, "navigator.mozMobileMessage returns an object"); 1.37 + ok(frames[0].navigator.mozMobileMessage instanceof MozMobileMessageManager, 1.38 + "navigator.mozMobileMessage is an MobileMessageManager object"); 1.39 +} 1.40 + 1.41 +function checkSmsDisabledOrEnabled() { 1.42 + if (!defaultEnabled) 1.43 + checkSmsDisabled(); 1.44 + else 1.45 + checkSmsEnabled(); 1.46 +} 1.47 + 1.48 +function checkInterface(aInterface) { 1.49 + ok(!(aInterface in window), aInterface + " should be prefixed"); 1.50 + ok(("Moz" + aInterface) in window, aInterface + " should be prefixed"); 1.51 +} 1.52 + 1.53 +function test() { 1.54 + checkInterface("SmsMessage"); 1.55 + checkInterface("SmsEvent"); 1.56 + checkInterface("SmsFilter"); 1.57 + 1.58 + // If sms is disabled and permission is removed, sms is disabled. 1.59 + SpecialPowers.pushPrefEnv({"set": [["dom.sms.enabled", false]]}, function() { 1.60 + SpecialPowers.pushPermissions([{'type': 'sms', 'remove': true, 'context': document}], test2); 1.61 + }); 1.62 +} 1.63 + 1.64 +function test2() { 1.65 + checkSmsDisabledOrEnabled(); 1.66 + 1.67 + // If sms is enabled and permission is removed, sms is disabled. 1.68 + SpecialPowers.pushPrefEnv({"set": [["dom.sms.enabled", true]]}, function() { 1.69 + SpecialPowers.pushPermissions([{'type': 'sms', 'remove': true, 'context': document}], test3); 1.70 + }); 1.71 +} 1.72 + 1.73 +function test3() { 1.74 + checkSmsDisabledOrEnabled(); 1.75 + 1.76 + // If sms is disabled and permission is granted, sms is disabled. 1.77 + SpecialPowers.pushPrefEnv({"set": [["dom.sms.enabled", false]]}, function() { 1.78 + SpecialPowers.pushPermissions([{'type': 'sms', 'allow': true, 'context': document}], test4); 1.79 + }); 1.80 +} 1.81 + 1.82 +function test4() { 1.83 + checkSmsDisabledOrEnabled(); 1.84 + 1.85 + // If sms is enabled and permission is granted, sms is enabled. 1.86 + SpecialPowers.pushPrefEnv({"set": [["dom.sms.enabled", true]]}, function() { 1.87 + SpecialPowers.pushPermissions([{'type': 'sms', 'allow': true, 'context': document}], test5); 1.88 + }); 1.89 +} 1.90 + 1.91 +function test5() { 1.92 + checkSmsDisabledOrEnabled(); 1.93 + 1.94 + // Now, if sms are disabled with the pref, they will still be enabled. 1.95 + // The page has to be reloaded. 1.96 + SpecialPowers.pushPrefEnv({"set": [["dom.sms.enabled", false]]}, test6); 1.97 +} 1.98 + 1.99 +function test6() { 1.100 + checkSmsDisabledOrEnabled(); 1.101 + 1.102 + var iframeElt = document.getElementsByTagName('iframe')[0]; 1.103 + iframeElt.addEventListener("load", function() { 1.104 + iframeElt.removeEventListener("load", arguments.callee); 1.105 + checkSmsEnabled(); 1.106 + 1.107 + iframeElt.addEventListener("load", function() { 1.108 + iframeElt.removeEventListener("load", arguments.callee); 1.109 + 1.110 + checkSmsDisabled(); 1.111 + 1.112 + SimpleTest.finish(); 1.113 + }); 1.114 + 1.115 + // Disabling sms takes effect on reload. 1.116 + SpecialPowers.pushPrefEnv({"set": [["dom.sms.enabled", false]]}, function() { 1.117 + frames[0].location.reload(); 1.118 + }); 1.119 + }); 1.120 + 1.121 + SpecialPowers.pushPrefEnv({"set": [["dom.sms.enabled", true]]}, function() { 1.122 + frames[0].location.reload(); 1.123 + }); 1.124 +} 1.125 + 1.126 +SimpleTest.waitForExplicitFinish(); 1.127 +addLoadEvent(test); 1.128 + 1.129 +</script> 1.130 +</pre> 1.131 +</body> 1.132 +</html>