diff -r 000000000000 -r 6474c204b198 dom/mobileconnection/tests/marionette/test_mobile_data_location.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/mobileconnection/tests/marionette/test_mobile_data_location.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,49 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +MARIONETTE_TIMEOUT = 60000; +MARIONETTE_HEAD_JS = "head.js"; + +function verifyDataCellLocationInfo(aLac, aCid) { + let cell = mobileConnection.data.cell; + ok(cell, "location available"); + + // Initial LAC/CID. Android emulator initializes both value to + // 0xffff/0xffffffff. + is(cell.gsmLocationAreaCode, aLac, "data.cell.gsmLocationAreaCode"); + is(cell.gsmCellId, aCid, "data.cell.gsmCellId"); + is(cell.cdmaBaseStationId, -1, "data.cell.cdmaBaseStationId"); + is(cell.cdmaBaseStationLatitude, -2147483648, + "data.cell.cdmaBaseStationLatitude"); + is(cell.cdmaBaseStationLongitude, -2147483648, + "data.cell.cdmaBaseStationLongitude"); + is(cell.cdmaSystemId, -1, "data.cell.cdmaSystemId"); + is(cell.cdmaNetworkId, -1, "data.cell.cdmaNetworkId"); +} + +/* Test Data Cell Location Info Change */ +function testDataCellLocationUpdate(aLac, aCid) { + // Set emulator's lac/cid and wait for 'ondatachange' event. + log("Test cell location with lac=" + aLac + " and cid=" + aCid); + + let promises = []; + promises.push(waitForManagerEvent("datachange")); + promises.push(setEmulatorGsmLocation(aLac, aCid)); + return Promise.all(promises) + .then(() => verifyDataCellLocationInfo(aLac, aCid)); +} + +startTestCommon(function() { + return getEmulatorGsmLocation() + .then(function(aResult) { + log("Test initial data location info"); + verifyDataCellLocationInfo(aResult.lac, aResult.cid); + + return Promise.resolve() + .then(() => testDataCellLocationUpdate(100, 100)) + .then(() => testDataCellLocationUpdate(2000, 2000)) + + // Reset back to initial values. + .then(() => testDataCellLocationUpdate(aResult.lac, aResult.cid)); + }); +});