#include "nsISupports.idl" interface nsIDOMEventTarget; [scriptable, uuid(38db66fd-a2a4-4de2-bc64-50c02e7e6cc6)] interface sbIPlayHistoryItem : nsISupports { // Why the track started playing const PRUint32 START_STATE_REQUESTED = 0; const PRUint32 START_STATE_NEXT = 1; const PRUint32 START_STATE_PREVIOUS = 2; // Why the track stopped playing const PRUint32 STOP_STATE_NONE = 0; const PRUint32 STOP_STATE_FINISHED = 1; const PRUint32 STOP_STATE_SKIPPED = 2; const PRUint32 STOP_STATE_INTERRUPTED = 3; const PRUint32 STOP_STATE_SHUTDOWN = 4; const PRUint32 STOP_STATE_STOPPED = 5; readonly attribute PRUint32 idx; readonly attribute PRTime ts; readonly attribute AString playlistRef; readonly attribute AString playlistIndex; readonly attribute AString metadataTitle; readonly attribute AString metadataArtist; readonly attribute AString metadataAlbum; readonly attribute AString metadataUrl; readonly attribute AString metadataUuid; readonly attribute PRUint32 metadataLength; readonly attribute PRUint32 startState; readonly attribute PRTime startTime; readonly attribute PRUint32 stopState; readonly attribute PRTime stopTime; readonly attribute PRUint32 stopPosition; void init(in PRUint32 aIdx, in PRTime aTs, in AString aPlaylistRef, in AString aPlaylistIndex, in AString aMetadataTitle, in AString aMetadataArtist, in AString aMetadataAlbum, in AString aMetadataUrl, in AString aMetadataUuid, in PRUint32 aMetadataLength, in PRUint32 aStartState, in PRTime aStartTime, in PRUint32 aStopState, in PRTime aStopTime, in PRUint32 aStopPosition); void started(in AString aPlaylistRef, in AString aPlaylistIndex, in AString aMetadataTitle, in AString aMetadataArtist, in AString aMetadataAlbum, in AString aMetadataUrl, in AString aMetadataUuid, in PRUint32 aMetadataLength, in PRUint32 aStartState, in PRTime aStartTime); void stopped(in PRUint32 aStopState, in PRTime aStopTime, in PRUint32 aStopPosition); void setIdxTs(in PRUint32 aIdx, in PRTime aTs); AString toString(); }; [scriptable, uuid(e5c8434e-9cfe-485b-bd7b-4666fa1c4277)] interface sbIPlayHistoryObserver : nsISupports { void onTrackChange(in sbIPlayHistoryItem aPrevious, in sbIPlayHistoryItem aCurrent); }; [scriptable, uuid(5db2582b-abcb-4a8e-a1d9-9903db0e4969)] interface sbIPlayHistoryService : nsISupports { void addPlayButton(in nsIDOMEventTarget aButton); void removePlayButton(in nsIDOMEventTarget aButton); void addForwardButton(in nsIDOMEventTarget aButton); void removeForwardButton(in nsIDOMEventTarget aButton); void addBackwardButton(in nsIDOMEventTarget aButton); void removeBackwardButton(in nsIDOMEventTarget aButton); void addPlaylist(in nsIDOMEventTarget aButton); void removePlaylist(in nsIDOMEventTarget aButton); void addObserver(in sbIPlayHistoryObserver aObserver); void removeObserver(in sbIPlayHistoryObserver aObserver); void clearAll(); void getItems(in AString aWhere, in AString aOrderBy, out PRUint32 count, [retval, array, size_is(count)] out sbIPlayHistoryItem items); }; %{C++ // {a0bdc163-39c5-4396-9126-2c79bc406ef4} #define SONGBIRD_HISTORY_ITEM_CID \ { 0xa0bdc163, 0x39c5, 0x4396, \ { 0x91, 0x26, 0x2c, 0x79, 0xbc, 0x40, 0x6e, 0xf4 } } #define SONGBIRD_HISTORY_ITEM_CONTRACTID \ "@skrul.com/songbird-play-history-item;1" #define SONGBIRD_HISTORY_ITEM_CLASSNAME "SongbirdPlayHistoryItem" // {89c91bde-ebe2-4960-9a6b-fd9342099131} #define SONGBIRD_HISTORY_SERVICE_CID \ { 0x89c91bde, 0xebe2, 0x4960, \ { 0x9a, 0x6b, 0xfd, 0x93, 0x42, 0x09, 0x91, 0x31 } } #define SONGBIRD_HISTORY_SERVICE_CONTRACTID \ "@skrul.com/songbird-play-history-service;1" #define SONGBIRD_HISTORY_SERVICE_CLASSNAME "SongbirdPlayHistoryService" %}