michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: MARIONETTE_TIMEOUT = 60000; michael@0: michael@0: SpecialPowers.setBoolPref("dom.sms.enabled", true); michael@0: SpecialPowers.addPermission("sms", true, document); michael@0: michael@0: let manager = window.navigator.mozMobileMessage; michael@0: let myNumber = "15555215554"; michael@0: let inText = "Incoming SMS message. Mozilla Firefox OS!"; michael@0: let remoteNumber = "5559997777"; michael@0: let inSmsId = 0; michael@0: michael@0: function verifyInitialState() { michael@0: log("Verifying initial state."); michael@0: ok(manager instanceof MozMobileMessageManager, michael@0: "manager is instance of " + manager.constructor); michael@0: simulateIncomingSms(); michael@0: } michael@0: michael@0: function simulateIncomingSms() { michael@0: log("Simulating incoming SMS."); michael@0: michael@0: manager.onreceived = function onreceived(event) { michael@0: log("Received 'onreceived' event."); michael@0: let incomingSms = event.message; michael@0: ok(incomingSms, "incoming sms"); michael@0: ok(incomingSms.id, "sms id"); michael@0: inSmsId = incomingSms.id; michael@0: log("Received SMS (id: " + inSmsId + ")."); michael@0: is(incomingSms.body, inText, "msg body"); michael@0: is(incomingSms.delivery, "received", "delivery"); michael@0: getNonExistentMsg(); michael@0: }; michael@0: // Simulate incoming sms sent from remoteNumber to our emulator michael@0: runEmulatorCmd("sms send " + remoteNumber + " " + inText, function(result) { michael@0: is(result[0], "OK", "emulator output"); michael@0: }); michael@0: } michael@0: michael@0: function getNonExistentMsg() { michael@0: let msgIdNoExist = inSmsId + 1; michael@0: log("Attempting to get non-existent message (id: " + msgIdNoExist + ")."); michael@0: let requestRet = manager.getMessage(msgIdNoExist); michael@0: ok(requestRet, "smsrequest obj returned"); michael@0: michael@0: requestRet.onsuccess = function(event) { michael@0: log("Received 'onsuccess' smsrequest event."); michael@0: ok(event.target.result, "smsrequest event.target.result"); michael@0: let foundSms = event.target.result; michael@0: log("Got SMS (id: " + foundSms.id + ") but should not have."); michael@0: ok(false, "Smsrequest successful when tried to get non-existent sms"); michael@0: getMsgInvalidId(); michael@0: }; michael@0: michael@0: requestRet.onerror = function(event) { michael@0: log("Received 'onerror' smsrequest event."); michael@0: ok(event.target.error, "domerror obj"); michael@0: is(event.target.error.name, "NotFoundError", "error returned"); michael@0: log("Could not get SMS (id: " + msgIdNoExist + ") as expected."); michael@0: getMsgInvalidId(); michael@0: }; michael@0: } michael@0: michael@0: function getMsgInvalidId() { michael@0: invalidId = -1; michael@0: log("Attempting to get sms with invalid id (id: " + invalidId + ")."); michael@0: let requestRet = manager.getMessage(invalidId); michael@0: ok(requestRet, "smsrequest obj returned"); michael@0: michael@0: requestRet.onsuccess = function(event) { michael@0: log("Received 'onsuccess' smsrequest event."); michael@0: ok(event.target.result, "smsrequest event.target.result"); michael@0: let foundSms = event.target.result; michael@0: log("Got SMS (id: " + foundSms.id + ") but should not have."); michael@0: ok(false, "Smsrequest successful when tried to get message with " + michael@0: "invalid id (id: " + invalidId + ")."); michael@0: deleteMsg(); michael@0: }; michael@0: michael@0: requestRet.onerror = function(event) { michael@0: log("Received 'onerror' smsrequest event."); michael@0: ok(event.target.error, "domerror obj"); michael@0: is(event.target.error.name, "NotFoundError", "error returned"); michael@0: log("Could not get SMS (id: -1) as expected."); michael@0: deleteMsg(); michael@0: }; michael@0: } michael@0: michael@0: function deleteMsg() { michael@0: log("Deleting SMS (id: " + inSmsId + ")."); michael@0: let requestRet = manager.delete(inSmsId); michael@0: ok(requestRet,"smsrequest obj returned"); michael@0: michael@0: requestRet.onsuccess = function(event) { michael@0: log("Received 'onsuccess' smsrequest event."); michael@0: if(event.target.result){ michael@0: cleanUp(); michael@0: } michael@0: }; michael@0: michael@0: requestRet.onerror = function(event) { michael@0: log("Received 'onerror' smsrequest event."); michael@0: ok(event.target.error, "domerror obj"); michael@0: ok(false, "manager.delete request returned unexpected error: " michael@0: + event.target.error.name ); michael@0: cleanUp(); michael@0: }; michael@0: } michael@0: michael@0: function cleanUp() { michael@0: manager.onreceived = null; michael@0: SpecialPowers.removePermission("sms", document); michael@0: SpecialPowers.setBoolPref("dom.sms.enabled", false); michael@0: finish(); michael@0: } michael@0: michael@0: // Start the test michael@0: verifyInitialState();