diff --git a/dom/sms/src/ril/SmsDatabaseService.js b/dom/sms/src/ril/SmsDatabaseService.js index 5016a1c333b..a3853dfe2e5 100644 --- a/dom/sms/src/ril/SmsDatabaseService.js +++ b/dom/sms/src/ril/SmsDatabaseService.js @@ -255,20 +255,22 @@ SmsDatabaseService.prototype = { * return Array of keys containing the final result of createMessageList. */ keyIntersection: function keyIntersection(keys, filter) { + // Always use keys[FILTER_TIMESTAMP] as base result set to be filtered. + // This ensures the result set is always sorted by timestamp. let result = keys[FILTER_TIMESTAMP]; if (keys[FILTER_NUMBERS].length || filter.numbers) { - result = keys[FILTER_NUMBERS].filter(function(i) { - return result.indexOf(i) != -1; + result = result.filter(function(i) { + return keys[FILTER_NUMBERS].indexOf(i) != -1; }); } if (keys[FILTER_DELIVERY].length || filter.delivery) { - result = keys[FILTER_DELIVERY].filter(function(i) { - return result.indexOf(i) != -1; + result = result.filter(function(i) { + return keys[FILTER_DELIVERY].indexOf(i) != -1; }); } if (keys[FILTER_READ].length || filter.read) { - result = keys[FILTER_READ].filter(function(i) { - return result.indexOf(i) != -1; + result = result.filter(function(i) { + return keys[FILTER_READ].indexOf(i) != -1; }); } return result;