One of the QA Extension's major features is the ability to send notifications to users for testdays, bugdays, pre-release testing, qa news, special announcements, and other things we want to bring to the attention of our testing community. These notifications are displayed in a small notification box in the user's browser, similar to the way the Joga Companion displayed soccer match notifications. By default, few notifications will be enabled, but users may set their notification preferences from the settings tab.
The database is then read for any undisplayed notifications, and only one notification will be displayed each 90 minutes, with a maximum of two each day (except for news if the user has turned this setting on). Older notifications will be skipped as needed.
Dates and Times
All timestamps shall be in ISO 8601 form -- 'YYYY-MM-DDThh:mm:ssZ' -- or with a [+-]HH:MM time zone designation, as understood by MochiKit.DateTime.
Notification classes and types
Each notification has a class ('event' or 'announce') and a type:
- 'event' class
- 'announce' class
These types correspond to user settings to enable and disable various types of notifications.
Notifications will be displayed according to user preferences and the following rules:
- Events -
- eventAdvanceNotificationDays in advance of the event (5 days?)
- When the event is begining
- Announcements -
- When a previously unseen notification id is received
Does https need to be used? The extension obviously runs with chrome privs, so a malicious notification document could be used to compromise the browser unless sanitized properly by the client.
Example notification document
<notifications> <notification class="event" type="testday" id="3ad65570-bd22-4add-8e99-c7c329f84b19"> [can also be numeric, doesn't matter as long as it's unique] <headline>Firefox Alpha 6 Testday</headline> <eventinfo> [for class="event"] <datetime>2007-06-28T17:44:06Z</datetime> <place>irc.mozilla.org, #testday</place> [optional] </eventinfo> <infotext>Come join us for the...</infotext> <infolink href="http://example.com">Click here to learn more</infolink> <golink href="http://example.com/2">Click here to get started now</golink> </notification> [more notifications as needed...] </notifications>