[webkit-changes] [WebKit/WebKit] 18a0a5: WebRTC: Camera input is rotated by 90 degrees

Tim Horton noreply at github.com
Wed Mar 22 10:36:21 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 18a0a5b45375c7795a80ee132c23f04d2c49ba74
      https://github.com/WebKit/WebKit/commit/18a0a5b45375c7795a80ee132c23f04d2c49ba74
  Author: Tim Horton <timothy_horton at apple.com>
  Date:   2023-03-22 (Wed, 22 Mar 2023)

  Changed paths:
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/API/ios/WKWebViewIOS.h
    M Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
    M Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm
    M Tools/TestWebKitAPI/Tests/WebKit/getUserMedia.html

  Log Message:
  -----------
  WebRTC: Camera input is rotated by 90 degrees
https://bugs.webkit.org/show_bug.cgi?id=254185
rdar://106396515

Reviewed by Youenn Fablet.

If a client overrides the device orientation (as exposed to CSS), it currently
also overrides the capture orientation, resulting in sideways video.

* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _setupScrollAndContentViews]):
(-[WKWebView _deviceOrientationIgnoringOverrides]):
(-[WKWebView didMoveToWindow]):
(-[WKWebView _dispatchSetOrientationForMediaCapture:]):
(-[WKWebView _windowDidRotate:]):
(-[WKWebView _deviceOrientation]): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::willStartCapture):
(WebKit::WebPageProxy::setOrientationForMediaCapture):
(WebKit::WebPageProxy::gpuProcessExited):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::setDeviceOrientation):
Separate the device orientation from the capture orientation, and make the
overrides not apply to capture orientation (which already has e.g.
WKPageSetMockCameraOrientation to override it).

The new bit is not transmitted in the DynamicViewportSizeUpdate because it
can't be changed synchronously, so there is no value to moving it there.

* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setOrientationForMediaCapture):
* Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:
* Tools/TestWebKitAPI/Tests/WebKit/getUserMedia.html:
Add a test ensuring that the override doesn't affect capture orientation.

Canonical link: https://commits.webkit.org/261972@main




More information about the webkit-changes mailing list