зеркало из https://github.com/mozilla/gecko-dev.git
Back out 8447875c6479 (bug 823010) for marionette failures in test_incoming.js
CLOSED TREE
This commit is contained in:
Родитель
321f2d70e2
Коммит
ea6b2f1818
|
@ -2,32 +2,12 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsISmsDatabaseService.idl"
|
||||
|
||||
interface nsIDOMMozSmsMessage;
|
||||
|
||||
[scriptable, function, uuid(04a08668-c020-469e-a1ad-8626c951ab2b)]
|
||||
interface nsIRilSmsDatabaseCallback : nsISupports
|
||||
{
|
||||
void notify(in nsresult aRv, in nsIDOMMozSmsMessage aSms);
|
||||
};
|
||||
|
||||
[scriptable, uuid(8e2acd73-0332-4d16-82cc-ff5bac59d245)]
|
||||
[scriptable, uuid(71d7dd4e-5489-4e58-a489-171200378c3c)]
|
||||
interface nsIRilSmsDatabaseService : nsISmsDatabaseService
|
||||
{
|
||||
long saveReceivedMessage(in DOMString aSender,
|
||||
in DOMString aBody,
|
||||
in DOMString aMessageClass,
|
||||
in unsigned long long aDate,
|
||||
[optional] in nsIRilSmsDatabaseCallback aCallback);
|
||||
long saveSendingMessage(in DOMString aReceiver,
|
||||
in DOMString aBody,
|
||||
in DOMString aDeliveryStatus,
|
||||
in unsigned long long aDate,
|
||||
[optional] in nsIRilSmsDatabaseCallback aCallback);
|
||||
void setMessageDelivery(in long aMessageId,
|
||||
in DOMString aDelivery,
|
||||
in DOMString aDeliveryStatus,
|
||||
[optional] in nsIRilSmsDatabaseCallback aCallback);
|
||||
long saveReceivedMessage(in DOMString aSender, in DOMString aBody, in DOMString aMessageClass, in unsigned long long aDate);
|
||||
long saveSendingMessage(in DOMString aReceiver, in DOMString aBody, in unsigned long long aDate);
|
||||
void setMessageDelivery(in long aMessageId, in DOMString aDelivery, in DOMString aDeliveryStatus);
|
||||
};
|
||||
|
|
|
@ -179,24 +179,24 @@ SmsDatabaseService.prototype = {
|
|||
self.upgradeSchema(objectStore);
|
||||
break;
|
||||
case 2:
|
||||
if (DEBUG) debug("Upgrade to version 3. Fix existing entries.");
|
||||
if (DEBUG) debug("Upgrade to version 3. Fix existing entries.")
|
||||
objectStore = event.target.transaction.objectStore(STORE_NAME);
|
||||
self.upgradeSchema2(objectStore);
|
||||
break;
|
||||
case 3:
|
||||
if (DEBUG) debug("Upgrade to version 4. Add quick threads view.");
|
||||
if (DEBUG) debug("Upgrade to version 4. Add quick threads view.")
|
||||
self.upgradeSchema3(db, event.target.transaction);
|
||||
break;
|
||||
case 4:
|
||||
if (DEBUG) debug("Upgrade to version 5. Populate quick threads view.");
|
||||
if (DEBUG) debug("Upgrade to version 5. Populate quick threads view.")
|
||||
self.upgradeSchema4(event.target.transaction);
|
||||
break;
|
||||
case 5:
|
||||
if (DEBUG) debug("Upgrade to version 6. Use PhonenumberJS.");
|
||||
if (DEBUG) debug("Upgrade to version 6. Use PhonenumberJS.")
|
||||
self.upgradeSchema5(event.target.transaction);
|
||||
break;
|
||||
case 6:
|
||||
if (DEBUG) debug("Upgrade to version 7. Use multiple entry indexes.");
|
||||
if (DEBUG) debug("Upgrade to version 7. Use multiple entry indexes.")
|
||||
self.upgradeSchema6(event.target.transaction);
|
||||
break;
|
||||
default:
|
||||
|
@ -206,7 +206,7 @@ SmsDatabaseService.prototype = {
|
|||
}
|
||||
currentVersion++;
|
||||
}
|
||||
};
|
||||
}
|
||||
request.onerror = function (event) {
|
||||
//TODO look at event.target.Code and change error constant accordingly
|
||||
callback("Error opening database!", null);
|
||||
|
@ -298,7 +298,7 @@ SmsDatabaseService.prototype = {
|
|||
message.deliveryStatus = DELIVERY_STATUS_NOT_APPLICABLE;
|
||||
cursor.update(message);
|
||||
cursor.continue();
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
upgradeSchema3: function upgradeSchema3(db, transaction) {
|
||||
|
@ -358,10 +358,10 @@ SmsDatabaseService.prototype = {
|
|||
timestamp: message.timestamp,
|
||||
body: message.body,
|
||||
unreadCount: message.read ? 0 : 1
|
||||
};
|
||||
}
|
||||
}
|
||||
cursor.continue();
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
upgradeSchema5: function upgradeSchema5(transaction) {
|
||||
|
@ -410,7 +410,7 @@ SmsDatabaseService.prototype = {
|
|||
message.readIndex = [message.read, timestamp];
|
||||
cursor.update(message);
|
||||
cursor.continue();
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
createMessageFromRecord: function createMessageFromRecord(record) {
|
||||
|
@ -499,14 +499,14 @@ SmsDatabaseService.prototype = {
|
|||
}
|
||||
smsRequest.notifyMessageListCreated(aMessageList.listId, sms);
|
||||
}
|
||||
};
|
||||
}
|
||||
getRequest.onerror = function onerror(event) {
|
||||
if (DEBUG) {
|
||||
debug("notifyReadMessageListFailed - listId: "
|
||||
+ aMessageList.listId + ", messageId: " + firstMessageId);
|
||||
}
|
||||
smsRequest.notifyReadMessageListFailed(Ci.nsISmsRequest.INTERNAL_ERROR);
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -647,41 +647,21 @@ SmsDatabaseService.prototype = {
|
|||
return false;
|
||||
},
|
||||
|
||||
saveMessage: function saveMessage(message, callback) {
|
||||
saveMessage: function saveMessage(message) {
|
||||
this.lastKey += 1;
|
||||
message.id = this.lastKey;
|
||||
if (DEBUG) debug("Going to store " + JSON.stringify(message));
|
||||
|
||||
let self = this;
|
||||
function notifyResult(rv) {
|
||||
if (!callback) {
|
||||
return;
|
||||
}
|
||||
let sms = self.createMessageFromRecord(message);
|
||||
callback.notify(rv, sms);
|
||||
}
|
||||
|
||||
this.newTxn(READ_WRITE, function(error, txn, stores) {
|
||||
if (error) {
|
||||
// TODO bug 832140 check event.target.errorCode
|
||||
notifyResult(Cr.NS_ERROR_FAILURE);
|
||||
return;
|
||||
}
|
||||
txn.oncomplete = function oncomplete(event) {
|
||||
notifyResult(Cr.NS_OK);
|
||||
};
|
||||
txn.onabort = function onabort(event) {
|
||||
// TODO bug 832140 check event.target.errorCode
|
||||
notifyResult(Cr.NS_ERROR_FAILURE);
|
||||
};
|
||||
|
||||
// First add to main objectStore.
|
||||
stores[0].put(message);
|
||||
|
||||
let number = numberFromMessage(message);
|
||||
|
||||
// Next update the other objectStore.
|
||||
stores[1].get(number).onsuccess = function onsuccess(event) {
|
||||
stores[1].get(number).onsuccess = function(event) {
|
||||
let mostRecentEntry = event.target.result;
|
||||
if (mostRecentEntry) {
|
||||
let needsUpdate = false;
|
||||
|
@ -707,7 +687,7 @@ SmsDatabaseService.prototype = {
|
|||
id: message.id,
|
||||
unreadCount: message.read ? 0 : 1 });
|
||||
}
|
||||
};
|
||||
}
|
||||
}, [STORE_NAME, MOST_RECENT_STORE_NAME]);
|
||||
// We return the key that we expect to store in the db
|
||||
return message.id;
|
||||
|
@ -718,11 +698,8 @@ SmsDatabaseService.prototype = {
|
|||
* nsIRilSmsDatabaseService API
|
||||
*/
|
||||
|
||||
saveReceivedMessage: function saveReceivedMessage(
|
||||
aSender, aBody, aMessageClass, aDate, aCallback) {
|
||||
let receiver = this.mRIL.rilContext.icc
|
||||
? this.mRIL.rilContext.icc.msisdn
|
||||
: null;
|
||||
saveReceivedMessage: function saveReceivedMessage(aSender, aBody, aMessageClass, aDate) {
|
||||
let receiver = this.mRIL.rilContext.icc ? this.mRIL.rilContext.icc.msisdn : null;
|
||||
|
||||
// Workaround an xpconnect issue with undefined string objects.
|
||||
// See bug 808220
|
||||
|
@ -759,14 +736,11 @@ SmsDatabaseService.prototype = {
|
|||
timestamp: aDate,
|
||||
read: FILTER_READ_UNREAD
|
||||
};
|
||||
return this.saveMessage(message, aCallback);
|
||||
return this.saveMessage(message);
|
||||
},
|
||||
|
||||
saveSendingMessage: function saveSendingMessage(
|
||||
aReceiver, aBody, aDeliveryStatus, aDate, aCallback) {
|
||||
let sender = this.mRIL.rilContext.icc
|
||||
? this.mRIL.rilContext.icc.msisdn
|
||||
: null;
|
||||
saveSendingMessage: function saveSendingMessage(aReceiver, aBody, aDate) {
|
||||
let sender = this.mRIL.rilContext.icc ? this.mRIL.rilContext.icc.msisdn : null;
|
||||
|
||||
// Workaround an xpconnect issue with undefined string objects.
|
||||
// See bug 808220
|
||||
|
@ -774,7 +748,7 @@ SmsDatabaseService.prototype = {
|
|||
sender = null;
|
||||
}
|
||||
|
||||
let receiver = aReceiver;
|
||||
let receiver = aReceiver
|
||||
if (receiver) {
|
||||
let parsedNumber = PhoneNumberUtils.parse(receiver.toString());
|
||||
receiver = (parsedNumber && parsedNumber.internationalNumber)
|
||||
|
@ -795,7 +769,7 @@ SmsDatabaseService.prototype = {
|
|||
readIndex: [FILTER_READ_READ, aDate],
|
||||
|
||||
delivery: DELIVERY_SENDING,
|
||||
deliveryStatus: aDeliveryStatus,
|
||||
deliveryStatus: DELIVERY_STATUS_PENDING,
|
||||
sender: sender,
|
||||
receiver: receiver,
|
||||
body: aBody,
|
||||
|
@ -803,46 +777,23 @@ SmsDatabaseService.prototype = {
|
|||
timestamp: aDate,
|
||||
read: FILTER_READ_READ
|
||||
};
|
||||
return this.saveMessage(message, aCallback);
|
||||
return this.saveMessage(message);
|
||||
},
|
||||
|
||||
setMessageDelivery: function setMessageDelivery(
|
||||
messageId, delivery, deliveryStatus, callback) {
|
||||
setMessageDelivery: function setMessageDelivery(messageId, delivery, deliveryStatus) {
|
||||
if (DEBUG) {
|
||||
debug("Setting message " + messageId + " delivery to " + delivery
|
||||
+ ", and deliveryStatus to " + deliveryStatus);
|
||||
}
|
||||
|
||||
let self = this;
|
||||
let message;
|
||||
function notifyResult(rv) {
|
||||
if (!callback) {
|
||||
return;
|
||||
}
|
||||
let sms = null;
|
||||
if (message) {
|
||||
sms = self.createMessageFromRecord(message);
|
||||
}
|
||||
callback.notify(rv, sms);
|
||||
}
|
||||
|
||||
this.newTxn(READ_WRITE, function (error, txn, store) {
|
||||
if (error) {
|
||||
// TODO bug 832140 check event.target.errorCode
|
||||
notifyResult(Cr.NS_ERROR_FAILURE);
|
||||
if (DEBUG) debug(error);
|
||||
return;
|
||||
}
|
||||
txn.oncomplete = function oncomplete(event) {
|
||||
notifyResult(Cr.NS_OK);
|
||||
};
|
||||
txn.onabort = function onabort(event) {
|
||||
// TODO bug 832140 check event.target.errorCode
|
||||
notifyResult(Cr.NS_ERROR_FAILURE);
|
||||
};
|
||||
|
||||
let getRequest = store.get(messageId);
|
||||
getRequest.onsuccess = function onsuccess(event) {
|
||||
message = event.target.result;
|
||||
let message = event.target.result;
|
||||
if (!message) {
|
||||
if (DEBUG) debug("Message ID " + messageId + " not found");
|
||||
return;
|
||||
|
|
|
@ -153,7 +153,7 @@ function convertRILCallState(state) {
|
|||
return nsIRadioInterfaceLayer.CALL_STATE_ALERTING;
|
||||
case RIL.CALL_STATE_INCOMING:
|
||||
case RIL.CALL_STATE_WAITING:
|
||||
return nsIRadioInterfaceLayer.CALL_STATE_INCOMING;
|
||||
return nsIRadioInterfaceLayer.CALL_STATE_INCOMING;
|
||||
case RIL.CALL_STATE_BUSY:
|
||||
return nsIRadioInterfaceLayer.CALL_STATE_BUSY;
|
||||
default:
|
||||
|
@ -1108,13 +1108,13 @@ RadioInterfaceLayer.prototype = {
|
|||
debug("We haven't read completely the APN data from the " +
|
||||
"settings DB yet. Wait for that.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// This check avoids data call connection if the radio is not ready
|
||||
// yet after toggling off airplane mode.
|
||||
// This check avoids data call connection if the radio is not ready
|
||||
// yet after toggling off airplane mode.
|
||||
if (this.rilContext.radioState != RIL.GECKO_RADIOSTATE_READY) {
|
||||
debug("RIL is not ready for data connection: radio's not ready");
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
// We only watch at "ril.data.enabled" flag changes for connecting or
|
||||
|
@ -1370,57 +1370,34 @@ RadioInterfaceLayer.prototype = {
|
|||
return;
|
||||
}
|
||||
|
||||
let notifyReceived = function notifyReceived(rv, sms) {
|
||||
let success = Components.isSuccessCode(rv);
|
||||
|
||||
// Acknowledge the reception of the SMS.
|
||||
message.rilMessageType = "ackSMS";
|
||||
if (!success) {
|
||||
message.result = RIL.PDU_FCS_MEMORY_CAPACITY_EXCEEDED;
|
||||
}
|
||||
this.worker.postMessage(message);
|
||||
|
||||
if (!success) {
|
||||
// At this point we could send a message to content to notify the user
|
||||
// that storing an incoming SMS failed, most likely due to a full disk.
|
||||
debug("Could not store SMS " + message.id + ", error code " + rv);
|
||||
return;
|
||||
}
|
||||
|
||||
gSystemMessenger.broadcastMessage("sms-received", {
|
||||
id: message.id,
|
||||
delivery: DOM_SMS_DELIVERY_RECEIVED,
|
||||
deliveryStatus: RIL.GECKO_SMS_DELIVERY_STATUS_SUCCESS,
|
||||
sender: message.sender || null,
|
||||
receiver: message.receiver || null,
|
||||
body: message.fullBody || null,
|
||||
messageClass: message.messageClass,
|
||||
timestamp: message.timestamp,
|
||||
read: false
|
||||
});
|
||||
Services.obs.notifyObservers(sms, kSmsReceivedObserverTopic, null);
|
||||
}.bind(this);
|
||||
|
||||
let id = -1;
|
||||
if (message.messageClass != RIL.GECKO_SMS_MESSAGE_CLASSES[RIL.PDU_DCS_MSG_CLASS_0]) {
|
||||
message.id = gSmsDatabaseService.saveReceivedMessage(
|
||||
message.sender || null,
|
||||
message.fullBody || null,
|
||||
message.messageClass,
|
||||
message.timestamp,
|
||||
notifyReceived);
|
||||
} else {
|
||||
message.id = -1;
|
||||
let sms = gSmsService.createSmsMessage(message.id,
|
||||
DOM_SMS_DELIVERY_RECEIVED,
|
||||
RIL.GECKO_SMS_DELIVERY_STATUS_SUCCESS,
|
||||
message.sender || null,
|
||||
message.receiver || null,
|
||||
message.fullBody || null,
|
||||
message.messageClass,
|
||||
message.timestamp,
|
||||
false);
|
||||
notifyReceived(Cr.NS_OK, sms);
|
||||
id = gSmsDatabaseService.saveReceivedMessage(message.sender || null,
|
||||
message.fullBody || null,
|
||||
message.messageClass,
|
||||
message.timestamp);
|
||||
}
|
||||
let sms = gSmsService.createSmsMessage(id,
|
||||
DOM_SMS_DELIVERY_RECEIVED,
|
||||
RIL.GECKO_SMS_DELIVERY_STATUS_SUCCESS,
|
||||
message.sender || null,
|
||||
message.receiver || null,
|
||||
message.fullBody || null,
|
||||
message.messageClass,
|
||||
message.timestamp,
|
||||
false);
|
||||
|
||||
gSystemMessenger.broadcastMessage("sms-received",
|
||||
{id: id,
|
||||
delivery: DOM_SMS_DELIVERY_RECEIVED,
|
||||
deliveryStatus: RIL.GECKO_SMS_DELIVERY_STATUS_SUCCESS,
|
||||
sender: message.sender || null,
|
||||
receiver: message.receiver || null,
|
||||
body: message.fullBody || null,
|
||||
messageClass: message.messageClass,
|
||||
timestamp: message.timestamp,
|
||||
read: false});
|
||||
Services.obs.notifyObservers(sms, kSmsReceivedObserverTopic, null);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -1447,32 +1424,40 @@ RadioInterfaceLayer.prototype = {
|
|||
}
|
||||
|
||||
gSmsDatabaseService.setMessageDelivery(options.sms.id,
|
||||
DOM_SMS_DELIVERY_SENT,
|
||||
options.sms.deliveryStatus);
|
||||
|
||||
let sms = gSmsService.createSmsMessage(options.sms.id,
|
||||
DOM_SMS_DELIVERY_SENT,
|
||||
options.sms.deliveryStatus,
|
||||
function notifyResult(rv, sms) {
|
||||
//TODO bug 832140 handle !Components.isSuccessCode(rv)
|
||||
gSystemMessenger.broadcastMessage("sms-sent",
|
||||
{id: options.sms.id,
|
||||
delivery: DOM_SMS_DELIVERY_SENT,
|
||||
deliveryStatus: options.sms.deliveryStatus,
|
||||
sender: message.sender || null,
|
||||
receiver: options.sms.receiver,
|
||||
body: options.sms.body,
|
||||
messageClass: options.sms.messageClass,
|
||||
timestamp: options.sms.timestamp,
|
||||
read: true});
|
||||
null,
|
||||
options.sms.receiver,
|
||||
options.sms.body,
|
||||
options.sms.messageClass,
|
||||
options.sms.timestamp,
|
||||
true);
|
||||
|
||||
if (!options.requestStatusReport) {
|
||||
// No more used if STATUS-REPORT not requested.
|
||||
delete this._sentSmsEnvelopes[message.envelopeId];
|
||||
} else {
|
||||
options.sms = sms;
|
||||
}
|
||||
gSystemMessenger.broadcastMessage("sms-sent",
|
||||
{id: options.sms.id,
|
||||
delivery: DOM_SMS_DELIVERY_SENT,
|
||||
deliveryStatus: options.sms.deliveryStatus,
|
||||
sender: message.sender || null,
|
||||
receiver: options.sms.receiver,
|
||||
body: options.sms.body,
|
||||
messageClass: options.sms.messageClass,
|
||||
timestamp: options.sms.timestamp,
|
||||
read: true});
|
||||
|
||||
options.request.notifyMessageSent(sms);
|
||||
if (!options.requestStatusReport) {
|
||||
// No more used if STATUS-REPORT not requested.
|
||||
delete this._sentSmsEnvelopes[message.envelopeId];
|
||||
} else {
|
||||
options.sms = sms;
|
||||
}
|
||||
|
||||
Services.obs.notifyObservers(sms, kSmsSentObserverTopic, null);
|
||||
}.bind(this));
|
||||
options.request.notifyMessageSent(sms);
|
||||
|
||||
Services.obs.notifyObservers(sms, kSmsSentObserverTopic, null);
|
||||
},
|
||||
|
||||
handleSmsDelivery: function handleSmsDelivery(message) {
|
||||
|
@ -1485,15 +1470,23 @@ RadioInterfaceLayer.prototype = {
|
|||
delete this._sentSmsEnvelopes[message.envelopeId];
|
||||
|
||||
gSmsDatabaseService.setMessageDelivery(options.sms.id,
|
||||
options.sms.delivery,
|
||||
message.deliveryStatus);
|
||||
|
||||
let sms = gSmsService.createSmsMessage(options.sms.id,
|
||||
options.sms.delivery,
|
||||
message.deliveryStatus,
|
||||
function notifyResult(rv, sms) {
|
||||
//TODO bug 832140 handle !Components.isSuccessCode(rv)
|
||||
let topic = (message.deliveryStatus == RIL.GECKO_SMS_DELIVERY_STATUS_SUCCESS)
|
||||
? kSmsDeliverySuccessObserverTopic
|
||||
: kSmsDeliveryErrorObserverTopic;
|
||||
Services.obs.notifyObservers(sms, topic, null);
|
||||
});
|
||||
null,
|
||||
options.sms.receiver,
|
||||
options.sms.body,
|
||||
options.sms.messageClass,
|
||||
options.sms.timestamp,
|
||||
true);
|
||||
|
||||
let topic = (message.deliveryStatus == RIL.GECKO_SMS_DELIVERY_STATUS_SUCCESS)
|
||||
? kSmsDeliverySuccessObserverTopic
|
||||
: kSmsDeliveryErrorObserverTopic;
|
||||
Services.obs.notifyObservers(sms, topic, null);
|
||||
},
|
||||
|
||||
handleSmsSendFailed: function handleSmsSendFailed(message) {
|
||||
|
@ -1513,13 +1506,22 @@ RadioInterfaceLayer.prototype = {
|
|||
}
|
||||
|
||||
gSmsDatabaseService.setMessageDelivery(options.sms.id,
|
||||
DOM_SMS_DELIVERY_ERROR,
|
||||
RIL.GECKO_SMS_DELIVERY_STATUS_ERROR);
|
||||
|
||||
let sms = gSmsService.createSmsMessage(options.sms.id,
|
||||
DOM_SMS_DELIVERY_ERROR,
|
||||
RIL.GECKO_SMS_DELIVERY_STATUS_ERROR,
|
||||
function notifyResult(rv, sms) {
|
||||
//TODO bug 832140 handle !Components.isSuccessCode(rv)
|
||||
options.request.notifySendMessageFailed(error);
|
||||
Services.obs.notifyObservers(sms, kSmsFailedObserverTopic, null);
|
||||
});
|
||||
null,
|
||||
options.sms.receiver,
|
||||
options.sms.body,
|
||||
options.sms.messageClass,
|
||||
options.sms.timestamp,
|
||||
true);
|
||||
|
||||
options.request.notifySendMessageFailed(error);
|
||||
|
||||
Services.obs.notifyObservers(sms, kSmsFailedObserverTopic, null);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -1597,10 +1599,10 @@ RadioInterfaceLayer.prototype = {
|
|||
handleICCInfoChange: function handleICCInfoChange(message) {
|
||||
let oldIcc = this.rilContext.icc;
|
||||
this.rilContext.icc = message;
|
||||
|
||||
|
||||
let iccInfoChanged = !oldIcc ||
|
||||
oldIcc.iccid != message.iccid ||
|
||||
oldIcc.mcc != message.mcc ||
|
||||
oldIcc.mcc != message.mcc ||
|
||||
oldIcc.mnc != message.mnc ||
|
||||
oldIcc.spn != message.spn ||
|
||||
oldIcc.isDisplayNetworkNameRequired != message.isDisplayNetworkNameRequired ||
|
||||
|
@ -1727,7 +1729,7 @@ RadioInterfaceLayer.prototype = {
|
|||
// Flag to ignore any radio power change requests during We're changing
|
||||
// the radio power.
|
||||
_changingRadioPower: false,
|
||||
|
||||
|
||||
// Flag to determine whether we reject a waiting call directly or we
|
||||
// notify the UI of a waiting call. It corresponds to the
|
||||
// 'ril.callwaiting.enbled' setting from the UI.
|
||||
|
@ -1826,9 +1828,9 @@ RadioInterfaceLayer.prototype = {
|
|||
this._radioEnabled = true;
|
||||
this._ensureRadioState();
|
||||
|
||||
// Clean data call setting.
|
||||
// Clean data call setting.
|
||||
this.dataCallSettings = {};
|
||||
this.dataCallSettings["enabled"] = false;
|
||||
this.dataCallSettings["enabled"] = false;
|
||||
},
|
||||
|
||||
// nsIRadioWorker
|
||||
|
@ -1893,7 +1895,7 @@ RadioInterfaceLayer.prototype = {
|
|||
this.worker.postMessage({rilMessageType: "rejectCall",
|
||||
callIndex: callIndex});
|
||||
},
|
||||
|
||||
|
||||
holdCall: function holdCall(callIndex) {
|
||||
this.worker.postMessage({rilMessageType: "holdCall",
|
||||
callIndex: callIndex});
|
||||
|
@ -2433,22 +2435,28 @@ RadioInterfaceLayer.prototype = {
|
|||
}
|
||||
|
||||
let timestamp = Date.now();
|
||||
let id = gSmsDatabaseService.saveSendingMessage(number, message, timestamp);
|
||||
let messageClass = RIL.GECKO_SMS_MESSAGE_CLASSES[RIL.PDU_DCS_MSG_CLASS_NORMAL];
|
||||
let deliveryStatus = options.requestStatusReport
|
||||
? RIL.GECKO_SMS_DELIVERY_STATUS_PENDING
|
||||
: RIL.GECKO_SMS_DELIVERY_STATUS_NOT_APPLICABLE;
|
||||
let id = gSmsDatabaseService.saveSendingMessage(number, message, deliveryStatus, timestamp,
|
||||
function notifyResult(rv, sms) {
|
||||
//TODO bug 832140 handle !Components.isSuccessCode(rv)
|
||||
Services.obs.notifyObservers(sms, kSmsSendingObserverTopic, null);
|
||||
let sms = gSmsService.createSmsMessage(id,
|
||||
DOM_SMS_DELIVERY_SENDING,
|
||||
deliveryStatus,
|
||||
null,
|
||||
number,
|
||||
message,
|
||||
messageClass,
|
||||
timestamp,
|
||||
true);
|
||||
Services.obs.notifyObservers(sms, kSmsSendingObserverTopic, null);
|
||||
|
||||
// Keep current SMS message info for sent/delivered notifications
|
||||
options.envelopeId = this.createSmsEnvelope({
|
||||
request: request,
|
||||
sms: sms,
|
||||
requestStatusReport: options.requestStatusReport
|
||||
});
|
||||
this.worker.postMessage(options);
|
||||
}.bind(this));
|
||||
// Keep current SMS message info for sent/delivered notifications
|
||||
options.envelopeId = this.createSmsEnvelope({request: request,
|
||||
sms: sms,
|
||||
requestStatusReport: options.requestStatusReport});
|
||||
|
||||
this.worker.postMessage(options);
|
||||
},
|
||||
|
||||
registerDataCallCallback: function registerDataCallCallback(callback) {
|
||||
|
@ -2799,8 +2807,8 @@ RILNetworkInterface.prototype = {
|
|||
|
||||
debug("Going to set up data connection with APN " + this.dataCallSettings["apn"]);
|
||||
this.mRIL.setupDataCall(RIL.DATACALL_RADIOTECHNOLOGY_GSM,
|
||||
this.dataCallSettings["apn"],
|
||||
this.dataCallSettings["user"],
|
||||
this.dataCallSettings["apn"],
|
||||
this.dataCallSettings["user"],
|
||||
this.dataCallSettings["passwd"],
|
||||
RIL.DATACALL_AUTH_PAP_OR_CHAP, "IP");
|
||||
this.connecting = true;
|
||||
|
|
|
@ -1207,11 +1207,6 @@ this.PDU_FCS_USAT_BUSY = 0XD4;
|
|||
this.PDU_FCS_USIM_DATA_DOWNLOAD_ERROR = 0xD5;
|
||||
this.PDU_FCS_RESERVED = 0xE0;
|
||||
this.PDU_FCS_UNSPECIFIED = 0xFF;
|
||||
// Special internal value that means we should not acknowledge an
|
||||
// incoming text right away, but need to wait for other components
|
||||
// (e.g. storage) to complete. This can be any value, so long it
|
||||
// doesn't conflict with the PDU_FCS_* constants above.
|
||||
this.MOZ_FCS_WAIT_FOR_EXPLICIT_ACK = 0x0F;
|
||||
|
||||
// ST - Status
|
||||
// Bit 7..0 = 000xxxxx, short message transaction completed
|
||||
|
|
|
@ -1713,19 +1713,6 @@ let RIL = {
|
|||
Buf.sendParcel();
|
||||
},
|
||||
|
||||
/**
|
||||
* Acknowledge the receipt and handling of an SMS.
|
||||
*
|
||||
* @param success
|
||||
* Boolean indicating whether the message was successfuly handled.
|
||||
*/
|
||||
ackSMS: function ackSMS(options) {
|
||||
if (options.result == PDU_FCS_RESERVED) {
|
||||
return;
|
||||
}
|
||||
this.acknowledgeSMS(options.result == PDU_FCS_OK, options.result);
|
||||
},
|
||||
|
||||
setCellBroadcastSearchList: function setCellBroadcastSearchList(options) {
|
||||
try {
|
||||
let str = options.searchListStr;
|
||||
|
@ -3523,7 +3510,6 @@ let RIL = {
|
|||
// short message waiting.` ~ 3GPP TS 31.111 7.1.1.1
|
||||
return PDU_FCS_RESERVED;
|
||||
}
|
||||
// Fall through!
|
||||
|
||||
// If the service "data download via SMS-PP" is not available in the
|
||||
// (U)SIM Service Table, ..., then the ME shall store the message in
|
||||
|
@ -3563,18 +3549,14 @@ let RIL = {
|
|||
}
|
||||
|
||||
if (message) {
|
||||
message.result = PDU_FCS_OK;
|
||||
if (message.messageClass == GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_2]) {
|
||||
// `MS shall ensure that the message has been to the SMS data field in
|
||||
// the (U)SIM before sending an ACK to the SC.` ~ 3GPP 23.038 clause 4
|
||||
message.result = PDU_FCS_RESERVED;
|
||||
}
|
||||
message.rilMessageType = "sms-received";
|
||||
this.sendDOMMessage(message);
|
||||
}
|
||||
|
||||
// We will acknowledge receipt of the SMS after we try to store it
|
||||
// in the database.
|
||||
return MOZ_FCS_WAIT_FOR_EXPLICIT_ACK;
|
||||
if (message && message.messageClass == GECKO_SMS_MESSAGE_CLASSES[PDU_DCS_MSG_CLASS_2]) {
|
||||
// `MS shall ensure that the message has been to the SMS data field in
|
||||
// the (U)SIM before sending an ACK to the SC.` ~ 3GPP 23.038 clause 4
|
||||
return PDU_FCS_RESERVED;
|
||||
}
|
||||
|
||||
return PDU_FCS_OK;
|
||||
|
@ -4982,11 +4964,10 @@ RIL[UNSOLICITED_RESPONSE_VOICE_NETWORK_STATE_CHANGED] = function UNSOLICITED_RES
|
|||
};
|
||||
RIL[UNSOLICITED_RESPONSE_NEW_SMS] = function UNSOLICITED_RESPONSE_NEW_SMS(length) {
|
||||
let result = this._processSmsDeliver(length);
|
||||
if (result == PDU_FCS_RESERVED || result == MOZ_FCS_WAIT_FOR_EXPLICIT_ACK) {
|
||||
return;
|
||||
if (result != PDU_FCS_RESERVED) {
|
||||
// Not reserved FCS values, send ACK now.
|
||||
this.acknowledgeSMS(result == PDU_FCS_OK, result);
|
||||
}
|
||||
// Not reserved FCS values, send ACK now.
|
||||
this.acknowledgeSMS(result == PDU_FCS_OK, result);
|
||||
};
|
||||
RIL[UNSOLICITED_RESPONSE_NEW_SMS_STATUS_REPORT] = function UNSOLICITED_RESPONSE_NEW_SMS_STATUS_REPORT(length) {
|
||||
let result = this._processSmsStatusReport(length);
|
||||
|
|
Загрузка…
Ссылка в новой задаче