Title: [166442] trunk/Source/WebCore
Revision
166442
Author
sle...@apple.com
Date
2014-03-28 18:15:47 -0700 (Fri, 28 Mar 2014)

Log Message

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.

Modified Paths

Added Paths

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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to