dom/mobilemessage/tests/marionette/test_mmdb_full_storage.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/ */
     4 MARIONETTE_TIMEOUT = 60000;
     5 MARIONETTE_HEAD_JS = 'mmdb_head.js';
     7 const DBNAME = "test_mmdb_full_storage:" + newUUID();
     9 let gIsDiskFull = true;
    11 function newSavableMessage() {
    12   return {
    13     type: "sms",
    14     sender: "+0987654321",
    15     receiver: "+1234567890",
    16     body: "quick fox jump over the lazy dog",
    17     deliveryStatusRequested: false,
    18     messageClass: "normal",
    19     timestamp: Date.now(),
    20     iccId: "1029384756"
    21   };
    22 }
    24 function isFileNoDeviceSpaceError(aErrorResult) {
    25   is(aErrorResult, Cr.NS_ERROR_FILE_NO_DEVICE_SPACE, "Database error code");
    26 }
    28 function isCallbackStorageFullError(aErrorCode) {
    29   is(aErrorCode, Ci.nsIMobileMessageCallback.STORAGE_FULL_ERROR,
    30      "nsIMobileMessageCallback error code");
    31 }
    33 function testSaveSendingMessage(aMmdb) {
    34   log("testSaveSendingMessage()");
    36   gIsDiskFull = true;
    37   return saveSendingMessage(aMmdb, newSavableMessage())
    38     // Resolved/rejected results are both [<Cr.NS_ERROR_FOO>, <DOM message>],
    39     // and we need only the error code in both cases.
    40     .then((aValue) => aValue[0],
    41           (aValue) => aValue[0])
    42     .then(isFileNoDeviceSpaceError);
    43 }
    45 function testSaveReceivedMessage(aMmdb) {
    46   log("testSaveReceivedMessage()");
    48   gIsDiskFull = true;
    49   return saveReceivedMessage(aMmdb, newSavableMessage())
    50     // Resolved/rejected results are both [<Cr.NS_ERROR_FOO>, <DOM message>],
    51     // and we need only the error code in both cases.
    52     .then((aValue) => aValue[0],
    53           (aValue) => aValue[0])
    54     .then(isFileNoDeviceSpaceError);
    55 }
    57 function testGetMessageRecordById(aMmdb) {
    58   log("testGetMessageRecordById()");
    60   gIsDiskFull = false;
    61   return saveReceivedMessage(aMmdb, newSavableMessage())
    62     // Resolved result is [<Cr.NS_ERROR_FOO>, <DOM message>],
    63     .then(function(aValue) {
    64       let domMessage = aValue[1];
    66       gIsDiskFull = true;
    67       return getMessageRecordById(aMmdb, domMessage.id);
    68     });
    69 }
    71 function testMarkMessageRead(aMmdb) {
    72   log("testMarkMessageRead()");
    74   gIsDiskFull = false;
    75   return saveReceivedMessage(aMmdb, newSavableMessage())
    76     // Resolved/rejected results are both [<Cr.NS_ERROR_FOO>, <DOM message>].
    77     .then(function(aValue) {
    78       let domMessage = aValue[1];
    80       gIsDiskFull = true;
    81       return markMessageRead(aMmdb, domMessage.id, true)
    82         .then(null, (aValue) => aValue)
    83         .then(isCallbackStorageFullError);
    84     });
    85 }
    87 function testCreateMessageCursor(aMmdb) {
    88   log("testCreateMessageCursor()");
    90   gIsDiskFull = true;
    91   return createMessageCursor(aMmdb, {}, false);
    92 }
    94 function testCreateThreadCursor(aMmdb) {
    95   log("testCreateThreadCursor()");
    97   gIsDiskFull = true;
    98   return createThreadCursor(aMmdb);
    99 }
   101 startTestBase(function testCaseMain() {
   103   let mmdb = newMobileMessageDB();
   104   return initMobileMessageDB(mmdb, DBNAME, 0)
   105     .then(function() {
   106       mmdb.isDiskFull = function() {
   107         return gIsDiskFull;
   108       };
   109     })
   111     .then(() => testSaveSendingMessage(mmdb))
   112     .then(() => testSaveReceivedMessage(mmdb))
   113     .then(() => testGetMessageRecordById(mmdb))
   114     .then(() => testMarkMessageRead(mmdb))
   115     .then(() => testCreateMessageCursor(mmdb))
   116     .then(() => testCreateThreadCursor(mmdb))
   118     .then(() => closeMobileMessageDB(mmdb));
   119 });

mercurial