зеркало из https://github.com/mozilla/gecko-dev.git
409 строки
12 KiB
JavaScript
409 строки
12 KiB
JavaScript
"use strict";
|
|
|
|
function run_test() {
|
|
do_get_profile();
|
|
startNotificationDB();
|
|
run_next_test();
|
|
}
|
|
|
|
// Get one notification, none exists
|
|
add_test(function test_get_none() {
|
|
let requestID = 0;
|
|
let msgReply = "Notification:GetAll:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
do_check_eq(0, message.data.notifications.length);
|
|
};
|
|
|
|
addAndSend("Notification:GetAll", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Store one notification
|
|
add_test(function test_send_one() {
|
|
let requestID = 1;
|
|
let msgReply = "Notification:Save:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
};
|
|
|
|
addAndSend("Notification:Save", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
notification: systemNotification,
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Get one notification, one exists
|
|
add_test(function test_get_one() {
|
|
let requestID = 2;
|
|
let msgReply = "Notification:GetAll:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
do_check_eq(1, message.data.notifications.length);
|
|
// compare the content
|
|
compareNotification(systemNotification, message.data.notifications[0]);
|
|
};
|
|
|
|
addAndSend("Notification:GetAll", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Delete one notification
|
|
add_test(function test_delete_one() {
|
|
let requestID = 3;
|
|
let msgReply = "Notification:Delete:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
};
|
|
|
|
addAndSend("Notification:Delete", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
id: systemNotification.id,
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Get one notification, none exists
|
|
add_test(function test_get_none_again() {
|
|
let requestID = 4;
|
|
let msgReply = "Notification:GetAll:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
do_check_eq(0, message.data.notifications.length);
|
|
};
|
|
|
|
addAndSend("Notification:GetAll", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Delete one notification that do not exists anymore
|
|
add_test(function test_delete_one_nonexistent() {
|
|
let requestID = 5;
|
|
let msgReply = "Notification:Delete:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
};
|
|
|
|
addAndSend("Notification:Delete", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
id: systemNotification.id,
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Store two notifications with the same id
|
|
add_test(function test_send_two_get_one() {
|
|
let requestID = 6;
|
|
let calls = 0;
|
|
|
|
let msgGetReply = "Notification:GetAll:Return:OK";
|
|
let msgGetHandler = function(message) {
|
|
do_check_eq(requestID + 2, message.data.requestID);
|
|
do_check_eq(1, message.data.notifications.length);
|
|
// compare the content
|
|
compareNotification(systemNotification, message.data.notifications[0]);
|
|
};
|
|
|
|
let msgSaveReply = "Notification:Save:Return:OK";
|
|
let msgSaveHandler = function(message) {
|
|
calls += 1;
|
|
if (calls === 2) {
|
|
addAndSend("Notification:GetAll", msgGetReply, msgGetHandler, {
|
|
origin: systemNotification.origin,
|
|
requestID: (requestID + 2)
|
|
});
|
|
}
|
|
};
|
|
|
|
addAndSend("Notification:Save", msgSaveReply, msgSaveHandler, {
|
|
origin: systemNotification.origin,
|
|
notification: systemNotification,
|
|
requestID: requestID
|
|
}, false);
|
|
|
|
addAndSend("Notification:Save", msgSaveReply, msgSaveHandler, {
|
|
origin: systemNotification.origin,
|
|
notification: systemNotification,
|
|
requestID: (requestID + 1)
|
|
}, false);
|
|
});
|
|
|
|
// Delete previous notification
|
|
add_test(function test_delete_previous() {
|
|
let requestID = 8;
|
|
let msgReply = "Notification:Delete:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
};
|
|
|
|
addAndSend("Notification:Delete", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
id: systemNotification.id,
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Store two notifications from same origin with the same tag
|
|
add_test(function test_send_two_get_one() {
|
|
let requestID = 10;
|
|
let tag = "voicemail";
|
|
|
|
let systemNotification1 =
|
|
getNotificationObject("system", "{f271f9ee-3955-4c10-b1f2-af552fb270ee}", tag);
|
|
let systemNotification2 =
|
|
getNotificationObject("system", "{8ef9a628-f0f4-44b4-820d-c117573c33e3}", tag);
|
|
|
|
let msgGetReply = "Notification:GetAll:Return:OK";
|
|
let msgGetNotifHandler = {
|
|
receiveMessage: function(message) {
|
|
if (message.name === msgGetReply) {
|
|
cpmm.removeMessageListener(msgGetReply, msgGetNotifHandler);
|
|
let notifications = message.data.notifications;
|
|
// same tag, so replaced
|
|
do_check_eq(1, notifications.length);
|
|
// compare the content
|
|
compareNotification(systemNotification2, notifications[0]);
|
|
run_next_test();
|
|
}
|
|
}
|
|
};
|
|
|
|
cpmm.addMessageListener(msgGetReply, msgGetNotifHandler);
|
|
|
|
let msgSaveReply = "Notification:Save:Return:OK";
|
|
let msgSaveCalls = 0;
|
|
let msgSaveHandler = function(message) {
|
|
msgSaveCalls++;
|
|
// Once both request have been sent, trigger getall
|
|
if (msgSaveCalls === 2) {
|
|
cpmm.sendAsyncMessage("Notification:GetAll", {
|
|
origin: systemNotification1.origin,
|
|
requestID: message.data.requestID + 2 // 12, 13
|
|
});
|
|
}
|
|
};
|
|
|
|
addAndSend("Notification:Save", msgSaveReply, msgSaveHandler, {
|
|
origin: systemNotification1.origin,
|
|
notification: systemNotification1,
|
|
requestID: requestID // 10
|
|
}, false);
|
|
|
|
addAndSend("Notification:Save", msgSaveReply, msgSaveHandler, {
|
|
origin: systemNotification2.origin,
|
|
notification: systemNotification2,
|
|
requestID: (requestID + 1) // 11
|
|
}, false);
|
|
});
|
|
|
|
// Delete previous notification
|
|
add_test(function test_delete_previous() {
|
|
let requestID = 15;
|
|
let msgReply = "Notification:Delete:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
};
|
|
|
|
addAndSend("Notification:Delete", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
id: "{8ef9a628-f0f4-44b4-820d-c117573c33e3}",
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Store two notifications from two origins with the same tag
|
|
add_test(function test_send_two_get_two() {
|
|
let requestID = 20;
|
|
let tag = "voicemail";
|
|
|
|
let systemNotification1 = systemNotification;
|
|
systemNotification1.tag = tag;
|
|
|
|
let calendarNotification2 = calendarNotification;
|
|
calendarNotification2.tag = tag;
|
|
|
|
let msgGetReply = "Notification:GetAll:Return:OK";
|
|
let msgGetCalls = 0;
|
|
let msgGetHandler = {
|
|
receiveMessage: function(message) {
|
|
if (message.name === msgGetReply) {
|
|
msgGetCalls++;
|
|
let notifications = message.data.notifications;
|
|
|
|
// one notification per origin
|
|
do_check_eq(1, notifications.length);
|
|
|
|
// first call should be system notification
|
|
if (msgGetCalls === 1) {
|
|
compareNotification(systemNotification1, notifications[0]);
|
|
}
|
|
|
|
// second and last call should be calendar notification
|
|
if (msgGetCalls === 2) {
|
|
cpmm.removeMessageListener(msgGetReply, msgGetHandler);
|
|
compareNotification(calendarNotification2, notifications[0]);
|
|
run_next_test();
|
|
}
|
|
}
|
|
}
|
|
};
|
|
cpmm.addMessageListener(msgGetReply, msgGetHandler);
|
|
|
|
let msgSaveReply = "Notification:Save:Return:OK";
|
|
let msgSaveCalls = 0;
|
|
let msgSaveHandler = {
|
|
receiveMessage: function(message) {
|
|
if (message.name === msgSaveReply) {
|
|
msgSaveCalls++;
|
|
if (msgSaveCalls === 2) {
|
|
cpmm.removeMessageListener(msgSaveReply, msgSaveHandler);
|
|
|
|
// Trigger getall for each origin
|
|
cpmm.sendAsyncMessage("Notification:GetAll", {
|
|
origin: systemNotification1.origin,
|
|
requestID: message.data.requestID + 1 // 22
|
|
});
|
|
|
|
cpmm.sendAsyncMessage("Notification:GetAll", {
|
|
origin: calendarNotification2.origin,
|
|
requestID: message.data.requestID + 2 // 23
|
|
});
|
|
}
|
|
}
|
|
}
|
|
};
|
|
cpmm.addMessageListener(msgSaveReply, msgSaveHandler);
|
|
|
|
cpmm.sendAsyncMessage("Notification:Save", {
|
|
origin: systemNotification1.origin,
|
|
notification: systemNotification1,
|
|
requestID: requestID // 20
|
|
});
|
|
|
|
cpmm.sendAsyncMessage("Notification:Save", {
|
|
origin: calendarNotification2.origin,
|
|
notification: calendarNotification2,
|
|
requestID: (requestID + 1) // 21
|
|
});
|
|
});
|
|
|
|
// Cleanup previous notification
|
|
add_test(function test_delete_previous() {
|
|
let requestID = 25;
|
|
let msgReply = "Notification:Delete:Return:OK";
|
|
let msgHandler = function(message) {
|
|
do_check_eq(requestID, message.data.requestID);
|
|
};
|
|
|
|
addAndSend("Notification:Delete", msgReply, msgHandler, {
|
|
origin: systemNotification.origin,
|
|
id: "{2bc883bf-2809-4432-b0f4-f54e10372764}",
|
|
requestID: requestID
|
|
});
|
|
});
|
|
|
|
// Store two notifications, one without alertName and one with
|
|
add_test(function test_send_two_alertName() {
|
|
let requestID = 30;
|
|
let notifications = [
|
|
{
|
|
origin: "app://system.gaiamobile.org/manifest.webapp",
|
|
id: "{27ead857-4f43-457f-a770-93b82fbfc223}",
|
|
title: "Notification title",
|
|
dir: "auto",
|
|
lang: "",
|
|
body: "Notification body",
|
|
tag: "",
|
|
icon: "icon.png",
|
|
timestamp: new Date().getTime()
|
|
}, {
|
|
origin: "app://system.gaiamobile.org/manifest.webapp",
|
|
id: "{40275e04-58d0-47be-8cc7-540578f793a4}",
|
|
title: "Notification title",
|
|
dir: "auto",
|
|
lang: "",
|
|
body: "Notification body",
|
|
tag: "",
|
|
icon: "icon.png",
|
|
alertName: "alertName",
|
|
timestamp: new Date().getTime()
|
|
}
|
|
];
|
|
let origin = notifications[0].origin;
|
|
|
|
let msgGetCrossOriginReply = "Notification:GetAllCrossOrigin:Return:OK";
|
|
let msgGetCrossOriginHandler = {
|
|
receiveMessage: function(message) {
|
|
if (message.name === msgGetCrossOriginReply) {
|
|
cpmm.removeMessageListener(
|
|
msgGetCrossOriginReply, msgGetCrossOriginHandler);
|
|
|
|
let gotNotifications = message.data.notifications;
|
|
|
|
// we expect to have one notification
|
|
do_check_eq(1, gotNotifications.length);
|
|
|
|
// compare the only notification we should have got back
|
|
compareNotification(gotNotifications[0], notifications[1]);
|
|
|
|
run_next_test();
|
|
}
|
|
}
|
|
};
|
|
cpmm.addMessageListener(msgGetCrossOriginReply, msgGetCrossOriginHandler);
|
|
|
|
let msgGetReply = "Notification:GetAll:Return:OK";
|
|
let msgGetHandler = {
|
|
receiveMessage: function(message) {
|
|
if (message.name === msgGetReply) {
|
|
cpmm.removeMessageListener(msgGetReply, msgGetHandler);
|
|
|
|
let gotNotifications = message.data.notifications;
|
|
|
|
// we expect to have two notifications
|
|
do_check_eq(2, gotNotifications.length);
|
|
|
|
// compare each notification
|
|
for (let i = 0; i < gotNotifications.length; i++) {
|
|
compareNotification(gotNotifications[i], notifications[i]);
|
|
}
|
|
|
|
run_next_test();
|
|
}
|
|
}
|
|
};
|
|
cpmm.addMessageListener(msgGetReply, msgGetHandler);
|
|
|
|
let msgSaveReply = "Notification:Save:Return:OK";
|
|
let msgSaveCalls = 0;
|
|
let msgSaveHandler = {
|
|
receiveMessage: function(message) {
|
|
if (message.name === msgSaveReply) {
|
|
msgSaveCalls++;
|
|
if (msgSaveCalls === 2) {
|
|
cpmm.removeMessageListener(msgSaveReply, msgSaveHandler);
|
|
// Trigger getall
|
|
cpmm.sendAsyncMessage("Notification:GetAll", {
|
|
origin: origin
|
|
});
|
|
}
|
|
}
|
|
}
|
|
};
|
|
cpmm.addMessageListener(msgSaveReply, msgSaveHandler);
|
|
|
|
notifications.forEach(function(n) {
|
|
cpmm.sendAsyncMessage("Notification:Save", {
|
|
origin: origin,
|
|
notification: n
|
|
});
|
|
});
|
|
});
|