Diff
Modified: trunk/Source/WebCore/ChangeLog (166441 => 166442)
--- trunk/Source/WebCore/ChangeLog 2014-03-29 01:15:44 UTC (rev 166441)
+++ trunk/Source/WebCore/ChangeLog 2014-03-29 01:15:47 UTC (rev 166442)
@@ -1,3 +1,32 @@
+2014-03-28 Stephanie Lewis <sle...@apple.com>
+
+ Notification handler for telling if audio hardware is active.
+ https://bugs.webkit.org/show_bug.cgi?id=130743
+
+ Reviewed by Jer Noble.
+
+ Not web-exposed so no easy way to test.
+
+ Listen to CoreAudio to see if audio hardware is active in the current process.
+
+ * WebCore.exp.in:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/audio/AudioHardwareListener.cpp: Added.
+ (WebCore::AudioHardwareListener::create):
+ (WebCore::AudioHardwareListener::AudioHardwareListener):
+ * platform/audio/AudioHardwareListener.h: Added.
+ (WebCore::AudioHardwareListener::Client::~Client):
+ (WebCore::AudioHardwareListener::~AudioHardwareListener):
+ (WebCore::AudioHardwareListener::isHardwareActive):
+ * platform/audio/mac/AudioHardwareListenerMac.cpp: Added.
+ (WebCore::isAudioHardwareProcessRunning):
+ (WebCore::AudioHardwareListener::create):
+ (WebCore::AudioHardwareListenerMac::create):
+ (WebCore::AudioHardwareListenerMac::AudioHardwareListenerMac):
+ (WebCore::AudioHardwareListenerMac::~AudioHardwareListenerMac):
+ (WebCore::AudioHardwareListenerMac::setHardwareActive):
+ * platform/audio/mac/AudioHardwareListenerMac.h: Added.
+
2014-03-28 James Craig <jcr...@apple.com>
Web Inspector: AXI: expose what elements get generic "clickable" status
Modified: trunk/Source/WebCore/WebCore.exp.in (166441 => 166442)
--- trunk/Source/WebCore/WebCore.exp.in 2014-03-29 01:15:44 UTC (rev 166441)
+++ trunk/Source/WebCore/WebCore.exp.in 2014-03-29 01:15:47 UTC (rev 166442)
@@ -849,6 +849,7 @@
__ZN7WebCore20previousLinePositionERKNS_15VisiblePositionEiNS_12EditableTypeE
__ZN7WebCore20protocolIsJavaScriptERKN3WTF6StringE
__ZN7WebCore20toUInt32EnforceRangeEPN3JSC9ExecStateENS0_7JSValueE
+__ZN7WebCore21AudioHardwareListener6createERNS0_6ClientE
__ZN7WebCore21BackForwardController11itemAtIndexEi
__ZN7WebCore21BackForwardController6goBackEv
__ZN7WebCore21BackForwardController9goForwardEv
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (166441 => 166442)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2014-03-29 01:15:44 UTC (rev 166441)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2014-03-29 01:15:47 UTC (rev 166442)
@@ -5505,6 +5505,10 @@
CD1E7347167BC78E009A885D /* TextTrackRepresentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD1E7346167BC78E009A885D /* TextTrackRepresentation.cpp */; };
CD27F6E51457685A0078207D /* JSMediaController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD27F6E2145767580078207D /* JSMediaController.cpp */; };
CD27F6E7145770D30078207D /* MediaController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD27F6E6145770D30078207D /* MediaController.cpp */; };
+ CD2F4A2318D89F700063746D /* AudioHardwareListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD2F4A2118D89F700063746D /* AudioHardwareListener.cpp */; };
+ CD2F4A2418D89F700063746D /* AudioHardwareListener.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2F4A2218D89F700063746D /* AudioHardwareListener.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ CD2F4A2718D8A3490063746D /* AudioHardwareListenerMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD2F4A2518D8A3490063746D /* AudioHardwareListenerMac.cpp */; };
+ CD2F4A2818D8A3490063746D /* AudioHardwareListenerMac.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2F4A2618D8A3490063746D /* AudioHardwareListenerMac.h */; };
CD336F6117F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD336F5F17F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.mm */; };
CD336F6217F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = CD336F6017F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.h */; };
CD336F6417FA0A4D00DDDCD0 /* VideoTrackPrivateAVF.h in Headers */ = {isa = PBXBuildFile; fileRef = CD336F6317FA0A4D00DDDCD0 /* VideoTrackPrivateAVF.h */; };
@@ -12806,6 +12810,10 @@
CD27F6E3145767580078207D /* JSMediaController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaController.h; sourceTree = "<group>"; };
CD27F6E4145767870078207D /* MediaController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaController.h; sourceTree = "<group>"; };
CD27F6E6145770D30078207D /* MediaController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaController.cpp; sourceTree = "<group>"; };
+ CD2F4A2118D89F700063746D /* AudioHardwareListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioHardwareListener.cpp; sourceTree = "<group>"; };
+ CD2F4A2218D89F700063746D /* AudioHardwareListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioHardwareListener.h; sourceTree = "<group>"; };
+ CD2F4A2518D8A3490063746D /* AudioHardwareListenerMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioHardwareListenerMac.cpp; sourceTree = "<group>"; };
+ CD2F4A2618D8A3490063746D /* AudioHardwareListenerMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioHardwareListenerMac.h; sourceTree = "<group>"; };
CD32A189184EB46A0029B1BB /* mediaControlsiOS.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = mediaControlsiOS.js; sourceTree = "<group>"; };
CD336F5F17F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AVTrackPrivateAVFObjCImpl.mm; sourceTree = "<group>"; };
CD336F6017F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVTrackPrivateAVFObjCImpl.h; sourceTree = "<group>"; };
@@ -22731,6 +22739,8 @@
FD31607912B026F700C1A359 /* VectorMath.h */,
FD537350137B651800008DCE /* ZeroPole.cpp */,
FD537351137B651800008DCE /* ZeroPole.h */,
+ CD2F4A2118D89F700063746D /* AudioHardwareListener.cpp */,
+ CD2F4A2218D89F700063746D /* AudioHardwareListener.h */,
);
path = audio;
sourceTree = "<group>";
@@ -22746,6 +22756,8 @@
CD54DE4917469C6D005E5B36 /* AudioSessionMac.cpp */,
FD3160BA12B0272A00C1A359 /* FFTFrameMac.cpp */,
CD54DE4517468B6F005E5B36 /* MediaSessionManagerMac.cpp */,
+ CD2F4A2518D8A3490063746D /* AudioHardwareListenerMac.cpp */,
+ CD2F4A2618D8A3490063746D /* AudioHardwareListenerMac.h */,
);
path = mac;
sourceTree = "<group>";
@@ -22854,6 +22866,7 @@
buildActionMask = 2147483647;
files = (
FE115FAB167988CD00249134 /* AbstractDatabaseServer.h in Headers */,
+ CD2F4A2418D89F700063746D /* AudioHardwareListener.h in Headers */,
FE4AADEE16D2C37400026FFC /* AbstractSQLStatement.h in Headers */,
FE4AADEF16D2C37400026FFC /* AbstractSQLStatementBackend.h in Headers */,
41E1B1D10FF5986900576B3B /* AbstractWorker.h in Headers */,
@@ -25922,6 +25935,7 @@
076970871463AD8700F502CF /* TextTrackList.h in Headers */,
B1AD4E7413A12A4600846B27 /* TextTrackLoader.h in Headers */,
CD8B5A49180E138B008B8E65 /* TextTrackMediaSource.h in Headers */,
+ CD2F4A2818D8A3490063746D /* AudioHardwareListenerMac.h in Headers */,
498770F11242C535002226BA /* Texture.h in Headers */,
BCE658FF0EA9248A007E4533 /* Theme.h in Headers */,
44C9919F0F3D210E00586670 /* ThemeIOS.h in Headers */,
@@ -26911,6 +26925,7 @@
4162A450101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp in Sources */,
41A3D58E101C152D00316D07 /* DedicatedWorkerThread.cpp in Sources */,
FD06DFA5134A4DEF006F5D7D /* DefaultAudioDestinationNode.cpp in Sources */,
+ CD2F4A2718D8A3490063746D /* AudioHardwareListenerMac.cpp in Sources */,
4167EBF5102962BA003D252A /* DefaultSharedWorkerRepository.cpp in Sources */,
1AF4CEE918BC350100BC2D34 /* DefaultVisitedLinkStore.cpp in Sources */,
FD31602B12B0267600C1A359 /* DelayDSPKernel.cpp in Sources */,
@@ -27634,6 +27649,7 @@
A584FE381864DAC100843B10 /* JSCommandLineAPIHostCustom.cpp in Sources */,
93F9B6E00BA0FB7200854064 /* JSComment.cpp in Sources */,
79AC9218109945C80021266E /* JSCompositionEvent.cpp in Sources */,
+ CD2F4A2318D89F700063746D /* AudioHardwareListener.cpp in Sources */,
FDA15EBD12B03F0B003A583A /* JSConvolverNode.cpp in Sources */,
FE6FD48D0F676E9300092873 /* JSCoordinates.cpp in Sources */,
930705D809E0C9B700B17FE4 /* JSCounter.cpp in Sources */,
Added: trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp (0 => 166442)
--- trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp (rev 0)
+++ trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp 2014-03-29 01:15:47 UTC (rev 166442)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "AudioHardwareListener.h"
+
+namespace WebCore {
+
+#if !PLATFORM(MAC)
+PassRefPtr<AudioHardwareListener> AudioHardwareListener::create(Client& client)
+{
+ return adoptRef(new AudioHardwareListener(client));
+}
+
+bool AudioHardwareListener::audioHardwareListenerIsSupported()
+{
+ return false;
+};
+
+#endif
+
+AudioHardwareListener::AudioHardwareListener(Client& client)
+ : m_client(client)
+ , m_activity(AudioHardwareActivityType::Unknown)
+{
+
+}
+
+}
Added: trunk/Source/WebCore/platform/audio/AudioHardwareListener.h (0 => 166442)
--- trunk/Source/WebCore/platform/audio/AudioHardwareListener.h (rev 0)
+++ trunk/Source/WebCore/platform/audio/AudioHardwareListener.h 2014-03-29 01:15:47 UTC (rev 166442)
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AudioHardwareListener_h
+#define AudioHardwareListener_h
+
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+
+enum AudioHardwareActivityType {
+ Unknown,
+ IsActive,
+ IsInactive
+};
+
+class AudioHardwareListener : public RefCounted<AudioHardwareListener> {
+public:
+ class Client {
+ public:
+ virtual ~Client() { }
+ virtual void audioHardwareDidBecomeActive() = 0;
+ virtual void audioHardwareDidBecomeInactive() = 0;
+ };
+
+
+ static PassRefPtr<AudioHardwareListener> create(Client&);
+ virtual ~AudioHardwareListener() { }
+
+ AudioHardwareActivityType hardwareActivity() const { return m_activity; }
+
+protected:
+ AudioHardwareListener(Client&);
+
+ Client& m_client;
+ AudioHardwareActivityType m_activity;
+};
+
+}
+
+#endif // AudioHardwareListener_h
Added: trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp (0 => 166442)
--- trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp (rev 0)
+++ trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp 2014-03-29 01:15:47 UTC (rev 166442)
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "AudioHardwareListenerMac.h"
+
+#if PLATFORM(MAC)
+
+#include <algorithm>
+
+enum {
+ kAudioHardwarePropertyProcessIsRunning = 'prun'
+};
+
+namespace WebCore {
+
+static AudioHardwareActivityType isAudioHardwareProcessRunning()
+{
+ AudioObjectPropertyAddress propertyAddress = {
+ kAudioHardwarePropertyProcessIsRunning,
+ kAudioObjectPropertyScopeGlobal,
+ kAudioObjectPropertyElementMaster
+ };
+
+ if (!AudioObjectHasProperty(kAudioObjectSystemObject, &propertyAddress))
+ return AudioHardwareActivityType::Unknown;
+
+ UInt32 result = 0;
+ UInt32 resultSize = sizeof(UInt32);
+
+ if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, 0, &resultSize, &result))
+ return AudioHardwareActivityType::Unknown;
+
+ if (result)
+ return AudioHardwareActivityType::IsActive;
+ else
+ return AudioHardwareActivityType::IsInactive;
+}
+
+PassRefPtr<AudioHardwareListener> AudioHardwareListener::create(Client& client)
+{
+ return AudioHardwareListenerMac::create(client);
+}
+
+PassRefPtr<AudioHardwareListenerMac> AudioHardwareListenerMac::create(Client& client)
+{
+ return adoptRef(new AudioHardwareListenerMac(client));
+}
+
+AudioHardwareListenerMac::AudioHardwareListenerMac(Client& client)
+ : AudioHardwareListener(client)
+{
+ m_activity = isAudioHardwareProcessRunning();
+ if (hardwareActivity() == AudioHardwareActivityType::Unknown)
+ return;
+
+ AudioObjectPropertyAddress propertyAddress = {
+ kAudioHardwarePropertyProcessIsRunning,
+ kAudioObjectPropertyScopeGlobal,
+ kAudioObjectPropertyElementMaster
+ };
+
+ m_block = Block_copy(^(UInt32, const AudioObjectPropertyAddress[]) {
+ setHardwareActive(isAudioHardwareProcessRunning());
+ });
+
+ AudioObjectAddPropertyListenerBlock(kAudioObjectSystemObject, &propertyAddress, dispatch_get_main_queue(), m_block);
+}
+
+AudioHardwareListenerMac::~AudioHardwareListenerMac()
+{
+ if (hardwareActivity() == AudioHardwareActivityType::Unknown)
+ return;
+
+ AudioObjectPropertyAddress propertyAddress = {
+ kAudioHardwarePropertyProcessIsRunning,
+ kAudioObjectPropertyScopeGlobal,
+ kAudioObjectPropertyElementMaster
+ };
+
+ AudioObjectAddPropertyListenerBlock(kAudioObjectSystemObject, &propertyAddress, dispatch_get_main_queue(), m_block);
+
+ Block_release(m_block);
+}
+
+void AudioHardwareListenerMac::setHardwareActive(AudioHardwareActivityType activity)
+{
+ if (activity == m_activity)
+ return;
+ m_activity = activity;
+
+ if (hardwareActivity() == AudioHardwareActivityType::IsActive)
+ m_client.audioHardwareDidBecomeActive();
+ else if (hardwareActivity() == AudioHardwareActivityType::IsInactive)
+ m_client.audioHardwareDidBecomeInactive();
+}
+
+}
+
+#endif
Added: trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.h (0 => 166442)
--- trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.h (rev 0)
+++ trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.h 2014-03-29 01:15:47 UTC (rev 166442)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AudioHardwareListenerMac_h
+#define AudioHardwareListenerMac_h
+
+#include "AudioHardwareListener.h"
+
+#if PLATFORM(MAC)
+
+#include <CoreAudio/AudioHardware.h>
+
+namespace WebCore {
+
+class AudioHardwareListenerMac : public AudioHardwareListener {
+public:
+ static WTF::PassRefPtr<AudioHardwareListenerMac> create(Client&);
+
+protected:
+ AudioHardwareListenerMac(Client&);
+ virtual ~AudioHardwareListenerMac();
+
+ void setHardwareActive(AudioHardwareActivityType);
+ AudioObjectPropertyListenerBlock m_block;
+};
+
+}
+
+#endif // PLATFORM(MAC)
+
+#endif // AudioHardwareListenerMac_h