haikuwebkit/LayoutTests/fast/speechrecognition/ios
Youenn Fablet f196b12a0a Enable audio capture for speech recognition in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=221457

Reviewed by Eric Carlson.

Source/WebCore:

Add fake deviceId to play nice with capture ASSERTs.
Covered by updated tests.

* Modules/speech/SpeechRecognitionCaptureSource.cpp:
(WebCore::SpeechRecognitionCaptureSource::createRealtimeMediaSource):

Source/WebKit:

Allow to create remote sources without any constraint.
To do so, we serialize through IPC a MediaConstraints with isValid = false and treat it as no constraint in capture process.

Make sure to send sandbox extensions and authorizations for GPUProcess to capture in case of speech recognition audio capture request.

In case of GPUProcess audio capture, send the request to capture to WebProcess like done for iOS.
WebProcess is then responsible to get audio samples from GPUProcess and forward them to UIProcess.
A future refactoring should move speech recognition to GPUProcess.

* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::grantRequest):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::createRealtimeMediaSourceForSpeechRecognition):
* WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::grantSandboxExtensions):
(WebKit::SpeechRecognitionRealtimeMediaSourceManager::createSource):
* WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:
(WebKit::RemoteRealtimeMediaSource::create):
(WebKit::RemoteRealtimeMediaSource::RemoteRealtimeMediaSource):
(WebKit::RemoteRealtimeMediaSource::createRemoteMediaSource):
(WebKit::RemoteRealtimeMediaSource::~RemoteRealtimeMediaSource):
(WebKit::RemoteRealtimeMediaSource::cloneVideoSource):
(WebKit::RemoteRealtimeMediaSource::gpuProcessConnectionDidClose):
* WebProcess/cocoa/RemoteRealtimeMediaSource.h:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource):
(WebKit::UserMediaCaptureManager::VideoFactory::createVideoCaptureSource):
(WebKit::UserMediaCaptureManager::DisplayFactory::createDisplayCaptureSource):

LayoutTests:

* fast/speechrecognition/ios/restart-recognition-after-stop.html:
* fast/speechrecognition/ios/start-recognition-then-stop.html:
* fast/speechrecognition/start-recognition-then-stop.html:
* fast/speechrecognition/start-second-recognition.html:


Canonical link: https://commits.webkit.org/233756@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@272434 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-05 20:27:19 +00:00
..
audio-capture-expected.txt Add webkit- prefix to SpeechRecognition 2020-12-15 23:04:22 +00:00
audio-capture.html Enable webrtc video capture in GPUProcess for iOS WebKitTestRunner 2021-02-03 10:34:39 +00:00
restart-recognition-after-stop-expected.txt Add webkit- prefix to SpeechRecognition 2020-12-15 23:04:22 +00:00
restart-recognition-after-stop.html Enable audio capture for speech recognition in GPUProcess 2021-02-05 20:27:19 +00:00
start-recognition-then-stop-expected.txt Add webkit- prefix to SpeechRecognition 2020-12-15 23:04:22 +00:00
start-recognition-then-stop.html Enable audio capture for speech recognition in GPUProcess 2021-02-05 20:27:19 +00:00