[webkit-changes] [WebKit/WebKit] 58512c: Media Capability may not be created for a web page...
youennf
noreply at github.com
Fri Mar 15 16:02:22 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 58512c972d46ac24ddc87a330fcb6894b200e53c
https://github.com/WebKit/WebKit/commit/58512c972d46ac24ddc87a330fcb6894b200e53c
Author: Youenn Fablet <youenn at apple.com>
Date: 2024-03-15 (Fri, 15 Mar 2024)
Changed paths:
M Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm
M Source/WebKit/UIProcess/WebPageProxy.cpp
Log Message:
-----------
Media Capability may not be created for a web page after process swap
https://bugs.webkit.org/show_bug.cgi?id=270999
rdar://124491466
Reviewed by Eric Carlson.
We used to recrete a media capability in WebPageProxy::didChangeMainDocument.
In case of process swap, the WebPageProxy has sent its media capability to the previous web page, but not the new web page in the new process.
WebPageProxy::didChangeMainDocument is not called so the media capability is not recreated for the new web page.
We move back the potential recreation of the media capbility to WebPageProxy::didCommitLoadForFrame where it was before rdar://problem/123381737.
This is ok since we are preserving media capabilities over navigation for same origin navigations, instead of recreating a media capability for each new main document.
Manually tested by doing the following in iOS:
1. Load a web page say https://webkit.org.
2. Via web inspector, load another page, for instance: 'window.location = "https://webrtc.github.io/samples/src/content/getusermedia/gum/"'
3. Start capturing on the new web page and verify camera capture is working properly.
I also validated that same document navigations are still working using https://bugs.webkit.org/attachment.cgi?id=470000.
After the fix in https://bugs.webkit.org/show_bug.cgi?id=270995, capture would not longer fail but would use identity instead of media capability.
We add a warning logging in AVVideoCaptureSource to catch the case of media capability being empty, which should not happen for safari.
* Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::setupSession):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didChangeMainDocument):
Canonical link: https://commits.webkit.org/276211@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list