New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 844228 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug
Proj-VR
Proj-XR



Sign in to add a comment

WebXR magic window fails when the Experimental Web Platform Features flag is enabled

Project Member Reported by bajones@chromium.org, May 17 2018

Issue description

Chrome Version: 68.0.3427.0 canary (Happens on earlier builds too)
OS: Android

What steps will reproduce the problem?
(1) Visit about:flags
(2) Enable "WebXR Device API" flag
(3) Visit https://immersive-web.github.io/webxr-samples/magic-window.html
(4) Observe that Magic Window works
(5) Go back to about:flags
(6) Enable "Experimental Web Platform features" flag
(7) Go back to https://immersive-web.github.io/webxr-samples/magic-window.html
(8) Observe that Magic Window no longer works.

What is the expected result?
Magic Window content works when an unrelated flag is enabled

What happens instead?
When attempting to create the Magic Window session the promise rejects with the error "DOMException: Exclusive sessions can only be requested during a user gesture." This is highly weird, because it's explicitly not an exclusive session that's being requested.

 
That would make an awful lot of sense, but I doubt that's it. I don't think AR hit tests have landed yet, I believe they have their own flag, and IIRC this was happening in dev (or maybe even beta) as well. It should be a reasonably easy thing to track down exactly where the logic is failing, though, given the error is so clear cut. I just didn't have time to pursue it today.
Cc: vollick@chromium.org lincolnfrog@chromium.org ijamardo@chromium.org
Labels: -Pri-3 -Proj-VR M-68 Proj-XR-AR Pri-1
Owner: ddorwin@chromium.org
Status: Started (was: Available)
The cause is that hit-test is specified as "experimental" [1]. This will allow the layout tests to run without jumping through hoops, but it also means that it is included in Experimental Web Platform Features. A status of "test" would also achieve the former without the latter side effect, though "test" should really only be used for test-related APIs. (Unfortunately, there is nothing in between these two.)

It is not okay that this feature breaks WebXR. Therefore, until we have correctly implemented coexistence for VR and AR, this feature should not be "experimental". Since that is a short-term state (until  issue 828321  is resolved), we should probably just switch it to "test" with a TODO to switch it back after resolving 828321.

[1] https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/runtime_enabled_features.json5?rcl=527be178c13782181f7f836b15b29a552f07731a&l=1388
In either "experimental" or "test" state, a user gesture is required for all WebXR sessions during Layout Tests. It turns out that we don't have a test that covers this case ( issue 844772 ).
Project Member

Comment 4 by bugdroid1@chromium.org, May 19 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a3b0c20cba521b2b7182ea85781afb1bc06eceb0

commit a3b0c20cba521b2b7182ea85781afb1bc06eceb0
Author: David Dorwin <ddorwin@chromium.org>
Date: Sat May 19 01:04:23 2018

WebXR: Make the gesture requirement message more generic

It is now being used for more than just exclusive sessions.
Also change the phrasing around user activation more accurate.

Bug:  844228 
Change-Id: Ieee6c1ca856f7abdc04eabb9724973eaae79ac38
Reviewed-on: https://chromium-review.googlesource.com/1066814
Reviewed-by: Brandon Jones <bajones@chromium.org>
Commit-Queue: David Dorwin <ddorwin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#560127}
[modify] https://crrev.com/a3b0c20cba521b2b7182ea85781afb1bc06eceb0/third_party/blink/renderer/modules/xr/xr_device.cc

Project Member

Comment 5 by bugdroid1@chromium.org, May 21 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7853d61132b0c2f7a6d44c7a30e5e8c1919b2c66

commit 7853d61132b0c2f7a6d44c7a30e5e8c1919b2c66
Author: David Dorwin <ddorwin@chromium.org>
Date: Mon May 21 05:26:01 2018

Temporarily change WebXRHitTest feature status to "test"

This feature breaks non-exclusive WebXR sessions so it should not be enabled as
part of Experimental Web Platform Features.
We will still need it enabled when running the hit-test Layout Tests.

Bug:  844228 ,  833633 ,  828321 
Change-Id: Id59268fae445f67c01c34f4b2e381988157387ae
Reviewed-on: https://chromium-review.googlesource.com/1066812
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Commit-Queue: David Dorwin <ddorwin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#560231}
[modify] https://crrev.com/7853d61132b0c2f7a6d44c7a30e5e8c1919b2c66/third_party/blink/renderer/platform/runtime_enabled_features.json5

Status: Fixed (was: Started)
Components: Blink>WebXR

Sign in to add a comment