author Ed Morley <>
Mon, 14 May 2012 21:05:24 +0100
changeset 93909 3f7291bc4efc003964fb98b1390019771042f3ac
parent 93802 7b5d636382b2e67ad277bfbbdf73c781ce954767
permissions -rw-r--r--
Backout 345ae68f15f4, b3b40121ac8d, 0d18b7a246d7, 9dbb6064ab58, dee9d7fa8eb6, 63eec6bfa948, 323c6be7cfe8 & f4aac7523a48 (bug 732875) for compilation failures

from marionette_test import *

class SMSTest(MarionetteTestCase):

    def test_sms_between_emulators(self):
        # Tests always have one emulator available as self.marionette; we'll
        # use this for the receiving emulator.  We'll also launch a second
        # emulator to use as the sender.
        sender = self.get_new_emulator()
        receiver = self.marionette

        self.set_up_test_page(sender, "test.html", ["dom.sms.whitelist"])
        self.set_up_test_page(receiver, "test.html", ["dom.sms.whitelist"])

        # Setup the event listsener on the receiver, which should store
        # a global variable when an SMS is received.
        message = 'hello world!'
        self.assertTrue(receiver.execute_script("return window.navigator.mozSms != null;"))
global.smsreceived = null;
window.navigator.mozSms.addEventListener("received", function(e) {
    global.smsreceived = e.message;
""", new_sandbox=False)

        # Send the SMS from the sender.
window.navigator.mozSms.send("%d", "%s");
""" % (receiver.emulator.port, message))

        # On the receiver, wait up to 10s for an SMS to be received, by 
        # checking the value of the global var that the listener will change.
        receiver.set_script_timeout(0) # TODO no timeout for now since the test fails
        received = receiver.execute_async_script("""
        waitFor(function () {
        }, function () {
            return global.smsreceived
        """, new_sandbox=False)
        self.assertEqual(received, message)