diff -r 000000000000 -r 6474c204b198 dom/telephony/nsITelephonyProvider.idl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/telephony/nsITelephonyProvider.idl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,234 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +[scriptable, uuid(c25d3993-6481-4e12-acee-55e32f6e1454)] +interface nsITelephonyListener : nsISupports +{ + /** + * Notified when a telephony call changes state. + * + * @param clientId + Indicate the RIL client, 0 ~ (number of client - 1). + * @param callIndex + * Call identifier assigned by the RIL. + * @param callState + * One of the nsITelephonyProvider::CALL_STATE_* values. + * @param number + * Number of the other party. + * @param isActive + * Indicates whether this call is the currently active one. + * @param isOutgoing + * Indicates whether this call is outgoing or incoming. + * @param isEmergency + * Indicates whether this call is an emergency call. + * @param isConference + * Indicates whether this call is a conference call. + * @param isSwitchable + * Indicates whether this call can be switched between states of + * nsITelephonyProvider::CALL_STATE_CONNECTED and + * nsITelephonyProvider::CALL_STATE_HELD. + * @param isMergeable + * Indicates whether this call be be added into a conference. + */ + void callStateChanged(in unsigned long clientId, + in unsigned long callIndex, + in unsigned short callState, + in AString number, + in boolean isActive, + in boolean isOutgoing, + in boolean isEmergency, + in boolean isConference, + in boolean isSwitchable, + in boolean isMergeable); + + /** + * Called when participants of a conference call have been updated, and the + * conference call state changes. + * + * @param callState + * Possible values are: nsITelephonyProvider::CALL_STATE_UNKNOWN, + * nsITelephonyProvider::CALL_STATE_HELD, + * nsITelephonyProvider::CALL_STATE_CONNECTED. + */ + void conferenceCallStateChanged(in unsigned short callState); + + /** + * Called when enumeration asked by nsITelephonyProvider::enumerateCalls + * is completed. + */ + void enumerateCallStateComplete(); + + /** + * Called when nsITelephonyProvider is asked to enumerate the current + * telephony call state (nsITelephonyProvider::enumerateCalls). This is + * called once per call that is currently managed by the RIL. + * + * @param clientId + Indicate the RIL client, 0 ~ (number of client - 1). + * @param callIndex + * Call identifier assigned by the RIL. + * @param callState + * One of the nsITelephonyProvider::CALL_STATE_* values. + * @param number + * Number of the other party. + * @param isActive + * Indicates whether this call is the active one. + * @param isOutgoing + * Indicates whether this call is outgoing or incoming. + * @param isConference + * Indicates whether this call is a conference call. + * @param isSwitchable + * Indicates whether this call can be switched between states of + * nsITelephonyProvider::CALL_STATE_CONNECTED and + * nsITelephonyProvider::CALL_STATE_HELD. + * @param isMergeable + * Indicates whether this call be be added into a conference. + */ + void enumerateCallState(in unsigned long clientId, + in unsigned long callIndex, + in unsigned short callState, + in AString number, + in boolean isActive, + in boolean isOutgoing, + in boolean isEmergency, + in boolean isConference, + in boolean isSwitchable, + in boolean isMergeable); + + /** + * Notify when RIL receives supplementary service notification. + * + * @param clientId + Indicate the RIL client, 0 ~ (number of client - 1). + * @param callIndex + * Call identifier assigned by the RIL. -1 if not specified + * @param notification + * One of the nsITelephonyProvider::NOTIFICATION_* values. + */ + void supplementaryServiceNotification(in unsigned long clientId, + in long callIndex, + in unsigned short notification); + + /** + * Called when RIL error occurs. + * + * @param clientId + Indicate the RIL client, 0 ~ (number of client - 1). + * @param callIndex + * Call identifier assigned by the RIL. -1 if no connection + * @param error + * Error from RIL. + */ + void notifyError(in unsigned long clientId, + in long callIndex, + in AString error); + + /** + * Called when a waiting call comes in CDMA networks. + * + * @param clientId + Indicate the RIL client, 0 ~ (number of client - 1). + * @param number + * Number of the other party. + */ + void notifyCdmaCallWaiting(in unsigned long clientId, in AString number); + + /** + * Called when RIL error occurs to creating or separating a conference call. + * + * @param name + * Error name. Possible values are addError and removeError. + * @param message + * Detailed error message from RIL. + */ + void notifyConferenceError(in AString name, + in AString message); +}; + +[scriptable, uuid(c095aa82-aacb-4e53-a787-56a89c3f638e)] +interface nsITelephonyCallback : nsISupports +{ + /** + * Called when a dial request fails. + * @param error + * Error from RIL. + */ + void notifyDialError(in AString error); + + /** + * Called when a dial request succeeds. + */ + void notifyDialSuccess(); +}; + +%{C++ +#define TELEPHONY_PROVIDER_CID \ + { 0x9cf8aa52, 0x7c1c, 0x4cde, { 0x97, 0x4e, 0xed, 0x2a, 0xa0, 0xe7, 0x35, 0xfa } } +#define TELEPHONY_PROVIDER_CONTRACTID \ + "@mozilla.org/telephony/telephonyprovider;1" +%} + +/** + * XPCOM component (in the content process) that provides the telephony + * information. + */ +[scriptable, uuid(b16ca98f-994f-4ae1-8c2d-e7b18e08d1f3)] +interface nsITelephonyProvider : nsISupports +{ + const unsigned short CALL_STATE_UNKNOWN = 0; + const unsigned short CALL_STATE_DIALING = 1; + const unsigned short CALL_STATE_ALERTING = 2; + const unsigned short CALL_STATE_CONNECTING = 3; + const unsigned short CALL_STATE_CONNECTED = 4; + const unsigned short CALL_STATE_HOLDING = 5; + const unsigned short CALL_STATE_HELD = 6; + const unsigned short CALL_STATE_RESUMING = 7; + const unsigned short CALL_STATE_DISCONNECTING = 8; + const unsigned short CALL_STATE_DISCONNECTED = 9; + const unsigned short CALL_STATE_INCOMING = 10; + + const unsigned short NOTIFICATION_REMOTE_HELD = 0; + const unsigned short NOTIFICATION_REMOTE_RESUMED = 1; + + readonly attribute unsigned long defaultServiceId; + + /** + * Called when a content process registers receiving unsolicited messages from + * RadioInterfaceLayer in the chrome process. Only a content process that has + * the 'telephony' permission is allowed to register. + */ + void registerListener(in nsITelephonyListener listener); + void unregisterListener(in nsITelephonyListener listener); + + /** + * Will continue calling listener.enumerateCallState until the listener + * returns false. + */ + void enumerateCalls(in nsITelephonyListener listener); + + /** + * Functionality for making and managing phone calls. + */ + void dial(in unsigned long clientId, in DOMString number, + in boolean isEmergency, in nsITelephonyCallback callback); + void hangUp(in unsigned long clientId, in unsigned long callIndex); + + void startTone(in unsigned long clientId, in DOMString dtmfChar); + void stopTone(in unsigned long clientId); + + void answerCall(in unsigned long clientId, in unsigned long callIndex); + void rejectCall(in unsigned long clientId, in unsigned long callIndex); + void holdCall(in unsigned long clientId, in unsigned long callIndex); + void resumeCall(in unsigned long clientId, in unsigned long callIndex); + + void conferenceCall(in unsigned long clientId); + void separateCall(in unsigned long clientId, in unsigned long callIndex); + void holdConference(in unsigned long clientId); + void resumeConference(in unsigned long clientId); + + attribute bool microphoneMuted; + attribute bool speakerEnabled; +};