BONDI 1.0 BONDI 1.01
module bondi { module bondi {
   typedef sequence<DOMString> StringArray;    typedef sequence<DOMString> StringArray;
   typedef sequence<octet> ByteArray;    typedef sequence<octet> ByteArray;
   typedef sequence<short> ShortArray;    typedef sequence<short> ShortArray;
   typedef sequence<long> LongArray;    typedef sequence<long> LongArray;
   typedef sequence<float> FloatArray;    typedef sequence<float> FloatArray;
   [Callback] interface SuccessCallback {     typedef Object Map; 
     [NoInterfaceObject, Callback] interface SuccessCallback {  
       void onSuccess (in Object ob);        void onSuccess (in Object ob);
   };    };
   [Callback] interface ErrorCallback {    [NoInterfaceObject, Callback] interface ErrorCallback {
       void onError (in Error error);        void onError (in GenericError error);
   };    };
   interface GenericError {    interface GenericError {
       readonly attribute unsigned short code;        readonly attribute unsigned short code;
   };    };
   interface DeviceAPIError {    interface DeviceAPIError : GenericError {
       const unsigned short UNKNOWN_ERROR = 10000;        const unsigned short UNKNOWN_ERROR = 10000;
       const unsigned short INVALID_ARGUMENT_ERROR = 10001;        const unsigned short INVALID_ARGUMENT_ERROR = 10001;
       const unsigned short NOT_FOUND_ERROR = 10002;        const unsigned short NOT_FOUND_ERROR = 10002;
       const unsigned short PENDING_OPERATION_ERROR = 10003;        const unsigned short PENDING_OPERATION_ERROR = 10003;
       const unsigned short IO_ERROR = 10004;        const unsigned short IO_ERROR = 10004;
       const unsigned short NOT_SUPPORTED_ERROR = 10005;        const unsigned short NOT_SUPPORTED_ERROR = 10005;
   };    };
   interface SecurityError {    interface SecurityError : GenericError {
       const unsigned short PERMISSION_DENIED_ERROR = 20000;        const unsigned short PERMISSION_DENIED_ERROR = 20000;
   };    };
   interface PendingOperation {    interface PendingOperation {
       boolean cancel ();        boolean cancel ();
   };    };
   [NoInterfaceObject]      [NoInterfaceObject] interface bondi {  
   interface bondi {    
       PendingOperation requestFeature (in SuccessCallback successCallback,        PendingOperation requestFeature (in SuccessCallback successCallback,
               in ErrorCallback errorCallback,                in ErrorCallback errorCallback,
               in DOMString name)                in DOMString name)
           raises (DeviceAPIError, SecurityError);            raises (DeviceAPIError, SecurityError);
   };    };
   
   module appconfig {    module appconfig {
       interface AppConfigManager {        interface AppConfigManager {
           DOMString get (in DOMString key)            DOMString get (in DOMString key)
               raises (SecurityError);                raises (SecurityError);
           void set (in DOMString key,            void set (in DOMString key,
                   in DOMString value)                    in DOMString value)
               raises (SecurityError);                raises (SecurityError);
       };        };
   };    };
   
   module applauncher {    module applauncher {
       [Callback] interface AppLauncherSuccessCallback {        [NoInterfaceObject, Callback] interface AppLauncherSuccessCallback {
           void onSuccess (in StringArray obj);            void onSuccess (in StringArray obj);
       };        };
       interface AppLauncherManager {        interface AppLauncherManager {
           PendingOperation launchApplication (in SuccessCallback successCallback,            PendingOperation launchApplication (in SuccessCallback successCallback,
                   in ErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in DOMString appURI,                    in DOMString appURI,
                   [Optional] in StringArray params)                    [Optional] in StringArray params)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           PendingOperation getInstalledApplications (in AppLauncherSuccessCallback successCallback,            PendingOperation getInstalledApplications (in AppLauncherSuccessCallback successCallback,
                   in ErrorCallback errorCallback)                    in ErrorCallback errorCallback)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           DOMString getDefaultApplication (in DOMString mimeType)            DOMString getDefaultApplication (in DOMString mimeType)
               raises (DeviceAPIError);                raises (DeviceAPIError);
       };        };
   };    };
   
   module camera {    module camera {
       typedef sequence<Camera> CameraArray;        typedef sequence<Camera> CameraArray;
       typedef sequence<unsigned short> FeatureArray;        typedef sequence<unsigned short> FeatureArray;
       typedef sequence<any> FeatureValueArray;        typedef sequence<any> FeatureValueArray;
       [Callback] interface CameraSuccessCallback {        [NoInterfaceObject, Callback] interface CameraSuccessCallback {
           void onSuccess ([Optional] in DOMString file);            void onSuccess ([Optional] in DOMString file);
       };        };
       [Callback] interface CameraErrorCallback {        [NoInterfaceObject, Callback] interface ViewFinderSuccessCallback {
           void onError (in CameraError error);             void onSuccess (in DOMString uri); 
       };        };
       interface CameraError {        interface CameraError : GenericError {
           const unsigned short CAMERA_ALREADY_IN_USE_ERROR = 0;            const unsigned short CAMERA_ALREADY_IN_USE_ERROR = 0;
           const unsigned short CAMERA_FEATURE_NOT_SUPPORTED_ERROR = 1;            const unsigned short CAMERA_FEATURE_NOT_SUPPORTED_ERROR = 1;
           const unsigned short CAMERA_VIEWFINDER_SHOW_ERROR = 2;            const unsigned short CAMERA_VIEWFINDER_SHOW_ERROR = 2;
           const unsigned short CAMERA_CAPTURE_ERROR = 3;            const unsigned short CAMERA_CAPTURE_ERROR = 3;
       };        };
       interface CameraResolution {        interface CameraResolution {
           attribute unsigned long horizontal;            attribute unsigned long horizontal;
           attribute unsigned long vertical;            attribute unsigned long vertical;
       };        };
       interface CameraManager {        interface CameraManager {
           CameraArray getCameras ()            CameraArray getCameras ()
               raises (SecurityError);                raises (SecurityError);
       };        };
       interface Camera {        interface Camera {
           const unsigned short QUALITY = 0;            const unsigned short QUALITY = 0;
           const unsigned short RESOLUTION_VIDEO = 1;            const unsigned short RESOLUTION_VIDEO = 1;
           const unsigned short RESOLUTION_PICTURE = 2;            const unsigned short RESOLUTION_PICTURE = 2;
           const unsigned short ZOOM_LEVEL_OPTICAL = 3;            const unsigned short ZOOM_LEVEL_OPTICAL = 3;
           const unsigned short ZOOM_LEVEL_DIGITAL = 4;            const unsigned short ZOOM_LEVEL_DIGITAL = 4;
           const unsigned short BRIGHTNESS = 5;            const unsigned short BRIGHTNESS = 5;
           const unsigned short WHITE_BALANCE_MODE = 6;            const unsigned short WHITE_BALANCE_MODE = 6;
           const unsigned short CONTRAST = 7;            const unsigned short CONTRAST = 7;
           const unsigned short NIGHT_MODE = 8;            const unsigned short NIGHT_MODE = 8;
           const unsigned short FOCUS_MODE = 9;            const unsigned short FOCUS_MODE = 9;
           const unsigned short FOCUS = 10;            const unsigned short FOCUS = 10;
           const unsigned short FLASH = 11;            const unsigned short FLASH = 11;
           const unsigned short LIGHT = 12;            const unsigned short LIGHT = 12;
           const unsigned short FRAME_RATE = 13;            const unsigned short FRAME_RATE = 13;
           const unsigned short AUDIO = 14;            const unsigned short AUDIO = 14;
           readonly attribute unsigned short id;            readonly attribute unsigned short id;
           readonly attribute DOMString name;            readonly attribute DOMString name;
           FeatureArray getSupportedFeatureKeys ();            FeatureArray getSupportedFeatureKeys ();
           FeatureValueArray getSupportedFeatureValues (in unsigned short featureKey)            FeatureValueArray getSupportedFeatureValues (in unsigned short featureKey)
               raises (DeviceAPIError, CameraError);                raises (DeviceAPIError, CameraError);
           unsigned short getMaximumFeatureValue (in unsigned short featureKey)            unsigned short getMaximumFeatureValue (in unsigned short featureKey)
               raises (DeviceAPIError, CameraError);                raises (DeviceAPIError, CameraError);
           unsigned short getMinimumFeatureValue (in unsigned short featureKey)            unsigned short getMinimumFeatureValue (in unsigned short featureKey)
               raises (DeviceAPIError, CameraError);                raises (DeviceAPIError, CameraError);
           any getFeatureValue (in unsigned short featureKey)            any getFeatureValue (in unsigned short featureKey)
               raises (DeviceAPIError, CameraError);                raises (DeviceAPIError, CameraError);
           void setFeatureValue (in unsigned short featureKey,            void setFeatureValue (in unsigned short featureKey,
                   in any featureValue)                    in any featureValue)
               raises (DeviceAPIError, CameraError);                raises (DeviceAPIError, CameraError);
           DOMString startViewFinderStreaming ()             PendingOperation startViewFinderStreaming (in ViewFinderSuccessCallback successCallback, 
                     in ErrorCallback errorCallback)  
               raises (SecurityError, CameraError);                raises (SecurityError, CameraError);
           void stopViewFinderStreaming ()            void stopViewFinderStreaming ()
               raises (SecurityError);                raises (SecurityError);
           PendingOperation takePicture (in CameraSuccessCallback successCallback,            PendingOperation takePicture (in CameraSuccessCallback successCallback,
                   in CameraErrorCallback errorCallback)                    in ErrorCallback errorCallback)
               raises (SecurityError, DeviceAPIError, CameraError);                raises (SecurityError, DeviceAPIError, CameraError);
           PendingOperation beginRecording (in CameraSuccessCallback successCallback,            PendingOperation beginRecording (in CameraSuccessCallback successCallback,
                   in CameraErrorCallback errorCallback)                    in ErrorCallback errorCallback)
               raises (SecurityError, DeviceAPIError, CameraError);                raises (SecurityError, DeviceAPIError, CameraError);
           void endRecording (in CameraSuccessCallback successCallback,            void endRecording (in CameraSuccessCallback successCallback,
                   in CameraErrorCallback errorCallback)                    in ErrorCallback errorCallback)
               raises (DeviceAPIError);                 raises (DeviceAPIError, CameraError); 
           PendingOperation cancelCapturing (in CameraSuccessCallback successCallback,    
                   in CameraErrorCallback errorCallback)    
               raises (DeviceAPIError);    
       };        };
   };    };
   
   module commlog {    module commlog {
       typedef sequence<SMS> SMSArray;        typedef sequence<SMS> SMSArray;
       typedef sequence<MMS> MMSArray;        typedef sequence<MMS> MMSArray;
       typedef sequence<Email> EmailArray;        typedef sequence<Email> EmailArray;
       typedef sequence<Call> CallArray;        typedef sequence<Call> CallArray;
       [Callback] interface CommLogSMSSuccessCallback {        [NoInterfaceObject, Callback] interface CommLogSMSSuccessCallback {
           void onSuccess (in SMSArray obj);            void onSuccess (in SMSArray obj);
       };        };
       [Callback] interface CommLogMMSSuccessCallback {        [NoInterfaceObject, Callback] interface CommLogMMSSuccessCallback {
           void onSuccess (in MMSArray obj);            void onSuccess (in MMSArray obj);
       };        };
       [Callback] interface CommLogEmailSuccessCallback {        [NoInterfaceObject, Callback] interface CommLogEmailSuccessCallback {
           void onSuccess (in EmailArray obj);            void onSuccess (in EmailArray obj);
       };        };
       [Callback] interface CommLogCallSuccessCallback {        [NoInterfaceObject, Callback] interface CommLogCallSuccessCallback {
           void onSuccess (in CallArray obj);            void onSuccess (in CallArray obj);
       };        };
       interface CommLogManager {        interface CommLogManager {
           const unsigned short INBOX_FOLDER = 0;            const unsigned short INBOX_FOLDER = 0;
           const unsigned short OUTBOX_FOLDER = 1;            const unsigned short OUTBOX_FOLDER = 1;
           const unsigned short SENT_FOLDER = 2;            const unsigned short SENT_FOLDER = 2;
           const unsigned short DRAFT_FOLDER = 3;            const unsigned short DRAFT_FOLDER = 3;
           const unsigned short MISSED_CALLS_FOLDER = 0;            const unsigned short MISSED_CALLS_FOLDER = 0;
           const unsigned short RECEIVED_CALLS_FOLDER = 1;            const unsigned short RECEIVED_CALLS_FOLDER = 1;
           const unsigned short INITIATED_CALLS_FOLDER = 2;            const unsigned short INITIATED_CALLS_FOLDER = 2;
           PendingOperation getSMSLog (in CommLogSMSSuccessCallback successCallback,            PendingOperation getSMSLog (in CommLogSMSSuccessCallback successCallback,
                   in ErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in ShortArray messageFolders,                    in ShortArray messageFolders,
                   [Optional] in Map filter)                    [Optional] in Map filter)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           PendingOperation getMMSLog (in CommLogMMSSuccessCallback successCallback,            PendingOperation getMMSLog (in CommLogMMSSuccessCallback successCallback,
                   in ErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in ShortArray messageFolders,                    in ShortArray messageFolders,
                   [Optional] in Map filter)                    [Optional] in Map filter)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           PendingOperation getEmailLog (in CommLogEmailSuccessCallback successCallback,            PendingOperation getEmailLog (in CommLogEmailSuccessCallback successCallback,
                   in ErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in ShortArray messageFolders,                    in ShortArray messageFolders,
                   [Optional] in Map filter)                    [Optional] in Map filter)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           PendingOperation getCallLog (in CommLogCallSuccessCallback successCallback,            PendingOperation getCallLog (in CommLogCallSuccessCallback successCallback,
                   in ErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in ShortArray callFolder,                    in ShortArray callFolder,
                   [Optional] in Map filter)                    [Optional] in Map filter)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           StringArray getSMSSupportedPropertyKeys ();            StringArray getSMSSupportedPropertyKeys ();
           StringArray getMMSSupportedPropertyKeys ();            StringArray getMMSSupportedPropertyKeys ();
           StringArray getEmailSupportedPropertyKeys ();            StringArray getEmailSupportedPropertyKeys ();
           StringArray getCallSupportedPropertyKeys ();            StringArray getCallSupportedPropertyKeys ();
       };        };
       interface Call {        [Callback] interface Call {
           readonly attribute DOMString phoneNumber             readonly attribute DOMString phoneNumber; 
               setraises (DeviceAPIError);    
           readonly attribute Date startTime;            readonly attribute Date startTime;
           readonly attribute unsigned long duration;            readonly attribute unsigned long duration;
           readonly attribute DOMString id;            readonly attribute DOMString id;
           readonly attribute unsigned short folder;            readonly attribute unsigned short folder;
       };        };
   };    };
   
   module devicestatus {    module devicestatus {
       [Callback] interface PropertyChangeSuccessCallback {        [NoInterfaceObject, Callback] interface PropertyChangeSuccessCallback {
           void onPropertyChange (in PropertyRef property,            void onPropertyChange (in PropertyRef property,
                   in Object newValue);                    in Object newValue);
       };        };
       interface DeviceStatusError {        interface DeviceStatusError : GenericError {
           const unsigned short READ_ONLY_PROPERTY_ERROR = 1;            const unsigned short READ_ONLY_PROPERTY_ERROR = 1;
       };        };
       interface DeviceStatusManager {        interface DeviceStatusManager {
           StringArray listVocabularies ();            StringArray listVocabularies ();
           void setDefaultVocabulary (in DOMString vocabulary)            void setDefaultVocabulary (in DOMString vocabulary)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           StringArray listAspects ();            StringArray listAspects ();
           StringArray getComponents (in AspectName aspect)            StringArray getComponents (in AspectName aspect)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           StringArray listProperties (in AspectName aspect)            StringArray listProperties (in AspectName aspect)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           Object getPropertyValue (in PropertyRef prop)            Object getPropertyValue (in PropertyRef prop)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           void setPropertyValue (in PropertyRef pref,            void setPropertyValue (in PropertyRef pref,
                   in Object value)                    in Object value)
               raises (SecurityError, DeviceAPIError, DeviceStatusError);                raises (SecurityError, DeviceAPIError, DeviceStatusError);
           unsigned long watchPropertyChange (in PropertyRef pref,            unsigned long watchPropertyChange (in PropertyRef pref,
                   in PropertyChangeCallback listener,                    in PropertyChangeSuccessCallback listener,
                   in Map options)                    in Map options)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           void clearPropertyChange (in unsigned long watchHandler)            void clearPropertyChange (in unsigned long watchHandler)
               raises (DeviceAPIError);                raises (DeviceAPIError);
       };        };
       interface AspectName {        interface AspectName {
           attribute DOMString aspect;            attribute DOMString aspect;
           attribute DOMString vocabulary;            attribute DOMString vocabulary;
       };        };
       interface PropertyRef {        interface PropertyRef {
           attribute DOMString vocabulary;            attribute DOMString vocabulary;
           attribute DOMString component;            attribute DOMString component;
           attribute DOMString aspect;            attribute DOMString aspect;
           attribute DOMString property;            attribute DOMString property;
       };        };
   };    };
   
   module filesystem {    module filesystem {
       typedef sequence<File> FileArray;        typedef sequence<File> FileArray;
       [Callback] interface FileSystemSuccessCallback {        [NoInterfaceObject, Callback] interface FileSystemSuccessCallback {
           void onSuccess (in File file);            void onSuccess (in File file);
       };        };
       interface FileSystemManager {        interface FileSystemManager {
           readonly attribute unsigned long maxPathLength;            readonly attribute unsigned long maxPathLength;
           DOMString getDefaultLocation (in DOMString specifier,            DOMString getDefaultLocation (in DOMString specifier,
                   in unsigned long minFreeSpace)                    in unsigned long minFreeSpace)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           StringArray getRootLocations ();            StringArray getRootLocations ();
           File resolve (in DOMString location)            File resolve (in DOMString location)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           void registerEventListener (in FileSystemListener listener)            void registerEventListener (in FileSystemListener listener)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void unregisterEventListener (in FileSystemListener listener)            void unregisterEventListener (in FileSystemListener listener)
               raises (DeviceAPIError);                raises (DeviceAPIError);
       };        };
       interface FileSystemListener {        interface FileSystemListener {
           void mountEvent (in DOMString location);            void mountEvent (in DOMString location);
           void unmountEvent (in DOMString location);            void unmountEvent (in DOMString location);
       };        };
       interface File {        interface File {
           readonly attribute File parent;            readonly attribute File parent;
           readonly attribute boolean readOnly;            readonly attribute boolean readOnly;
           readonly attribute boolean isFile;            readonly attribute boolean isFile;
           readonly attribute boolean isDirectory;            readonly attribute boolean isDirectory;
           readonly attribute Date created;            readonly attribute Date created;
           readonly attribute Date modified;            readonly attribute Date modified;
           readonly attribute DOMString path;            readonly attribute DOMString path;
           readonly attribute DOMString name;            readonly attribute DOMString name;
           readonly attribute DOMString absolutePath;            readonly attribute DOMString absolutePath;
           readonly attribute unsigned long fileSize;            readonly attribute unsigned long fileSize;
           readonly attribute Map metadata;            readonly attribute Map metadata;
           FileArray listFiles ()            FileArray listFiles ()
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           FileStream open (in DOMString mode,            FileStream open (in DOMString mode,
                   in DOMString encoding)                    in DOMString encoding)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           PendingOperation copyTo (in FileSystemSuccessCallback successCallback,            PendingOperation copyTo (in FileSystemSuccessCallback successCallback,
                   in ErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in DOMString filePath,                    in DOMString filePath,
                   in boolean overwrite)                    in boolean overwrite)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           PendingOperation moveTo (in FileSystemSuccessCallback successCallback,            PendingOperation moveTo (in FileSystemSuccessCallback successCallback,
                   in ErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in DOMString filePath,                    in DOMString filePath,
                   in boolean overwrite)                    in boolean overwrite)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           File createDirectory (in DOMString dirPath)            File createDirectory (in DOMString dirPath)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           File createFile (in DOMString filePath)            File createFile (in DOMString filePath)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           File resolve (in DOMString filePath)            File resolve (in DOMString filePath)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           boolean deleteDirectory (in boolean recursive)            boolean deleteDirectory (in boolean recursive)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           boolean deleteFile ()            boolean deleteFile ()
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
       };        };
       interface FileStream {        interface FileStream {
           readonly attribute boolean eof;            readonly attribute boolean eof;
           attribute unsigned long position            attribute unsigned long position
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           readonly attribute unsigned long bytesAvailable;            readonly attribute unsigned long bytesAvailable;
           void close ();            void close ();
           DOMString read (in unsigned long charCount)            DOMString read (in unsigned long charCount)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           ByteArray readBytes (in unsigned long byteCount)            ByteArray readBytes (in unsigned long byteCount)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           DOMString readBase64 (in unsigned long byteCount)            DOMString readBase64 (in unsigned long byteCount)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void write (in DOMString stringData)            void write (in DOMString stringData)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void writeBytes (in ByteArray byteData)            void writeBytes (in ByteArray byteData)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void writeBase64 (in DOMString base64Data)            void writeBase64 (in DOMString base64Data)
               raises (DeviceAPIError);                raises (DeviceAPIError);
       };        };
   };    };
   
   module geolocation {    module geolocation {
       [Callback] interface PositionSuccessCallback {        [NoInterfaceObject, Callback] interface PositionSuccessCallback {
           void onSuccess (in Position position);            void handleEvent (in Position position);
       };        };
       [Callback] interface PositionErrorCallback {        [NoInterfaceObject, Callback] interface PositionErrorCallback {
           void onError (in PositionError error);            void handleEvent (in PositionError error);
       };        };
       interface Geolocation {        interface Geolocation {
           void getCurrentPosition (in PositionSuccessCallback successCallback,            void getCurrentPosition (in PositionSuccessCallback successCallback,
                   [Optional] in PositionErrorCallback errorCallback,                    [Optional] in PositionErrorCallback errorCallback,
                   [Optional] in PositionOptions options)                    [Optional] in PositionOptions options)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           unsigned short watchPosition (in PositionSuccessCallback successCallback,            long watchPosition (in PositionSuccessCallback successCallback,
                   [Optional] in PositionErrorCallback errorCallback,                    [Optional] in PositionErrorCallback errorCallback,
                   [Optional] in PositionOptions options)                    [Optional] in PositionOptions options)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           void clearWatch (in unsigned short id);            void clearWatch (in long id);
       };        };
       interface Coordinates {        interface Coordinates {
           readonly attribute double latitude;            readonly attribute double latitude;
           readonly attribute double longitude;            readonly attribute double longitude;
           readonly attribute double altitude;            readonly attribute double altitude;
           readonly attribute double accuracy;            readonly attribute double accuracy;
           readonly attribute double altitudeAccuracy;            readonly attribute double altitudeAccuracy;
           readonly attribute double heading;            readonly attribute double heading;
           readonly attribute double speed;            readonly attribute double speed;
       };        };
       interface Position {        interface Position {
           readonly attribute long timestamp;            readonly attribute long timestamp;
           readonly attribute Coordinates coords;            readonly attribute Coordinates coords;
       };        };
       interface PositionError {        interface PositionError {
           const unsigned short UNKNOWN_ERROR = 0;            const unsigned short UNKNOWN_ERROR = 0;
           const unsigned short POSITION_UNAVAILABLE_ERROR = 2;            const unsigned short POSITION_UNAVAILABLE_ERROR = 2;
           const unsigned short TIMEOUT_ERROR = 3;            const unsigned short TIMEOUT_ERROR = 3;
           readonly attribute unsigned short code;            readonly attribute unsigned short code;
           readonly attribute DOMString message;            readonly attribute DOMString message;
       };        };
       interface PositionOptions {        [NoInterfaceObject, Callback] interface PositionOptions {
           attribute long timeout;            attribute long timeout;
           attribute long maximumAge;            attribute long maximumAge;
           attribute boolean enableHighAccuracy;            attribute boolean enableHighAccuracy;
       };        };
   };    };
   
   module messaging {    module messaging {
       typedef sequence<MMSSlide> MMSSlidesArray;         typedef sequence<MMSSlide> MMSSlideArray; 
       [Callback] interface MessagingErrorCallback {        interface MessagingError : GenericError {
           void onError (in MessagingError error);    
       };    
       interface MessagingError {    
           const unsigned short OUT_OF_COVERAGE_ERROR = 1;            const unsigned short OUT_OF_COVERAGE_ERROR = 1;
           const unsigned short MMS_VIDEO_SLIDE_ERROR = 2;            const unsigned short MMS_VIDEO_SLIDE_ERROR = 2;
           const unsigned short MMS_MESSAGE_SIZE_EXCEEDED_ERROR = 3;            const unsigned short MMS_MESSAGE_SIZE_EXCEEDED_ERROR = 3;
       };        };
       interface MessagingManager {        interface MessagingManager {
           const unsigned short INBOX_FOLDER = 0;            const unsigned short INBOX_FOLDER = 0;
           const unsigned short OUTBOX_FOLDER = 1;            const unsigned short OUTBOX_FOLDER = 1;
           const unsigned short SENT_FOLDER = 2;            const unsigned short SENT_FOLDER = 2;
           const unsigned short DRAFTS_FOLDER = 3;            const unsigned short DRAFTS_FOLDER = 3;
           SMSMessage createSMS ([Optional] in SmsObject smsParams)            SMS createSMS ([Optional] in Map smsParams)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           MMSMessage createMMS ([Optional] in MmsObject mmsParams)            MMS createMMS ([Optional] in Map mmsParams)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           EmailMessage createEmail ([Optional] in EmailObject emailParams)            Email createEmail ([Optional] in Map emailParams)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           PendingOperation sendSMS (in SuccessCallback successCallback,            PendingOperation sendSMS (in SuccessCallback successCallback,
                   in MessagingErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in SMSMessage sms)                    in SMS sms)
               raises (SecurityError, DeviceAPIError, MessagingError);                raises (SecurityError, DeviceAPIError, MessagingError);
           PendingOperation sendMMS (in SuccessCallback successCallback,            PendingOperation sendMMS (in SuccessCallback successCallback,
                   in MessagingErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in MMSMessage mms)                    in MMS mms)
               raises (SecurityError, DeviceAPIError, MessagingError);                raises (SecurityError, DeviceAPIError, MessagingError);
           PendingOperation sendEmail (in SuccessCallback successCallback,            PendingOperation sendEmail (in SuccessCallback successCallback,
                   in MessagingErrorCallback errorCallback,                    in ErrorCallback errorCallback,
                   in EmailMessage email)                    in Email email)
               raises (SecurityError, DeviceAPIError, MessagingError);                raises (SecurityError, DeviceAPIError, MessagingError);
           PendingOperation getAvailableEmailAccounts (in SuccessCallback successCallback,            PendingOperation getAvailableEmailAccounts (in SuccessCallback successCallback,
                   in ErrorCallback errorCallback)                    in ErrorCallback errorCallback)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
       };        };
       interface SMSMessage {        interface SMS {
           readonly attribute DOMString id;            readonly attribute DOMString id;
           readonly attribute Date datetime;            readonly attribute Date datetime;
           attribute DOMString body            attribute DOMString body
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           attribute boolean store            attribute boolean store
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           readonly attribute unsigned short folder;            readonly attribute unsigned short folder;
           readonly attribute boolean read;            readonly attribute boolean read;
           Object getProperty (in DOMString propertyName)            Object getProperty (in DOMString propertyName)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void setProperty (in DOMString propertyName,            void setProperty (in DOMString propertyName,
                   in DOMString propertyValue)                    in DOMString propertyValue)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           StringArray getRecipients ();            StringArray getRecipients ();
           DOMString getRecipient (in unsigned short index)            DOMString getRecipient (in unsigned short index)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void appendRecipient (in DOMString phoneNumber)            void appendRecipient (in DOMString phoneNumber)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void clearRecipients ()             void clearRecipients (); 
               raises (DeviceAPIError);    
       };        };
       interface MMSSlide {        interface MMSSlide {
           attribute unsigned long duration;            attribute unsigned long duration;
           attribute File image            attribute File image
               setraises (MessagingError);                setraises (MessagingError);
           attribute unsigned long imageBegin;            attribute unsigned long imageBegin;
           attribute unsigned long imageEnd;            attribute unsigned long imageEnd;
           attribute File audio            attribute File audio
               setraises (MessagingError);                setraises (MessagingError);
           attribute unsigned long audioBegin;            attribute unsigned long audioBegin;
           attribute unsigned long audioEnd;            attribute unsigned long audioEnd;
           attribute DOMString text            attribute DOMString text
               setraises (MessagingError);                setraises (MessagingError);
           attribute unsigned long textBegin;            attribute unsigned long textBegin;
           attribute unsigned long textEnd;            attribute unsigned long textEnd;
           attribute File video            attribute File video
               setraises (MessagingError);                setraises (MessagingError);
           attribute unsigned long videoBegin;            attribute unsigned long videoBegin;
           attribute unsigned long videoEnd;            attribute unsigned long videoEnd;
       };        };
       interface MMSMessage {        interface MMS {
           const unsigned short MULTIPART_MIXED = 0;            const unsigned short MULTIPART_MIXED = 0;
           const unsigned short MULTIPART_RELATED = 1;            const unsigned short MULTIPART_RELATED = 1;
           readonly attribute DOMString id;            readonly attribute DOMString id;
           readonly attribute Date datetime;            readonly attribute Date datetime;
           attribute DOMString multipartMixedBody            attribute DOMString multipartMixedBody
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           attribute boolean store            attribute boolean store
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           readonly attribute unsigned long folder;            readonly attribute unsigned long folder;
           attribute DOMString subject            attribute DOMString subject
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           readonly attribute boolean read;            readonly attribute boolean read;
           attribute unsigned short messageType;            attribute unsigned short messageType;
           attribute MMSSlideArray slides;            attribute MMSSlideArray slides;
           Object getProperty (in DOMString propertyName)            Object getProperty (in DOMString propertyName)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void setProperty (in DOMString propertyName,            void setProperty (in DOMString propertyName,
                   in Object propertyValue)                    in Object propertyValue)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           StringArray getRecipients ();            StringArray getRecipients ();
           DOMString getRecipient (in unsigned long index)            DOMString getRecipient (in unsigned long index)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void appendRecipient (in DOMString phoneNumber)            void appendRecipient (in DOMString phoneNumber)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void clearRecipients ()             void clearRecipients (); 
               raises (DeviceAPIError);             FileArray getAttachments (); 
           FileArray getAttachments ()    
               raises (DeviceAPIError);    
           File getAttachment (in unsigned short index)            File getAttachment (in unsigned short index)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void appendAttachment (in File myAttachment)            void appendAttachment (in File myAttachment)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           void clearAttachments ()            void clearAttachments ()
               raises (DeviceAPIError);                raises (DeviceAPIError);
       };        };
       interface EmailMessage {        interface Email {
           readonly attribute DOMString id;            readonly attribute DOMString id;
           readonly attribute Date datetime;            readonly attribute Date datetime;
           attribute DOMString from            attribute DOMString from
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           attribute DOMString body            attribute DOMString body
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           attribute boolean store            attribute boolean store
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           readonly attribute unsigned short folder;            readonly attribute unsigned short folder;
           attribute DOMString subject            attribute DOMString subject
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           readonly attribute boolean read;            readonly attribute boolean read;
           DOMString getProperty (in DOMString propertyName)            DOMString getProperty (in DOMString propertyName)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void setProperty (in DOMString propertyName,            void setProperty (in DOMString propertyName,
                   in DOMString propertyValue)                    in DOMString propertyValue)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           StringArray getToList ()             StringArray getToList (); 
               raises (DeviceAPIError);    
           DOMString getTo (in unsigned short index)            DOMString getTo (in unsigned short index)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           StringArray getCCList ()             StringArray getCCList (); 
               raises (DeviceAPIError);    
           DOMString getCC (in unsigned short index)            DOMString getCC (in unsigned short index)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           StringArray getBCCList ();            StringArray getBCCList ();
           DOMString getBCC (in unsigned short index)            DOMString getBCC (in unsigned short index)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void appendTo (in DOMString emailAddress)            void appendTo (in DOMString emailAddress)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void clearTo ()             void clearTo (); 
               raises (DeviceAPIError);    
           void appendCC (in DOMString emailAddress)            void appendCC (in DOMString emailAddress)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void clearCC ()             void clearCC (); 
               raises (DeviceAPIError);    
           void appendBCC (in DOMString emailAddress)            void appendBCC (in DOMString emailAddress)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void clearBCC ()             void clearBCC (); 
               raises (DeviceAPIError);             FileArray getAttachments (); 
           FileArray getAttachments ()    
               raises (DeviceAPIError);    
           File getAttachment (in unsigned short index)            File getAttachment (in unsigned short index)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void appendAttachment (in File myAttachment)            void appendAttachment (in File myAttachment)
               raises (SecurityError, DeviceAPIError);                raises (SecurityError, DeviceAPIError);
           void clearAttachments ()             void clearAttachments (); 
               raises (DeviceAPIError);    
       };        };
   };    };
   
   module gallery {    module gallery {
       typedef sequence<Gallery> GalleryArray;        typedef sequence<Gallery> GalleryArray;
       typedef sequence<MediaItem> MediaItemArray;        typedef sequence<MediaItem> MediaItemArray;
       interface GalleryError {        interface GalleryError : GenericError {
           const unsigned short GALLERY_OPEN_ERROR = 1;            const unsigned short GALLERY_OPEN_ERROR = 1;
           const unsigned short GALLERY_NOT_OPEN_ERROR = 2;            const unsigned short GALLERY_NOT_OPEN_ERROR = 2;
       };        };
       interface GalleryManager {        interface GalleryManager {
           GalleryArray getGalleries ();            GalleryArray getGalleries ();
       };        };
       interface Gallery {        interface Gallery {
           const unsigned short MEDIA_ITEM_TYPE_UNDEFINED = 0;            const unsigned short MEDIA_ITEM_TYPE_UNDEFINED = 0;
           const unsigned short MEDIA_ITEM_TYPE_AUDIO = 1;            const unsigned short MEDIA_ITEM_TYPE_AUDIO = 1;
           const unsigned short MEDIA_ITEM_TYPE_VIDEO = 2;            const unsigned short MEDIA_ITEM_TYPE_VIDEO = 2;
           const unsigned short MEDIA_ITEM_TYPE_IMAGE = 3;            const unsigned short MEDIA_ITEM_TYPE_IMAGE = 3;
           const unsigned short MEDIA_SORT_NONE = 0;            const unsigned short MEDIA_SORT_NONE = 0;
           const unsigned short MEDIA_SORT_BY_FILENAME = 1;            const unsigned short MEDIA_SORT_BY_FILENAME = 1;
           const unsigned short MEDIA_SORT_BY_FILEDATE = 2;            const unsigned short MEDIA_SORT_BY_FILEDATE = 2;
           const unsigned short MEDIA_SORT_BY_TYPE = 3;            const unsigned short MEDIA_SORT_BY_TYPE = 3;
           const unsigned short MEDIA_SORT_BY_TITLE = 20;            const unsigned short MEDIA_SORT_BY_TITLE = 20;
           const unsigned short MEDIA_SORT_BY_AUTHOR = 21;            const unsigned short MEDIA_SORT_BY_AUTHOR = 21;
           const unsigned short MEDIA_SORT_BY_ALBUM = 22;            const unsigned short MEDIA_SORT_BY_ALBUM = 22;
           const unsigned short MEDIA_SORT_BY_DATE = 23;            const unsigned short MEDIA_SORT_BY_DATE = 23;
           const unsigned short MEDIA_SORT_ASCENDING = 0;            const unsigned short MEDIA_SORT_ASCENDING = 0;
           const unsigned short MEDIA_SORT_DESCENDING = 1;            const unsigned short MEDIA_SORT_DESCENDING = 1;
           readonly attribute Map info;            readonly attribute Map info;
           unsigned long getNumberOfMediaItems ()            unsigned long getNumberOfMediaItems ()
               raises (SecurityError, GalleryError);                raises (SecurityError, GalleryError);
           PendingOperation open (in SuccessCallback onSuccess,             PendingOperation open (in SuccessCallback successCallback, 
                   in ErrorCallback onError)                     in ErrorCallback errorCallback) 
               raises (SecurityError, DeviceAPIError, GalleryError);                raises (SecurityError, DeviceAPIError, GalleryError);
           PendingOperation refresh (in SuccessCallback onSuccess,             PendingOperation refresh (in SuccessCallback successCallback, 
                   in DeviceAPIErrorCallback onError)                     in ErrorCallback errorCallback) 
               raises (SecurityError, DeviceAPIError, GalleryError);                raises (SecurityError, DeviceAPIError, GalleryError);
           void close ()            void close ()
               raises (DeviceAPIError, GalleryError);                raises (DeviceAPIError, GalleryError);
           PendingOperation changeView (in SuccessCallback onSuccess,             PendingOperation changeView (in SuccessCallback successCallback, 
                   in ErrorCallback onError,                     in ErrorCallback errorCallback, 
                   in Map viewOptions)                    in Map viewOptions)
               raises (SecurityError, DeviceAPIError, GalleryError);                raises (SecurityError, DeviceAPIError, GalleryError);
           MediaItemArray getMediaItems ()            MediaItemArray getMediaItems ()
               raises (SecurityError, DeviceAPIError, GalleryError);                raises (SecurityError, DeviceAPIError, GalleryError);
           MediaItem getMediaItemById (in unsigned long itemId)            MediaItem getMediaItemById (in unsigned long itemId)
               raises (SecurityError, DeviceAPIError, GalleryError);                raises (SecurityError, DeviceAPIError, GalleryError);
       };        };
       interface MediaItem {        interface MediaItem {
           readonly attribute unsigned long id;            readonly attribute unsigned long id;
           readonly attribute long type;            readonly attribute long type;
           readonly attribute DOMString mimeType;            readonly attribute DOMString mimeType;
           readonly attribute DOMString fileName;            readonly attribute DOMString fileName;
           readonly attribute Map metadata;            readonly attribute Map metadata;
       };        };
   };    };
   
   module ui {    module ui {
       typedef sequence<MenuItem> Menu;        typedef sequence<MenuItem> Menu;
       [Callback] interface WidgetActivateCallback {        [NoInterfaceObject, Callback] interface WidgetActivateCallback {
           void onActivate ();            void onActivate ();
       };        };
       [Callback] interface WidgetDeactivateCallback {        [NoInterfaceObject, Callback] interface WidgetDeactivateCallback {
           void onDeactivate ();            void onDeactivate ();
       };        };
       [Callback] interface WidgetKeyPressCallback {        [NoInterfaceObject, Callback] interface WidgetKeyPressCallback {
           void onKeyPress (in unsigned short keyCode);            void onKeyPress (in unsigned short keyCode);
       };        };
       [Callback] interface WidgetOrientationChangeCallback {        [NoInterfaceObject, Callback] interface WidgetOrientationChangeCallback {
           void onOrientationChange ();            void onOrientationChange ();
       };        };
       [Callback] interface WidgetMenuSelectCallback {        [NoInterfaceObject, Callback] interface WidgetMenuSelectCallback {
           void onSelect ();            void onSelect ();
       };        };
       interface UIManager {        interface UIManager {
           const unsigned short LEFT_SOFT_KEY = 0;            const unsigned short LEFT_SOFT_KEY = 0;
           const unsigned short RIGHT_SOFT_KEY = 1;            const unsigned short RIGHT_SOFT_KEY = 1;
           const unsigned short NAVIGATION_CURSOR = 0;            const unsigned short NAVIGATION_CURSOR = 0;
           const unsigned short NAVIGATION_TABBED = 1;            const unsigned short NAVIGATION_TABBED = 1;
           const unsigned short INFINITE_DURATION = 0;            const unsigned short INFINITE_DURATION = 0;
           const unsigned short ORIENTATION_0 = 0;            const unsigned short ORIENTATION_0 = 0;
           const unsigned short ORIENTATION_90 = 90;            const unsigned short ORIENTATION_90 = 90;
           const unsigned short ORIENTATION_180 = 180;            const unsigned short ORIENTATION_180 = 180;
           const unsigned short ORIENTATION_270 = 270;            const unsigned short ORIENTATION_270 = 270;
           attribute boolean isActive            attribute boolean isActive
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           attribute unsigned short navigationMode            attribute unsigned short navigationMode
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           readonly attribute boolean isRotationSupported;            readonly attribute boolean isRotationSupported;
           attribute unsigned short displayOrientation;            attribute unsigned short displayOrientation;
           attribute boolean softKeysVisible            attribute boolean softKeysVisible
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           attribute boolean statusBarVisible            attribute boolean statusBarVisible
               setraises (DeviceAPIError);                setraises (DeviceAPIError);
           MenuItem getSoftKey (in unsigned short id)            MenuItem getSoftKey (in unsigned short id)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void setOnActivate (in WidgetActivateCallback handler)            void setOnActivate (in WidgetActivateCallback handler)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void setOnDeactivate (in WidgetDeactivateCallback handler)            void setOnDeactivate (in WidgetDeactivateCallback handler)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void setOnKeyPress (in WidgetKeyPressCallback handler)            void setOnKeyPress (in WidgetKeyPressCallback handler)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void beep (in unsigned long duration,            void beep (in unsigned long duration,
                   in unsigned short frequency);                    in unsigned short frequency);
           void startVibrate (in unsigned long duration,            void startVibrate (in unsigned long duration,
                   in unsigned short intensity);                    in unsigned short intensity);
           void stopVibrate ();            void stopVibrate ();
           void setOnOrientationChange (in WidgetOrientationChangeCallback handler)            void setOnOrientationChange (in WidgetOrientationChangeCallback handler)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void lightOn (in unsigned long duration,            void lightOn (in unsigned long duration,
                   in unsigned short intensity,                    in unsigned short intensity,
                   in boolean fadeIn);                    in boolean fadeIn);
           void lightOff (in boolean fadeOut);            void lightOff (in boolean fadeOut);
       };        };
       interface MenuItem {        interface MenuItem {
           readonly attribute unsigned long id;            readonly attribute unsigned long id;
           attribute DOMString text;            attribute DOMString text;
           readonly attribute Menu menuItems;            readonly attribute Menu menuItems;
           void setOnSelect (in WidgetMenuSelectCallback handler)            void setOnSelect (in WidgetMenuSelectCallback handler)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           MenuItem getMenuItemById (in unsigned long id);            MenuItem getMenuItemById (in unsigned long id);
           MenuItem appendMenuItem (in unsigned long id,            MenuItem appendMenuItem (in unsigned long id,
                   in DOMString text,                    in DOMString text,
                   in WidgetMenuSelectCallback onSelect)                    in WidgetMenuSelectCallback onSelect)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void removeMenuItem (in unsigned long id)            void removeMenuItem (in unsigned long id)
               raises (DeviceAPIError);                raises (DeviceAPIError);
           void removeAllMenuItems ();            void removeAllMenuItems ();
       };        };
   };    };
   
   module pim {    module pim {
       module contact {        module contact {
           typedef sequence<AddressBook> AddressBookArray;            typedef sequence<AddressBook> AddressBookArray;
           typedef sequence<Contact> ContactsArray;            typedef sequence<Contact> ContactsArray;
           [Callback] interface ContactArraySuccessCallback {            [NoInterfaceObject, Callback] interface ContactArraySuccessCallback {
               void onSuccess (in ContactsArray contacts);                void onSuccess (in ContactsArray contacts);
           };            };
           interface ContactManager {            interface ContactManager {
               AddressBookArray getAddressBooks ()                AddressBookArray getAddressBooks ()
                   raises (SecurityError);                    raises (SecurityError);
           };            };
           interface AddressBook {            interface AddressBook {
               Contact createContact ([Optional] in Map options)                Contact createContact ([Optional] in Map options)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation addContact (in SucessCallback successCallback,                PendingOperation addContact (in SuccessCallback successCallback,
                       in ErrorCallback errorCallback,                        in ErrorCallback errorCallback,
                       in Contact contact)                        in Contact contact)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation updateContact (in SucessCallback successCallback,                PendingOperation updateContact (in SuccessCallback successCallback,
                       in ErrorCallback errorCallback,                        in ErrorCallback errorCallback,
                       in Contact contact)                        in Contact contact)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation deleteContact (in SucessCallback successCallback,                PendingOperation deleteContact (in SuccessCallback successCallback,
                       in ErrorCallback errorCallback,                        in ErrorCallback errorCallback,
                       in Contact contact)                        in Contact contact)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation deleteAllContacts (in SucessCallback successCallback,                PendingOperation deleteAllContacts (in SuccessCallback successCallback,
                       in ErrorCallback errorCallback)                        in ErrorCallback errorCallback)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation findContacts (in ContactArraySuccessCallback successCallback,                PendingOperation findContacts (in ContactArraySuccessCallback successCallback,
                       in ErrorCallback errorCallback,                        in ErrorCallback errorCallback,
                       in Map filter)                        in Map filter)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
           };            };
           interface Contact {            interface Contact {
               attribute DOMString id;                attribute DOMString id;
               attribute DOMString name;                attribute DOMString name;
               attribute DOMString nickname;                attribute DOMString nickname;
               attribute Map address;                attribute Map address;
               attribute File photo;                attribute File photo;
               attribute DOMString telephone;                attribute DOMString telephone;
               attribute DOMString email;                attribute DOMString email;
               Object getProperty (in DOMString propertyName)                Object getProperty (in DOMString propertyName)
                   raises (DeviceAPIError);                    raises (DeviceAPIError);
               StringArray getSupportedPropertyKeys ()                 StringArray getSupportedPropertyKeys (); 
                   raises (DeviceAPIError);    
               void setProperty (in DOMString propertyName,                void setProperty (in DOMString propertyName,
                       in Object propertyValue)                        in Object propertyValue)
                   raises (DeviceAPIError);                    raises (DeviceAPIError);
           };            };
       };        };
   
       module task {        module task {
           typedef sequence<TaskList> TaskListArray;            typedef sequence<TaskList> TaskListArray;
             typedef sequence<Task> TaskArray;  
             [NoInterfaceObject, Callback] interface TaskArraySuccessCallback {  
                 void onSuccess (in TaskArray tasks);  
             };  
           interface TaskManager {            interface TaskManager {
               const unsigned short HIGH_PRIORITY = 0;                const unsigned short HIGH_PRIORITY = 0;
               const unsigned short MEDIUM_PRIORITY = 1;                const unsigned short MEDIUM_PRIORITY = 1;
               const unsigned short LOW_PRIORITY = 2;                const unsigned short LOW_PRIORITY = 2;
               const unsigned short STATUS_DONE = 0;                const unsigned short STATUS_DONE = 0;
               const unsigned short STATUS_PENDING = 1;                const unsigned short STATUS_PENDING = 1;
               const unsigned short STATUS_ONGOING = 2;                const unsigned short STATUS_ONGOING = 2;
               TaskListArray getTaskLists ()                TaskListArray getTaskLists ()
                   raises (SecurityError);                    raises (SecurityError);
           };            };
           interface TaskList {            interface TaskList {
               Task createTask ([Optional] in Map options)                Task createTask ([Optional] in Map options)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               void addTask (in Task task)                void addTask (in Task task)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               void updateTask (in Task task)                void updateTask (in Task task)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               void deleteTask (in Task task)                void deleteTask (in Task task)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation clearTasks (in SucessCallback successCallback,                PendingOperation clearTasks (in SuccessCallback successCallback,
                       in ErrorCallback errorCallback)                        in ErrorCallback errorCallback)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation findTasks (in SucessCallback successCallback,                PendingOperation findTasks (in TaskArraySuccessCallback successCallback,
                       in ErrorCallback errorCallback,                        in ErrorCallback errorCallback,
                       [Optional] in Map filter)                        [Optional] in Map filter)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
           };            };
           interface Task {            interface Task {
               attribute DOMString id;                attribute DOMString id;
               attribute unsigned short priority;                attribute unsigned short priority;
               attribute DOMString note;                attribute DOMString note;
               attribute DOMString summary;                attribute DOMString summary;
               attribute Date due;                attribute Date due;
               attribute unsigned short status;                attribute unsigned short status;
               Object getProperty (in DOMString propertyName)                Object getProperty (in DOMString propertyName)
                   raises (DeviceAPIError);                    raises (DeviceAPIError);
               StringArray getSupportedPropertyKeys ()                 StringArray getSupportedPropertyKeys (); 
                   raises (DeviceAPIError);    
               void setProperty (in DOMString propertyName,                void setProperty (in DOMString propertyName,
                       in Object propertyValue)                        in Object propertyValue)
                   raises (DeviceAPIError);                    raises (DeviceAPIError);
           };            };
       };        };
   
       module calendar {        module calendar {
           typedef sequence<Event> EventsArray;            typedef sequence<Event> EventsArray;
           typedef sequence<Calendar> CalendarsArray;             typedef sequence<Calendar> CalendarArray; 
           [Callback] interface EventsArraySuccessCallback {            [NoInterfaceObject, Callback] interface EventsArraySuccessCallback {
               void onSuccess (in EventsArray obj);                void onSuccess (in EventsArray obj);
           };            };
           interface CalendarManager {            interface CalendarManager {
               const short NO_RECURRENCE = 0;                const unsigned short NO_RECURRENCE = 0;
               const short DAILY_RECURRENCE = 1;                const unsigned short DAILY_RECURRENCE = 1;
               const short WEEKLY_RECURRENCE = 2;                const unsigned short WEEKLY_RECURRENCE = 2;
               const short MONTHLY_RECURRENCE = 3;                const unsigned short MONTHLY_RECURRENCE = 3;
               const short YEARLY_RECURRENCE = 4;                const unsigned short YEARLY_RECURRENCE = 4;
               CalendarArray getCalendars ()                CalendarArray getCalendars ()
                   raises (SecurityError, DeviceAPIError);                     raises (SecurityError); 
           };            };
           interface Calendar {            interface Calendar {
               Event createEvent ([Optional] in Map options)                Event createEvent ([Optional] in Map options)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               void addEvent (in Event evt)                 void addEvent (in Event event) 
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               void updateEvent (in Event evt)                 void updateEvent (in Event event) 
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               void deleteEvent (in Event evt)                 void deleteEvent (in Event event) 
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation clearEvents (in BONDISucessCallback successCallback,                PendingOperation clearEvents (in SuccessCallback successCallback,
                       in ErrorCallback errorCallback)                        in ErrorCallback errorCallback)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
               PendingOperation findEvents (in BONDISucessCallback successCallback,                PendingOperation findEvents (in SuccessCallback successCallback,
                       in ErrorCallback errorCallback,                        in ErrorCallback errorCallback,
                       [Optional] in Map filter)                        [Optional] in Map filter)
                   raises (SecurityError, DeviceAPIError);                    raises (SecurityError, DeviceAPIError);
           };            };
           interface Event {            interface Event {
               attribute DOMString id;                attribute DOMString id;
               attribute DOMString description;                attribute DOMString description;
               attribute DOMString summary;                attribute DOMString summary;
               attribute Date startTime;                attribute Date startTime;
               attribute Date endTime;                attribute Date endTime;
               attribute DOMString location;                attribute DOMString location;
               attribute unsigned short recurrence;                attribute unsigned short recurrence;
               Object getProperty (in DOMString propertyName)                Object getProperty (in DOMString propertyName)
                   raises (DeviceAPIError);                    raises (DeviceAPIError);
               StringArray getSupportedPropertyKeys ();                StringArray getSupportedPropertyKeys ();
               void setProperty (in DOMString propertyName,                void setProperty (in DOMString propertyName,
                       in Object propertyValue)                        in Object propertyValue)
                   raises (DeviceAPIError);                    raises (DeviceAPIError);
           };            };
       };        };
   
   };    };
}; };