[webkit-changes] [WebKit/WebKit] bd5501: [WebXR] Add state checking to WebXR IPC calls

Ada Chan noreply at github.com
Wed Jan 31 18:11:01 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bd55010ecc7f05c22f0b94a503dd1350b18c8396
      https://github.com/WebKit/WebKit/commit/bd55010ecc7f05c22f0b94a503dd1350b18c8396
  Author: Ada Chan <adachan at apple.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M Source/WebCore/Modules/webxr/WebXRSystem.cpp
    M Source/WebKit/Shared/XR/XRDeviceProxy.cpp
    M Source/WebKit/UIProcess/XR/PlatformXRSystem.cpp
    M Source/WebKit/UIProcess/XR/PlatformXRSystem.h
    M Source/WebKit/UIProcess/XR/PlatformXRSystem.messages.in
    M Source/WebKit/WebProcess/XR/PlatformXRSystemProxy.cpp
    M Source/WebKit/WebProcess/XR/PlatformXRSystemProxy.h

  Log Message:
  -----------
  [WebXR] Add state checking to WebXR IPC calls
https://bugs.webkit.org/show_bug.cgi?id=268404
rdar://121553978

Reviewed by Dan Glastonbury.

Track internal state in PlatformXRSystem and check that we are
in the expected state when the IPC call is made.

Remove unnecessary parameters in PlatformXRSystem::initializeTrackingAndRendering()
as that information can be cached in this class and there's no
need to pass that info over again.

* Source/WebCore/Modules/webxr/WebXRSystem.cpp:
(WebCore::WebXRSystem::resolveFeaturePermissions const):
We should not call into platform code for requesting permissions
for simulated test devices.
* Source/WebKit/Shared/XR/XRDeviceProxy.cpp:
(WebKit::XRDeviceProxy::initializeTrackingAndRendering):
* Source/WebKit/UIProcess/XR/PlatformXRSystem.cpp:
(WebKit::PlatformXRSystem::invalidate):
(WebKit::PlatformXRSystem::ensureImmersiveSessionActivity):
(WebKit::checkFeaturesConsent):
Helper function to check whether all the features in the first
argument are included in the second list of granted features.
(WebKit::PlatformXRSystem::requestPermissionOnSessionFeatures):
For immersive modes, check that we are in the idle state before
requesting permissions via the PlatformXRCoordinator.
When we get the granted permissions back, check whether all the
required features have been granted permission. Update the
immersive session state accordingly based on whether the
session can start.
(WebKit::PlatformXRSystem::initializeTrackingAndRendering):
Remove the parameters and use the cached immersive session
mode and granted features instead.
(WebKit::PlatformXRSystem::shutDownTrackingAndRendering):
(WebKit::PlatformXRSystem::requestFrame):
(WebKit::PlatformXRSystem::submitFrame):
(WebKit::PlatformXRSystem::sessionDidEnd):
(WebKit::PlatformXRSystem::setImmersiveSessionState):
(WebKit::PlatformXRSystem::invalidateImmersiveSessionState):
* Source/WebKit/UIProcess/XR/PlatformXRSystem.h:
* Source/WebKit/UIProcess/XR/PlatformXRSystem.messages.in:
* Source/WebKit/WebProcess/XR/PlatformXRSystemProxy.cpp:
(WebKit::PlatformXRSystemProxy::initializeTrackingAndRendering):
* Source/WebKit/WebProcess/XR/PlatformXRSystemProxy.h:

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




More information about the webkit-changes mailing list