WebAPI/WebMMS: Difference between revisions
< WebAPI
Jump to navigation
Jump to search
(→API) |
No edit summary |
||
Line 1: | Line 1: | ||
= Overview = | = Overview = | ||
MMS messages | On the surface, MMS messages are very similar to multipart HTML emails. One part is responsible for the layout of the message, though MMS uses SMIL rather than HTML. The other parts are attachments, such as text, picture, video, and sound files. Much like in multipart | ||
= API = | = API = | ||
Line 29: | Line 27: | ||
readonly attribute MmsAttachmentStorage attachments; | readonly attribute MmsAttachmentStorage attachments; | ||
/** | |||
* "unfetched" | |||
*/ | |||
readonly attribute DOMString state; | readonly attribute DOMString state; | ||
DOMRequest fetch(); | DOMRequest fetch(); | ||
Line 35: | Line 36: | ||
} | } | ||
/** | |||
* This object implements a mapping to look up attachments by their name. | |||
* | |||
* var text = message.attachments["text.txt"]; | |||
* message.attachments["movie.mov"] = new MmsAttachment([data], {type: "application/video"}); | |||
* delete message.attachments["picture.png"]; | |||
*/ | |||
interface MmsAttachmentStorage | interface MmsAttachmentStorage | ||
{ | { | ||
Line 42: | Line 50: | ||
} | } | ||
/** | |||
* MmsAttachment constructor (cf. Blob constructor) | |||
*/ | |||
MmsAttachment MmsAttachment( | |||
[optional] Array parts, | |||
[optional] BlobPropertyBag properties | |||
); | |||
/** | |||
* MMS attachments extend the DOM Blob type, akin to how File extends Blob. | |||
*/ | |||
[Constructor] | [Constructor] | ||
interface MmsAttachment | interface MmsAttachment : Blob | ||
{ | { | ||
/** | |||
* Name of the attachment as it is referenced within the SMIL document (cf. File::name) | |||
*/ | |||
readonly attribute DOMString name; | readonly attribute DOMString name; | ||
/** | |||
* An absolute URI under which User Agent makes the attachment available for download. | |||
* This is provided so that the data does not have to be loaded into memory first, but | |||
* can directly be linked to from an <img>, <video>, or <audio> element. | |||
*/ | |||
readonly attribute DOMString uri; | readonly attribute DOMString uri; | ||
/** | |||
* Inherited from Blob. See https://developer.mozilla.org/en/DOM/Blob | |||
*/ | |||
readonly attribute unsigned long long size; | |||
readonly attribute DOMString type; | |||
} | } | ||
= Example = | |||
== Receiving an MMS == | == Receiving an MMS == | ||
Line 72: | Line 107: | ||
== Sending an MMS == | == Sending an MMS == | ||
var | var smil = "<smil><body><par><video src="lolcat.mov"/></par></body></smil>"; | ||
var doc = | var parser = new DOMParser(); | ||
var | var doc = parser.parseFromString(smil, "application/smil"); | ||
var message = new MmsMessage(recipient, doc); | |||
message.attachments["lolcat.mov"] = new MmsAttchment("lolcat.mov", "application/video", videoData); | |||
navigator.mms.send(message); | navigator.mms.send(message); | ||
Revision as of 04:09, 12 April 2012
Overview
On the surface, MMS messages are very similar to multipart HTML emails. One part is responsible for the layout of the message, though MMS uses SMIL rather than HTML. The other parts are attachments, such as text, picture, video, and sound files. Much like in multipart
API
// TODO should we merge with this with SmsManager? interface MmsManager { DOMRequest send(MmsMessage message); DOMRequest[] send(MmsMessage message[]); DOMRequest delete(in long id); DOMRequest delete(in MmsMessage message); DOMRequest getMessage(in long id); DOMRequest getMessages(in SMSFilter filter, bool reverse); } [Constructor] interface MmsMessage { readonly attribute long id; readonly attribute DOMString delivery; readonly attribute DOMString sender; readonly attribute DOMString receiver; //TODO should this be plural? readonly attribute Date timestamp; readonly attribute Document contentDocument; readonly attribute MmsAttachmentStorage attachments; /** * "unfetched" */ readonly attribute DOMString state; DOMRequest fetch(); DOMRequest forward(DOMString number); DOMRequest cancel(); } /** * This object implements a mapping to look up attachments by their name. * * var text = message.attachments["text.txt"]; * message.attachments["movie.mov"] = new MmsAttachment([data], {type: "application/video"}); * delete message.attachments["picture.png"]; */ interface MmsAttachmentStorage { getter MmsAttachment getAttachment(DOMString name); setter creator void setAttachment(DOMString name, MmsAttachment attachment); deleter void deleteAttachment(DOMString name); } /** * MmsAttachment constructor (cf. Blob constructor) */ MmsAttachment MmsAttachment( [optional] Array parts, [optional] BlobPropertyBag properties ); /** * MMS attachments extend the DOM Blob type, akin to how File extends Blob. */ [Constructor] interface MmsAttachment : Blob { /** * Name of the attachment as it is referenced within the SMIL document (cf. File::name) */ readonly attribute DOMString name;
/** * An absolute URI under which User Agent makes the attachment available for download. * This is provided so that the data does not have to be loaded into memory first, but * can directly be linked to from an <img>, <video>, or <audio> element. */ readonly attribute DOMString uri;
/** * Inherited from Blob. See https://developer.mozilla.org/en/DOM/Blob */ readonly attribute unsigned long long size; readonly attribute DOMString type; }
Example
Receiving an MMS
navigator.mms.onreceived = function (event) { var message = event.message; if (message.state == "unfetched") { message.fetch().onsuccess(function (event) { handleNewMessage(event.target.result); }); } else { handleNewMessage(message); } } function handleNewMessage(message) { var pars = message.contentDocument.querySelectorAll("par"); for (var i = 0; i < pars.length; i++) { //TODO } }
Sending an MMS
var smil = "<smil><body><par><video src="lolcat.mov"/></par></body></smil>"; var parser = new DOMParser(); var doc = parser.parseFromString(smil, "application/smil"); var message = new MmsMessage(recipient, doc); message.attachments["lolcat.mov"] = new MmsAttchment("lolcat.mov", "application/video", videoData); navigator.mms.send(message);