[MediaStream] Observer AVCaptureDevice "suspended" property
authoreric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 Nov 2018 22:21:01 +0000 (22:21 +0000)
committereric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 Nov 2018 22:21:01 +0000 (22:21 +0000)
commitcedb1e5eb70669834e57ec480f72db816ed36cb3
treeb562cec7a18a3cd531a5833ece6a2031f5e05009
parent160d559fe1503bef6d46833e7e0424c3deb628db
[MediaStream] Observer AVCaptureDevice "suspended" property
https://bugs.webkit.org/show_bug.cgi?id=191587
<rdar://problem/46030598>

Reviewed by Youenn Fablet.

No new tests, AVCapture can only be tested manually.

* platform/mediastream/mac/AVCaptureDeviceManager.h:
* platform/mediastream/mac/AVCaptureDeviceManager.mm:
(WebCore::AVCaptureDeviceManager::captureDevicesInternal): Don't notify of devices "changes"
the first time the device list is scanned.
(WebCore::deviceIsAvailable): Don't check for "isInUseByAnotherApplication", it doesn't
change device availability.
(WebCore::AVCaptureDeviceManager::beginObservingDevices): New, observe "suspended" on all
devices and add them to the cached list.
(WebCore::AVCaptureDeviceManager::stopObservingDevices): New, opposite of above.
(WebCore::AVCaptureDeviceManager::refreshCaptureDevices): Watch for changes in the list of
devices.
(WebCore::AVCaptureDeviceManager::~AVCaptureDeviceManager): Stop observing all cached devices.
(WebCore::AVCaptureDeviceManager::registerForDeviceNotifications):
(-[WebCoreAVCaptureDeviceManagerObserver disconnect]):
(-[WebCoreAVCaptureDeviceManagerObserver deviceConnectedDidChange:]):
(-[WebCoreAVCaptureDeviceManagerObserver observeValueForKeyPath:ofObject:change:context:]):
(WebCore::AVCaptureDeviceManager::refreshAVCaptureDevicesOfType): Deleted.
(WebCore::AVCaptureDeviceManager::deviceConnected): Deleted.
(WebCore::AVCaptureDeviceManager::deviceDisconnected): Deleted.
(-[WebCoreAVCaptureDeviceManagerObserver deviceDisconnected:]): Deleted.
(-[WebCoreAVCaptureDeviceManagerObserver deviceConnected:]): Deleted.

* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::~AVVideoCaptureSource): Stop observing "running" (not "rate")
and "suspended".
(WebCore::AVVideoCaptureSource::setupSession): Observe "running" (not "rate"), and "suspended".
(WebCore::AVVideoCaptureSource::captureDeviceSuspendedDidChange):
(-[WebCoreAVVideoCaptureSourceObserver observeValueForKeyPath:ofObject:change:context:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238145 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h
Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm
Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h
Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm