1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* 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/. */
- #ifndef mozilla_dom_audio_channel_agent_h__
- #define mozilla_dom_audio_channel_agent_h__
- #include "nsIAudioChannelAgent.h"
- #include "nsCycleCollectionParticipant.h"
- #include "nsCOMPtr.h"
- #include "nsWeakPtr.h"
- #define NS_AUDIOCHANNELAGENT_CONTRACTID "@mozilla.org/audiochannelagent;1"
- // f27688e2-3dd7-11e2-904e-10bf48d64bd4
- #define NS_AUDIOCHANNELAGENT_CID {0xf27688e2, 0x3dd7, 0x11e2, \
- {0x90, 0x4e, 0x10, 0xbf, 0x48, 0xd6, 0x4b, 0xd4}}
- class nsPIDOMWindowInner;
- class nsPIDOMWindowOuter;
- namespace mozilla {
- namespace dom {
- class AudioPlaybackConfig;
- /* Header file */
- class AudioChannelAgent : public nsIAudioChannelAgent
- {
- public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_NSIAUDIOCHANNELAGENT
- NS_DECL_CYCLE_COLLECTION_CLASS(AudioChannelAgent)
- AudioChannelAgent();
- void WindowVolumeChanged();
- void WindowSuspendChanged(nsSuspendedTypes aSuspend);
- void WindowAudioCaptureChanged(uint64_t aInnerWindowID, bool aCapture);
- nsPIDOMWindowOuter* Window() const
- {
- return mWindow;
- }
- uint64_t WindowID() const;
- uint64_t InnerWindowID() const;
- bool IsPlayingStarted() const;
- bool ShouldBlockMedia() const;
- private:
- virtual ~AudioChannelAgent();
- AudioPlaybackConfig GetMediaConfig();
- bool IsDisposableSuspend(nsSuspendedTypes aSuspend) const;
- // Returns mCallback if that's non-null, or otherwise tries to get an
- // nsIAudioChannelAgentCallback out of mWeakCallback.
- already_AddRefed<nsIAudioChannelAgentCallback> GetCallback();
- nsresult InitInternal(nsPIDOMWindowInner* aWindow, int32_t aAudioAgentType,
- nsIAudioChannelAgentCallback* aCallback,
- bool aUseWeakRef);
- void Shutdown();
- nsresult FindCorrectWindow(nsPIDOMWindowInner* aWindow);
- nsCOMPtr<nsPIDOMWindowOuter> mWindow;
- nsCOMPtr<nsIAudioChannelAgentCallback> mCallback;
- nsWeakPtr mWeakCallback;
- int32_t mAudioChannelType;
- uint64_t mInnerWindowID;
- bool mIsRegToService;
- };
- } // namespace dom
- } // namespace mozilla
- #endif
|