diff --git a/dom/mobilemessage/tests/marionette/head.js b/dom/mobilemessage/tests/marionette/head.js index 2c9bba498f7..5b7b72388c8 100644 --- a/dom/mobilemessage/tests/marionette/head.js +++ b/dom/mobilemessage/tests/marionette/head.js @@ -344,65 +344,6 @@ function sendRawSmsToEmulator(aPdu) { return runEmulatorCmdSafe(command); } -/** - * Name space for MobileMessageDB.jsm. Only initialized after first call to - * newMobileMessageDB. - */ -let MMDB; - -// Create a new MobileMessageDB instance. -function newMobileMessageDB() { - if (!MMDB) { - MMDB = Cu.import("resource://gre/modules/MobileMessageDB.jsm", {}); - is(typeof MMDB.MobileMessageDB, "function", "MMDB.MobileMessageDB"); - } - - let mmdb = new MMDB.MobileMessageDB(); - ok(mmdb, "MobileMessageDB instance"); - return mmdb; -} - -/** - * Initialize a MobileMessageDB. Resolve if initialized with success, reject - * otherwise. - * - * Fulfill params: a MobileMessageDB instance. - * Reject params: a MobileMessageDB instance. - * - * @param aMmdb - * A MobileMessageDB instance. - * @param aDbName - * A string name for that database. - * @param aDbVersion - * The version that MobileMessageDB should upgrade to. 0 for the lastest - * version. - * - * @return A deferred promise. - */ -function initMobileMessageDB(aMmdb, aDbName, aDbVersion) { - let deferred = Promise.defer(); - - aMmdb.init(aDbName, aDbVersion, function(aError) { - if (aError) { - deferred.reject(aMmdb); - } else { - deferred.resolve(aMmdb); - } - }); - - return deferred.promise; -} - -/** - * Close a MobileMessageDB. - * - * @return The passed MobileMessageDB instance. - */ -function closeMobileMessageDB(aMmdb) { - aMmdb.close(); - return aMmdb; -} - /** * Create a new array of id attribute of input messages. * @@ -418,24 +359,6 @@ function messagesToIds(aMessages) { return ids; } -// A reference to a nsIUUIDGenerator service. -let uuidGenerator; - -/** - * Generate a new UUID. - * - * @return A UUID string. - */ -function newUUID() { - if (!uuidGenerator) { - uuidGenerator = Cc["@mozilla.org/uuid-generator;1"] - .getService(Ci.nsIUUIDGenerator); - ok(uuidGenerator, "uuidGenerator"); - } - - return uuidGenerator.generateUUID().toString(); -} - /** * Flush permission settings and call |finish()|. */ diff --git a/dom/mobilemessage/tests/marionette/mmdb_head.js b/dom/mobilemessage/tests/marionette/mmdb_head.js new file mode 100644 index 00000000000..29f1caf0c05 --- /dev/null +++ b/dom/mobilemessage/tests/marionette/mmdb_head.js @@ -0,0 +1,117 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +MARIONETTE_CONTEXT = "chrome"; + +let Promise = Cu.import("resource://gre/modules/Promise.jsm").Promise; + +/** + * Name space for MobileMessageDB.jsm. Only initialized after first call to + * newMobileMessageDB. + */ +let MMDB; + +/** + * Create a new MobileMessageDB instance. + * + * @return A MobileMessageDB instance. + */ +function newMobileMessageDB() { + if (!MMDB) { + MMDB = Cu.import("resource://gre/modules/MobileMessageDB.jsm", {}); + is(typeof MMDB.MobileMessageDB, "function", "MMDB.MobileMessageDB"); + } + + let mmdb = new MMDB.MobileMessageDB(); + ok(mmdb, "MobileMessageDB instance"); + return mmdb; +} + +/** + * Initialize a MobileMessageDB. Resolve if initialized with success, reject + * otherwise. + * + * Fulfill params: a MobileMessageDB instance. + * Reject params: a MobileMessageDB instance. + * + * @param aMmdb + * A MobileMessageDB instance. + * @param aDbName + * A string name for that database. + * @param aDbVersion + * The version that MobileMessageDB should upgrade to. 0 for the lastest + * version. + * + * @return A deferred promise. + */ +function initMobileMessageDB(aMmdb, aDbName, aDbVersion) { + let deferred = Promise.defer(); + + aMmdb.init(aDbName, aDbVersion, function(aError) { + if (aError) { + deferred.reject(aMmdb); + } else { + deferred.resolve(aMmdb); + } + }); + + return deferred.promise; +} + +/** + * Close a MobileMessageDB. + * + * @param aMmdb + * A MobileMessageDB instance. + * + * @return The passed MobileMessageDB instance. + */ +function closeMobileMessageDB(aMmdb) { + aMmdb.close(); + return aMmdb; +} + +// A reference to a nsIUUIDGenerator service. +let _uuidGenerator; + +/** + * Generate a new UUID. + * + * @return A UUID string. + */ +function newUUID() { + if (!_uuidGenerator) { + _uuidGenerator = Cc["@mozilla.org/uuid-generator;1"] + .getService(Ci.nsIUUIDGenerator); + ok(_uuidGenerator, "uuidGenerator"); + } + + return _uuidGenerator.generateUUID().toString(); +} + +/** + * Flush permission settings and call |finish()|. + */ +function cleanUp() { + // Use ok here so that we have at least one test run. + ok(true, "permissions flushed"); + + finish(); +} + +/** + * Basic test routine helper for mobile message tests. + * + * This helper does nothing but clean-ups. + * + * @param aTestCaseMain + * A function that takes no parameter. + */ +function startTestBase(aTestCaseMain) { + Promise.resolve() + .then(aTestCaseMain) + .then(null, function() { + ok(false, 'promise rejects during test.'); + }) + .then(cleanUp); +} diff --git a/dom/mobilemessage/tests/marionette/test_mmdb_foreachmatchedmmsdeliveryinfo.js b/dom/mobilemessage/tests/marionette/test_mmdb_foreachmatchedmmsdeliveryinfo.js index 57b6b19310d..a7602155e12 100644 --- a/dom/mobilemessage/tests/marionette/test_mmdb_foreachmatchedmmsdeliveryinfo.js +++ b/dom/mobilemessage/tests/marionette/test_mmdb_foreachmatchedmmsdeliveryinfo.js @@ -2,11 +2,9 @@ * http://creativecommons.org/publicdomain/zero/1.0/ */ MARIONETTE_TIMEOUT = 60000; -MARIONETTE_HEAD_JS = 'head.js'; +MARIONETTE_HEAD_JS = 'mmdb_head.js'; -// TODO: bug 943233 - passing jsm exported objects to |Promise.resolve| gets -// empty object in return. -let mmdb; +const DBNAME = "test_mmdb_foreachmatchedmmsdeliveryinfo:" + newUUID(); const PHONE_0 = "+15555215500"; const PHONE_1 = "+15555215501"; @@ -51,10 +49,6 @@ function doTest(aMmdb, aNeedle, aVerifyFunc, aCount) { function testNotFound(aMmdb) { log("Testing unavailable"); - // TODO: bug 943233 - passing jsm exported objects to |Promise.resolve| gets - // empty object in return. - aMmdb = mmdb; - doTest(aMmdb, PHONE_0, function(aElement) { ok(false, "Should never have a match"); }, 0); @@ -65,10 +59,6 @@ function testNotFound(aMmdb) { function testDirectMatch(aMmdb) { log("Testing direct matching"); - // TODO: bug 943233 - passing jsm exported objects to |Promise.resolve| gets - // empty object in return. - aMmdb = mmdb; - for (let needle of [PHONE_1, EMAIL_1]) { let count = deliveryInfo.reduce(function(aCount, aElement) { return aElement.receiver == needle ? aCount + 1 : aCount; @@ -87,9 +77,6 @@ function testPhoneMatch(aMmdb) { let verifyFunc = function(aValid, aElement) { ok(aValid.indexOf(aElement.receiver) >= 0, "element.receiver"); }; - // TODO: bug 943233 - passing jsm exported objects to |Promise.resolve| gets - // empty object in return. - aMmdb = mmdb; let matchingGroups = [ [PHONE_2, PHONE_2_NET], @@ -105,10 +92,10 @@ function testPhoneMatch(aMmdb) { } startTestBase(function testCaseMain() { - mmdb = newMobileMessageDB(); - return initMobileMessageDB(mmdb, "test_mmdb_foreachmatchedmmsdeliveryinfo", 0) + let mmdb = newMobileMessageDB(); + return initMobileMessageDB(mmdb, DBNAME, 0) .then(testNotFound) .then(testDirectMatch) .then(testPhoneMatch) - .then(closeMobileMessageDB.bind(null, mmdb)); + .then(closeMobileMessageDB); }); diff --git a/dom/mobilemessage/tests/marionette/test_mmdb_full_storage.js b/dom/mobilemessage/tests/marionette/test_mmdb_full_storage.js index 1d61411ceb7..db7279818c6 100644 --- a/dom/mobilemessage/tests/marionette/test_mmdb_full_storage.js +++ b/dom/mobilemessage/tests/marionette/test_mmdb_full_storage.js @@ -2,9 +2,9 @@ * http://creativecommons.org/publicdomain/zero/1.0/ */ MARIONETTE_TIMEOUT = 60000; -MARIONETTE_HEAD_JS = 'head.js'; +MARIONETTE_HEAD_JS = 'mmdb_head.js'; -let gMmdb; +const DBNAME = "test_mmdb_full_storage:" + newUUID(); let gIsDiskFull = true; @@ -18,16 +18,16 @@ let gMessageToSave = { iccId: "1029384756" }; -function testSaveSendingMessage() { +function testSaveSendingMessage(aMmdb) { log("testSaveSendingMessage()"); let deferred = Promise.defer(); - gMmdb.saveSendingMessage(gMessageToSave, + aMmdb.saveSendingMessage(gMessageToSave, { notify : function(aRv, aDomMessage) { if (aRv === Cr.NS_ERROR_FILE_NO_DEVICE_SPACE) { ok(true, "Forbidden due to storage full."); - deferred.resolve(Promise.resolve()); + deferred.resolve(aMmdb); } else { ok(false, "Unexpected result: " + aRv); deferred.reject(aRv); @@ -37,16 +37,16 @@ function testSaveSendingMessage() { return deferred.promise; } -function testSaveReceivingMessage() { +function testSaveReceivingMessage(aMmdb) { log("testSaveReceivingMessage()"); let deferred = Promise.defer(); - gMmdb.saveReceivedMessage(gMessageToSave, + aMmdb.saveReceivedMessage(gMessageToSave, { notify : function(aRv, aDomMessage) { if (aRv === Cr.NS_ERROR_FILE_NO_DEVICE_SPACE) { ok(true, "Forbidden due to storage full."); - deferred.resolve(Promise.resolve()); + deferred.resolve(aMmdb); } else { ok(false, "Unexpected result: " + aRv); deferred.reject(aRv); @@ -56,16 +56,16 @@ function testSaveReceivingMessage() { return deferred.promise; } -function testGetMessage() { +function testGetMessage(aMmdb) { log("testGetMessage()"); let deferred = Promise.defer(); - gMmdb.getMessage(1, + aMmdb.getMessage(1, { notifyGetMessageFailed : function(aRv) { if (aRv === Ci.nsIMobileMessageCallback.NOT_FOUND_ERROR) { ok(true, "Getting message successfully!"); - deferred.resolve(Promise.resolve()); + deferred.resolve(aMmdb); } else { ok(false, "Unexpected result: " + aRv); deferred.reject(aRv); @@ -77,13 +77,13 @@ function testGetMessage() { startTestBase(function testCaseMain() { - gMmdb = newMobileMessageDB(); - gMmdb.isDiskFull = function() { + let mmdb = newMobileMessageDB(); + mmdb.isDiskFull = function() { return gIsDiskFull; }; - return initMobileMessageDB(gMmdb, "test_gMmdb_full_storage", 0) + return initMobileMessageDB(mmdb, DBNAME, 0) .then(testSaveSendingMessage) .then(testSaveReceivingMessage) .then(testGetMessage) - .then(closeMobileMessageDB.bind(null, gMmdb)); + .then(closeMobileMessageDB); }); diff --git a/dom/mobilemessage/tests/marionette/test_mmdb_new.js b/dom/mobilemessage/tests/marionette/test_mmdb_new.js index be6fa2fcb26..b1edf26c1eb 100644 --- a/dom/mobilemessage/tests/marionette/test_mmdb_new.js +++ b/dom/mobilemessage/tests/marionette/test_mmdb_new.js @@ -2,35 +2,36 @@ * http://creativecommons.org/publicdomain/zero/1.0/ */ MARIONETTE_TIMEOUT = 60000; -MARIONETTE_HEAD_JS = 'head.js'; +MARIONETTE_HEAD_JS = 'mmdb_head.js'; + +const DBNAME = "test_mmdb_new:" + newUUID(); +let dbVersion = 0; + +function check(aMmdb) { + is(aMmdb.dbName, DBNAME, "dbName"); + if (!dbVersion) { + ok(aMmdb.dbVersion, "dbVersion"); + dbVersion = aMmdb.dbVersion; + } else { + is(aMmdb.dbVersion, dbVersion, "dbVersion"); + } + + return aMmdb; +} startTestBase(function testCaseMain() { log("Test init MobileMessageDB"); - // TODO: bug 943233 - passing jsm exported objects to |Promise.resolve| gets - // empty object in return. let mmdb = newMobileMessageDB(); - let dbName = "test_mmdb_new"; - let dbVersion = 0; - let check = function() { - is(mmdb.dbName, dbName, "dbName"); - if (!dbVersion) { - ok(mmdb.dbVersion, "dbVersion"); - dbVersion = mmdb.dbVersion; - } else { - is(mmdb.dbVersion, dbVersion, "dbVersion"); - } - }; - - return initMobileMessageDB(mmdb, dbName, dbVersion) + return initMobileMessageDB(mmdb, DBNAME, dbVersion) .then(check) - .then(closeMobileMessageDB.bind(null, mmdb)) + .then(closeMobileMessageDB) .then(check) - .then(function() { + .then(function(aMmdb) { log("Test re-init and close."); - return initMobileMessageDB(mmdb, dbName, dbVersion); + return initMobileMessageDB(aMmdb, DBNAME, dbVersion); }) .then(check) - .then(closeMobileMessageDB.bind(null, mmdb)) + .then(closeMobileMessageDB) .then(check); });