1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/mobilemessage/src/gonk/MobileMessageDatabaseService.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,131 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this file, 1.6 + * You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +"use strict"; 1.9 + 1.10 +const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; 1.11 + 1.12 +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); 1.13 +Cu.import("resource://gre/modules/Services.jsm"); 1.14 + 1.15 +let MMDB = {}; 1.16 +Cu.import("resource://gre/modules/MobileMessageDB.jsm", MMDB); 1.17 + 1.18 +const RIL_MOBILEMESSAGEDATABASESERVICE_CONTRACTID = 1.19 + "@mozilla.org/mobilemessage/rilmobilemessagedatabaseservice;1"; 1.20 +const RIL_MOBILEMESSAGEDATABASESERVICE_CID = 1.21 + Components.ID("{29785f90-6b5b-11e2-9201-3b280170b2ec}"); 1.22 + 1.23 +XPCOMUtils.defineLazyServiceGetter(this, "gDiskSpaceWatcher", 1.24 + "@mozilla.org/toolkit/disk-space-watcher;1", 1.25 + "nsIDiskSpaceWatcher"); 1.26 + 1.27 +const DB_NAME = "sms"; 1.28 + 1.29 +/** 1.30 + * MobileMessageDatabaseService 1.31 + */ 1.32 +function MobileMessageDatabaseService() { 1.33 + // Prime the directory service's cache to ensure that the ProfD entry exists 1.34 + // by the time IndexedDB queries for it off the main thread. (See bug 743635.) 1.35 + Services.dirsvc.get("ProfD", Ci.nsIFile); 1.36 + 1.37 + let mmdb = new MMDB.MobileMessageDB(); 1.38 + mmdb.init(DB_NAME, 0, mmdb.updatePendingTransactionToError.bind(mmdb)); 1.39 + mmdb.isDiskFull = function() { 1.40 + return gDiskSpaceWatcher.isDiskFull; 1.41 + }; 1.42 + this.mmdb = mmdb; 1.43 +} 1.44 +MobileMessageDatabaseService.prototype = { 1.45 + 1.46 + classID: RIL_MOBILEMESSAGEDATABASESERVICE_CID, 1.47 + QueryInterface: XPCOMUtils.generateQI([Ci.nsIRilMobileMessageDatabaseService, 1.48 + Ci.nsIMobileMessageDatabaseService, 1.49 + Ci.nsIObserver]), 1.50 + 1.51 + /** 1.52 + * MobileMessageDB instance. 1.53 + */ 1.54 + mmdb: null, 1.55 + 1.56 + /** 1.57 + * nsIObserver 1.58 + */ 1.59 + observe: function() {}, 1.60 + 1.61 + /** 1.62 + * nsIRilMobileMessageDatabaseService API 1.63 + */ 1.64 + 1.65 + saveReceivedMessage: function(aMessage, aCallback) { 1.66 + this.mmdb.saveReceivedMessage(aMessage, aCallback); 1.67 + }, 1.68 + 1.69 + saveSendingMessage: function(aMessage, aCallback) { 1.70 + this.mmdb.saveSendingMessage(aMessage, aCallback); 1.71 + }, 1.72 + 1.73 + setMessageDeliveryByMessageId: function(aMessageId, aReceiver, aDelivery, 1.74 + aDeliveryStatus, aEnvelopeId, 1.75 + aCallback) { 1.76 + this.mmdb.updateMessageDeliveryById(aMessageId, "messageId", aReceiver, 1.77 + aDelivery, aDeliveryStatus, 1.78 + aEnvelopeId, aCallback); 1.79 + }, 1.80 + 1.81 + setMessageDeliveryStatusByEnvelopeId: function(aEnvelopeId, aReceiver, 1.82 + aDeliveryStatus, aCallback) { 1.83 + this.mmdb.updateMessageDeliveryById(aEnvelopeId, "envelopeId", aReceiver, 1.84 + null, aDeliveryStatus, null, aCallback); 1.85 + }, 1.86 + 1.87 + setMessageReadStatusByEnvelopeId: function(aEnvelopeId, aReceiver, 1.88 + aReadStatus, aCallback) { 1.89 + this.mmdb.setMessageReadStatusByEnvelopeId(aEnvelopeId, aReceiver, 1.90 + aReadStatus, aCallback); 1.91 + }, 1.92 + 1.93 + getMessageRecordByTransactionId: function(aTransactionId, aCallback) { 1.94 + this.mmdb.getMessageRecordByTransactionId(aTransactionId, aCallback); 1.95 + }, 1.96 + 1.97 + getMessageRecordById: function(aMessageId, aCallback) { 1.98 + this.mmdb.getMessageRecordById(aMessageId, aCallback); 1.99 + }, 1.100 + 1.101 + translateCrErrorToMessageCallbackError: function(aCrError) { 1.102 + return this.mmdb.translateCrErrorToMessageCallbackError(aCrError); 1.103 + }, 1.104 + 1.105 + saveSmsSegment: function(aSmsSegment, aCallback) { 1.106 + this.mmdb.saveSmsSegment(aSmsSegment, aCallback); 1.107 + }, 1.108 + 1.109 + /** 1.110 + * nsIMobileMessageDatabaseService API 1.111 + */ 1.112 + 1.113 + getMessage: function(aMessageId, aRequest) { 1.114 + this.mmdb.getMessage(aMessageId, aRequest); 1.115 + }, 1.116 + 1.117 + deleteMessage: function(aMessageIds, aLength, aRequest) { 1.118 + this.mmdb.deleteMessage(aMessageIds, aLength, aRequest); 1.119 + }, 1.120 + 1.121 + createMessageCursor: function(aFilter, aReverse, aCallback) { 1.122 + return this.mmdb.createMessageCursor(aFilter, aReverse, aCallback); 1.123 + }, 1.124 + 1.125 + markMessageRead: function(aMessageId, aValue, aSendReadReport, aRequest) { 1.126 + this.mmdb.markMessageRead(aMessageId, aValue, aSendReadReport, aRequest); 1.127 + }, 1.128 + 1.129 + createThreadCursor: function(aCallback) { 1.130 + return this.mmdb.createThreadCursor(aCallback); 1.131 + } 1.132 +}; 1.133 + 1.134 +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([MobileMessageDatabaseService]);