gecko/dom/telephony/nsITelephonyProvider.idl

203 lines
7.2 KiB
Plaintext

/* 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(6385282b-4413-4cd6-b60a-de43e0b5c307)]
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.
*/
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);
/**
* 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.
*/
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);
/**
* 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);
};
%{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(4ff3ecb7-b024-4752-9dd6-c3623c6e6b8a)]
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);
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;
};