This file is indexed.

/usr/share/idl/thunderbird/nsIAudioChannelAgent.idl is in thunderbird-dev 1:38.6.0+build1-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/* 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"

interface nsIDOMWindow;

[uuid(194b55d9-39c0-45c6-b8ef-b8049f978ea5)]
interface nsIAudioChannelAgentCallback : nsISupports
{
  /**
   * Notified when the playable status of channel is changed.
   *
   * @param canPlay
   *        Callback from agent to notify component of the playable status
   *        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.
   */
  void canPlayChanged(in long canPlay);

  /**
   * Notified when the window volume/mute is changed
   */
  void windowVolumeChanged();
};

/**
 * This interface provides an agent for gecko components to participate
 * in the audio channel service. Gecko components are responsible for
 *   1. Indicating what channel type they are using (via the init() member
 *      function).
 *   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
 *      this channel.
 *
 * The agent will invoke a callback to notify Gecko components of
 *   1. Changes to the playable status of this channel.
 */

[uuid(2b0222a5-8f7b-49d2-9ab8-cd01b744b23e)]
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;

  const long AUDIO_AGENT_STATE_NORMAL               = 0;
  const long AUDIO_AGENT_STATE_MUTED                = 1;
  const long AUDIO_AGENT_STATE_FADED                = 2;

  /**
   * 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.
   *
   * @param window
   *    The window
   * @param channelType
   *    Audio Channel Type listed as above
   * @param callback
   *    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.
   */
  void init(in nsIDOMWindow window, in long channelType,
            in nsIAudioChannelAgentCallback callback);

  /**
   * 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.
   */
  void initWithWeakCallback(in nsIDOMWindow window, in long channelType,
                            in nsIAudioChannelAgentCallback callback);

  /**
   * This method is just like init(), and specify the channel is associated
   * with video.
   *
   * @param weak
   *    true if weak reference should be hold.
   */
  void initWithVideo(in nsIDOMWindow window, in long channelType,
                     in nsIAudioChannelAgentCallback callback, in boolean weak);

  /**
   * 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
   *    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.
   */
  long startPlaying();

  /**
   * 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);

  /**
   * Retrieve the volume from the window.
   */
  readonly attribute float windowVolume;
};