2012-12-06 11:57:00 +04:00
|
|
|
/* 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"
|
|
|
|
|
2014-03-11 14:46:04 +04:00
|
|
|
interface nsIDOMWindow;
|
|
|
|
|
2014-04-24 20:06:12 +04:00
|
|
|
[uuid(194b55d9-39c0-45c6-b8ef-b8049f978ea5)]
|
2012-12-06 11:57:00 +04:00
|
|
|
interface nsIAudioChannelAgentCallback : nsISupports
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Notified when the playable status of channel is changed.
|
|
|
|
*
|
|
|
|
* @param canPlay
|
|
|
|
* Callback from agent to notify component of the playable status
|
2013-09-02 13:45:44 +04:00
|
|
|
* of the channel. If canPlay is muted state, component SHOULD stop
|
|
|
|
* playing media associated with this channel as soon as possible. if
|
|
|
|
* it is faded state then the volume of media should be reduced.
|
2012-12-06 11:57:00 +04:00
|
|
|
*/
|
2013-09-02 13:45:44 +04:00
|
|
|
void canPlayChanged(in long canPlay);
|
2014-03-11 14:46:55 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Notified when the window volume/mute is changed
|
|
|
|
*/
|
|
|
|
void windowVolumeChanged();
|
2012-12-06 11:57:00 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This interface provides an agent for gecko components to participate
|
|
|
|
* in the audio channel service. Gecko components are responsible for
|
2014-03-11 14:46:04 +04:00
|
|
|
* 1. Indicating what channel type they are using (via the init() member
|
|
|
|
* function).
|
2012-12-06 11:57:00 +04:00
|
|
|
* 2. Before playing, checking the playable status of the channel.
|
|
|
|
* 3. Notifying the agent when they start/stop using this channel.
|
|
|
|
* 4. Notifying the agent of changes to the visibility of the component using
|
2014-03-11 14:46:04 +04:00
|
|
|
* this channel.
|
2012-12-06 11:57:00 +04:00
|
|
|
*
|
|
|
|
* The agent will invoke a callback to notify Gecko components of
|
|
|
|
* 1. Changes to the playable status of this channel.
|
|
|
|
*/
|
|
|
|
|
2014-04-24 20:06:12 +04:00
|
|
|
[uuid(2b0222a5-8f7b-49d2-9ab8-cd01b744b23e)]
|
2012-12-06 11:57:00 +04:00
|
|
|
interface nsIAudioChannelAgent : nsISupports
|
|
|
|
{
|
|
|
|
const long AUDIO_AGENT_CHANNEL_NORMAL = 0;
|
|
|
|
const long AUDIO_AGENT_CHANNEL_CONTENT = 1;
|
|
|
|
const long AUDIO_AGENT_CHANNEL_NOTIFICATION = 2;
|
|
|
|
const long AUDIO_AGENT_CHANNEL_ALARM = 3;
|
|
|
|
const long AUDIO_AGENT_CHANNEL_TELEPHONY = 4;
|
|
|
|
const long AUDIO_AGENT_CHANNEL_RINGER = 5;
|
|
|
|
const long AUDIO_AGENT_CHANNEL_PUBLICNOTIFICATION = 6;
|
|
|
|
|
|
|
|
const long AUDIO_AGENT_CHANNEL_ERROR = 1000;
|
|
|
|
|
2013-09-02 13:45:44 +04:00
|
|
|
const long AUDIO_AGENT_STATE_NORMAL = 0;
|
|
|
|
const long AUDIO_AGENT_STATE_MUTED = 1;
|
|
|
|
const long AUDIO_AGENT_STATE_FADED = 2;
|
|
|
|
|
2012-12-06 11:57:00 +04:00
|
|
|
/**
|
|
|
|
* Before init() is called, this returns AUDIO_AGENT_CHANNEL_ERROR.
|
|
|
|
*/
|
|
|
|
readonly attribute long audioChannelType;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Initialize the agent with a channel type.
|
|
|
|
* Note: This function should only be called once.
|
|
|
|
*
|
2014-03-11 14:46:04 +04:00
|
|
|
* @param window
|
|
|
|
* The window
|
2012-12-06 11:57:00 +04:00
|
|
|
* @param channelType
|
|
|
|
* Audio Channel Type listed as above
|
|
|
|
* @param callback
|
2014-03-11 14:46:04 +04:00
|
|
|
* 1. Once the playable status changes, agent uses this callback function
|
|
|
|
* to notify Gecko component.
|
|
|
|
* 2. The callback is allowed to be null. Ex: telephony doesn't need to
|
|
|
|
* listen change of the playable status.
|
|
|
|
* 3. The AudioChannelAgent keeps a strong reference to the callback
|
|
|
|
* object.
|
2012-12-06 11:57:00 +04:00
|
|
|
*/
|
2014-03-11 14:46:04 +04:00
|
|
|
void init(in nsIDOMWindow window, in long channelType,
|
|
|
|
in nsIAudioChannelAgentCallback callback);
|
2012-12-06 11:57:00 +04:00
|
|
|
|
2013-04-04 00:35:05 +04:00
|
|
|
/**
|
|
|
|
* This method is just like init(), except the audio channel agent keeps a
|
|
|
|
* weak reference to the callback object.
|
|
|
|
*
|
|
|
|
* In order for this to work, |callback| must implement
|
|
|
|
* nsISupportsWeakReference.
|
|
|
|
*/
|
2014-03-11 14:46:04 +04:00
|
|
|
void initWithWeakCallback(in nsIDOMWindow window, in long channelType,
|
|
|
|
in nsIAudioChannelAgentCallback callback);
|
2013-04-04 00:35:05 +04:00
|
|
|
|
2013-09-18 07:46:22 +04:00
|
|
|
/**
|
2014-03-11 14:46:04 +04:00
|
|
|
* This method is just like init(), and specify the channel is associated
|
|
|
|
* with video.
|
2013-09-18 07:46:22 +04:00
|
|
|
*
|
|
|
|
* @param weak
|
|
|
|
* true if weak reference should be hold.
|
|
|
|
*/
|
2014-03-11 14:46:04 +04:00
|
|
|
void initWithVideo(in nsIDOMWindow window, in long channelType,
|
|
|
|
in nsIAudioChannelAgentCallback callback, in boolean weak);
|
2013-09-18 07:46:22 +04:00
|
|
|
|
2012-12-06 11:57:00 +04:00
|
|
|
/**
|
|
|
|
* Notify the agent that we want to start playing.
|
|
|
|
* Note: Gecko component SHOULD call this function first then start to
|
|
|
|
* play audio stream only when return value is true.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return
|
2013-09-02 13:45:44 +04:00
|
|
|
* normal state: the agent has registered with audio channel service and
|
|
|
|
* the component should start playback.
|
|
|
|
* muted state: the agent has registered with audio channel service but
|
|
|
|
* the component should not start playback.
|
|
|
|
* faded state: the agent has registered with audio channel service the
|
|
|
|
* component should start playback as well as reducing the volume.
|
2012-12-06 11:57:00 +04:00
|
|
|
*/
|
2013-09-02 13:45:44 +04:00
|
|
|
long startPlaying();
|
2012-12-06 11:57:00 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Notify the agent we no longer want to play.
|
|
|
|
*
|
|
|
|
* Note : even if startPlaying() returned false, the agent would still be
|
|
|
|
* registered with the audio channel service and receive callbacks for status changes.
|
|
|
|
* So stopPlaying must still eventually be called to unregister the agent with the
|
|
|
|
* channel service.
|
|
|
|
*/
|
|
|
|
void stopPlaying();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Notify the agent of the visibility state of the window using this agent.
|
|
|
|
* @param visible
|
|
|
|
* True if the window associated with the agent is visible.
|
|
|
|
*/
|
|
|
|
void setVisibilityState(in boolean visible);
|
2014-03-11 14:46:55 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieve the volume from the window.
|
|
|
|
*/
|
|
|
|
readonly attribute float windowVolume;
|
2012-12-06 11:57:00 +04:00
|
|
|
};
|
|
|
|
|