WebAPI/WebVoicemail/Multi-SIM
From MozillaWiki
< WebAPI | WebVoicemail
Proposal: WebVoicemail API for Multi-SIM
Currently B2G supports a single SIM architecture. This proposal wants to extend MozVoicemail API to support multi-SIMs. The basic concept is the same as Telephony/MobileMessage API. I.e., we have a central object for dispatching events, so that API users could just listen to a single event source for different sim cards/services. User could get the voicemail status or voicemail number of a service by specifying the service Id. If user didn't apply a Id, the platform will just use the default Id.
Web API
interface MozVoicemail : EventTarget { /** * The current voicemail status of a specified service, or null when the * status is unknown */ [Throws] MozVoicemailStatus getStatus(optional unsigned long serviceId); /** * The voicemail box dialing number of a specified service, or null if one * wasn't found */ [Throws] DOMString getNumber(optional unsigned long serviceId); /** * The display name of the voicemail box dialing number, or null if one * The display name of the voicemail box dialing number of a specified service, * or null if one wasn't found */ [Throws] DOMString getDisplayName(optional unsigned long serviceId); /** * The current voicemail status has changed */ attribute EventHandler onstatuschanged; };
Compared to the single-SIM version, we add only one attribute to nsIDOMMozVoicemailStatus. The new attribute is used to indicate of which service the voicemail status. In addition, we remove a numeric constant by following W3C WebAPI design style. interface nsIDOMMozVoicemailStatus : nsISupports { const unsigned long serviceId; /* New attribute */ /** * Whether or not there are messages waiting in the voicemail box */ readonly attribute boolean hasMessages;
/** * The total message count. Some voicemail indicators will only specify that * messages are waiting, but not the actual number. In that case, the value * of messageCount will be MESSAGE_COUNT_UNKNOWN (-1). * * Logic for a voicemail notification might look something like: * if (status.hasMessages) { * // show new voicemail notification * if (status.messageCount > 0) { * // add a label for the message count * } * } else { * // hide the voicemail notification * } */ readonly attribute long messageCount;
/** * Return call number received for this voicemail status, or null if one * wasn't provided. */ readonly attribute DOMString returnNumber;
/** * Displayable return call message received for this voicemail status, or null * if one wasn't provided. */ readonly attribute DOMString returnMessage; };
Use Case
- Current B2G:
var voicemail = navigator.mozVoicemail; var number = voicemail.number; var name = voicemail.displayName; var status = voicemail.status;
- Multi-SIM:
var voicemail = navigator.mozVoicemail; // Same as current usage. var serviceId = 1; var number = voicemail.getNumber(serviceId); var name = voicemail.getDisplayName(serviceId); var status = voicemail.getStatus(serviceId); // User can use the default id. number = voicemail.getNumber(); name = voicemail.getDisplayName(); status = voicemail.getStatus();