WebAPI/LogAPI

From MozillaWiki
Jump to navigation Jump to search

Use Cases

To record the history of user activity with the device, particularly with communication services (Phone Calls, Messages, Social Networks, etc.)

Consumers

  • Comms Log Application (Global for the user and per-contact)

Producers

  • Dialer, SMS, e-mail, Facebook, Twitter, ...

WebIDL

interface LogManager : EventTarget  {
    DOMRequest put(LogEntry entry);
    DOMRequest delete(DOMString entryId);
    DOMRequest clear(LogClearOptions coptions);
    // Entries are always returned ordered by timestamp
    DOMRequest find(LogFindOptions options);
        
   attribute Function onentryadded;
 };

interface LogIterator {
  DOMRequest next(optional unsigned short n);
  attribute boolean hasMore;
  attribute unsigned long position;
};

dictionary LogFindOptions {
   attribute unsigned long maxRecords;
   attribute DOMString contactId;
   attribute Date from;
   attribute Date to;
   attribute DOMString service;
};

interface LogEntryProperties {
   attribute DOMString type;           // possible values: ['incoming', 'outgoing'']
   attribute DOMString status;        // [missed, new]
   attribute DOMString[] contactId; // ContactId
   attribute DOMString[] tel;           // Tel number if not in contacts
   attribute DOMString objectId;    // Object id (for example SMS message on the SMS database)
   attribute DOMString service;      // oneOf ['SMS', 'Telephony', 'Facebook', 'Twitter'] 
   attribute DOMString title;             
   attribute DOMString description;
   attribute any extra;                                // Any extra data to be used by applications
};

[Constructor(LogEntryProperties properties)]
interface LogEntry : LogEntryProperties {
   readonly attribute DOMString id;
   readonly attribute DOMTimestamp timestamp;                  // When happened
};

Examples

Get latest global 20 log entries (ordered by timestamp, newest to oldest)

var filter = {maxNumber: 20}; var req = navigator.mozLog.find(filter); req.onsuccess = function(e) {

 var iterator = e.target.result;
 
 var req2 = iterator.next(10);
   req2.onsuccess = function(e) {
     var entries = e.target.result;
     if(iterator.hasMore) {
       iterator.next(10);
     }
 }

}