WebXR on Android: Non-immersive VR sessions ("magic window") should use orientation sensors instead of GVR |
|||||||||||||||||||||||||||||||||||
Issue descriptionWebVR sites displayed on a device with no vr support currently show a static canvas with no orientation response. The external library for VrCore supports a magic window mode, but it is not supported on all devices and will not always be installed or up to date. A polyfill exists that uses javascript API's to get device orientation events and mimic a vr device, but it relies on a site detecting lack of native vr support and falling back to the polyfill. It's also more targeted at enabling using a VR device rather than magic window. It should be possible to implement a 'VR device' which uses native OS API's (not going through javascript) to make a WebVR site responsive to orientation events even if no external libraries are available. Note that this will require (I'm not entirely clear if these are complete or correct): * WebVR is enabled (or an origin trial set up on the site) * Chrome returns a VR device in response to a WebVR API call, but marks it as not supporting present (I'm not sure what that looks like in WebVR 1.1 vs 2.0 etc). * The site uses WebVR to get this device and use 'pose' data to update it's rendering appropriately.
,
Mar 13 2017
,
Apr 6 2017
,
Apr 14 2017
,
May 12 2017
amp@ had an interesting idea - we could expose this device as one that _does_ support presenting and then prompt the user to install GVR if they clicked in. Presumably only users with a headset would click it. However, thinking about it more, that could prevent apps from providing a fullscreen magic window experience (vs. an inline one). Maybe we'll have to wait for more granularity in WebVR 2.0 before doing that.
,
May 12 2017
Although the focus in Android, if we are able to use platform-independent APIs internally, this might give us magic window on laptops and tablets with the appropriate sensors.
,
Jun 6 2017
,
Jul 11 2017
,
Jul 27 2017
,
Aug 11 2017
,
Oct 11 2017
,
Oct 20 2017
,
Oct 27 2017
I believe that this has started? Please fix status if I've got that wrong.
,
Oct 27 2017
Yes, it is started, thank you for updating that, I forgot.
,
Oct 30 2017
,
Nov 17 2017
,
Nov 24 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f49c7959a4a5cf71aa09602a5317a589d12ee559 commit f49c7959a4a5cf71aa09602a5317a589d12ee559 Author: Anna Maria <offenwanger@chromium.org> Date: Fri Nov 24 16:14:45 2017 Defer VRServiceImpl::SetClient callback to VRDeviceManager Determining whether orientation events are supported is asynchronous. If we want to supply a device to the service that uses orientation events, we need to do so asynchronously. This makes it possible for the callback to be called asynchronously. BUG: 695937 Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: I2bca74037793f7e2940a935237fb7cc6aa0bfdf3 Reviewed-on: https://chromium-review.googlesource.com/786672 Reviewed-by: Michael Thiessen <mthiesse@chromium.org> Commit-Queue: Anna Offenwanger <offenwanger@chromium.org> Cr-Commit-Position: refs/heads/master@{#519125} [modify] https://crrev.com/f49c7959a4a5cf71aa09602a5317a589d12ee559/chrome/browser/vr/service/vr_device_manager.cc [modify] https://crrev.com/f49c7959a4a5cf71aa09602a5317a589d12ee559/chrome/browser/vr/service/vr_device_manager.h [modify] https://crrev.com/f49c7959a4a5cf71aa09602a5317a589d12ee559/chrome/browser/vr/service/vr_device_manager_unittest.cc [modify] https://crrev.com/f49c7959a4a5cf71aa09602a5317a589d12ee559/chrome/browser/vr/service/vr_service_impl.cc
,
Nov 29 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a40f12481d76d5d0eb61d450ca19493c827b5fbb commit a40f12481d76d5d0eb61d450ca19493c827b5fbb Author: Michael Thiessen <mthiesse@chromium.org> Date: Wed Nov 29 19:56:59 2017 VR: Allow VRDeviceProviders to initialize asynchronously Also implements adding and removing of devices after initialization. Bug: 695937 Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: I70ff4085242720f135da3d3cd51dd99dcbd7492c Reviewed-on: https://chromium-review.googlesource.com/789652 Commit-Queue: Michael Thiessen <mthiesse@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Bill Orr <billorr@chromium.org> Cr-Commit-Position: refs/heads/master@{#520208} [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/chrome/browser/vr/service/vr_device_manager.cc [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/chrome/browser/vr/service/vr_device_manager.h [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/chrome/browser/vr/service/vr_device_manager_unittest.cc [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/chrome/browser/vr/service/vr_service_impl.cc [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/chrome/browser/vr/service/vr_service_impl.h [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/device/vr/android/gvr/gvr_device_provider.cc [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/device/vr/android/gvr/gvr_device_provider.h [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/device/vr/openvr/openvr_device_provider.cc [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/device/vr/openvr/openvr_device_provider.h [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/device/vr/test/fake_vr_device_provider.cc [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/device/vr/test/fake_vr_device_provider.h [modify] https://crrev.com/a40f12481d76d5d0eb61d450ca19493c827b5fbb/device/vr/vr_device_provider.h
,
Dec 7 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/c9199d52c916658bec4674a41da856a675eb4945 commit c9199d52c916658bec4674a41da856a675eb4945 Author: Anna Maria <offenwanger@chromium.org> Date: Thu Dec 07 01:09:49 2017 Add vector Length function to Quaternion Bug: 695937 Change-Id: I9355c99f508f61a3d72156c9bca6cbcb4ed18324 Reviewed-on: https://chromium-review.googlesource.com/812445 Reviewed-by: Ian Vollick <vollick@chromium.org> Commit-Queue: Anna Offenwanger <offenwanger@chromium.org> Cr-Commit-Position: refs/heads/master@{#522289} [modify] https://crrev.com/c9199d52c916658bec4674a41da856a675eb4945/ui/gfx/geometry/quaternion.cc [modify] https://crrev.com/c9199d52c916658bec4674a41da856a675eb4945/ui/gfx/geometry/quaternion.h [modify] https://crrev.com/c9199d52c916658bec4674a41da856a675eb4945/ui/gfx/geometry/quaternion_unittest.cc
,
Dec 8 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e commit bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e Author: Anna Maria <offenwanger@chromium.org> Date: Fri Dec 08 02:25:43 2017 Make VR Device Eye Params optional It does not make sense to have eye params on magic window only devices, so this makes them optional in VRDisplayInfo. Bug: 695937 Change-Id: Ib96f1c1a351af87739b4b419bba561d94ce96857 Reviewed-on: https://chromium-review.googlesource.com/807725 Commit-Queue: Anna Offenwanger <offenwanger@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Michael Thiessen <mthiesse@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Cr-Commit-Position: refs/heads/master@{#522682} [modify] https://crrev.com/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e/device/vr/vr_service.mojom [modify] https://crrev.com/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e/third_party/WebKit/LayoutTests/vr/getEyeParameters_match.html [add] https://crrev.com/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e/third_party/WebKit/LayoutTests/vr/getEyeParameters_null.html [modify] https://crrev.com/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e/third_party/WebKit/LayoutTests/vr/resources/fake-vr-displays.js [modify] https://crrev.com/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e/third_party/WebKit/Source/modules/vr/VRDisplay.cpp [modify] https://crrev.com/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e/third_party/WebKit/Source/modules/vr/VREyeParameters.cpp [modify] https://crrev.com/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e/third_party/WebKit/Source/modules/vr/VREyeParameters.h [modify] https://crrev.com/bd2c5c4317eab0391bd1c19ab2b5315bf3395c0e/third_party/WebKit/Source/modules/vr/VRFrameData.cpp
,
Dec 8 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/114d350594c09afa42dbf82f0b6f87829751746c commit 114d350594c09afa42dbf82f0b6f87829751746c Author: Anna Maria <offenwanger@chromium.org> Date: Fri Dec 08 23:13:29 2017 [vr] Add magic window only device that uses orientation events Adding in a VR device will work on phones that may not have GVR installed or up to date. Device uses the orientation events that are available on many phones. Bug: 695937 Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: Iea1ef1925b88ba997b42792c8756bb986afa36c4 Reviewed-on: https://chromium-review.googlesource.com/782441 Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Mitsuru Oshima <oshima@chromium.org> Reviewed-by: Michael Thiessen <mthiesse@chromium.org> Reviewed-by: Reilly Grant <reillyg@chromium.org> Reviewed-by: Mounir Lamouri <mlamouri@chromium.org> Commit-Queue: Anna Offenwanger <offenwanger@chromium.org> Cr-Commit-Position: refs/heads/master@{#522911} [modify] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/chrome/browser/vr/service/DEPS [modify] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/chrome/browser/vr/service/vr_device_manager.cc [modify] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/BUILD.gn [modify] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/BUILD.gn [modify] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/DEPS [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/orientation/orientation_device.cc [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/orientation/orientation_device.h [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/orientation/orientation_device_provider.cc [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/orientation/orientation_device_provider.h [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/orientation/orientation_device_provider_unittest.cc [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/orientation/orientation_device_unittest.cc [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/test/fake_orientation_provider.cc [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/test/fake_orientation_provider.h [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/test/fake_sensor_provider.cc [add] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/test/fake_sensor_provider.h [modify] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/vr_device.h [modify] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/vr_device_base.cc [modify] https://crrev.com/114d350594c09afa42dbf82f0b6f87829751746c/device/vr/vr_device_base.h
,
Jan 8 2018
,
Jan 12 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/57ecf759440674f316308f189a3a710ec0f10606 commit 57ecf759440674f316308f189a3a710ec0f10606 Author: Anna Maria <offenwanger@chromium.org> Date: Fri Jan 12 03:10:40 2018 [VR] Put orientation device behind a flag Makes it so that we can manually enable the vr orientation device on all OS types instead of having it controlled by the build flags. Bug: 695937 Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: I58c06f1a42a77567214f60355463a915cd0b6b1b Reviewed-on: https://chromium-review.googlesource.com/820592 Reviewed-by: Brian Sheedy <bsheedy@chromium.org> Reviewed-by: Dmitry Gozman <dgozman@chromium.org> Reviewed-by: Klaus Weidner <klausw@chromium.org> Reviewed-by: David Dorwin <ddorwin@chromium.org> Reviewed-by: Bill Orr <billorr@chromium.org> Commit-Queue: Anna Offenwanger <offenwanger@chromium.org> Cr-Commit-Position: refs/heads/master@{#528865} [modify] https://crrev.com/57ecf759440674f316308f189a3a710ec0f10606/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/WebVrDeviceTest.java [modify] https://crrev.com/57ecf759440674f316308f189a3a710ec0f10606/chrome/browser/about_flags.cc [modify] https://crrev.com/57ecf759440674f316308f189a3a710ec0f10606/chrome/browser/flag_descriptions.cc [modify] https://crrev.com/57ecf759440674f316308f189a3a710ec0f10606/chrome/browser/flag_descriptions.h [modify] https://crrev.com/57ecf759440674f316308f189a3a710ec0f10606/chrome/browser/vr/service/vr_device_manager.cc [modify] https://crrev.com/57ecf759440674f316308f189a3a710ec0f10606/content/public/common/content_features.cc [modify] https://crrev.com/57ecf759440674f316308f189a3a710ec0f10606/content/public/common/content_features.h [modify] https://crrev.com/57ecf759440674f316308f189a3a710ec0f10606/tools/metrics/histograms/enums.xml
,
Jan 26 2018
,
Jan 26 2018
,
Feb 12 2018
,
Feb 28 2018
,
Mar 8 2018
,
Mar 9 2018
,
Mar 9 2018
,
Mar 9 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1241c85b5ca06c89756d1a6ff4de644eca4aa13d commit 1241c85b5ca06c89756d1a6ff4de644eca4aa13d Author: Anna Offenwanger <offenwanger@chromium.org> Date: Fri Mar 09 22:46:38 2018 Switch VR OrientationDevice to using Game Rotation Because apparently the compass doesn't work so well and is what causes spinning when using the thing indoors sometimes. Bug: 695937 Change-Id: Id0e94520b1f509f133161e2c99edb9bd9775c616 Reviewed-on: https://chromium-review.googlesource.com/957471 Commit-Queue: Anna Offenwanger <offenwanger@chromium.org> Reviewed-by: Michael Thiessen <mthiesse@chromium.org> Cr-Commit-Position: refs/heads/master@{#542264} [modify] https://crrev.com/1241c85b5ca06c89756d1a6ff4de644eca4aa13d/device/vr/orientation/orientation_device.cc [modify] https://crrev.com/1241c85b5ca06c89756d1a6ff4de644eca4aa13d/device/vr/orientation/orientation_device_provider_unittest.cc [modify] https://crrev.com/1241c85b5ca06c89756d1a6ff4de644eca4aa13d/device/vr/orientation/orientation_device_unittest.cc
,
May 15 2018
Removing M-67 milestone during a triage sweep with ericde@. A milestone should be reassigned when the issue is in scope.
,
May 15 2018
,
May 17 2018
,
Jul 4
,
Jul 4
,
Jul 30
This bug tracks the general and Android-specific changes to make magic window use orientation devices on Android. Support for magic window on other platforms is tracked separately in other bugs (see "Blocking").
,
Aug 22
,
Aug 23
Orientation device is enabled and behind a flag. It works on Android. When the flag is on orientation device is used by default. However, this can still trigger GVR ui, and that should be prevented before enabling by default.
,
Aug 23
,
Sep 4
,
Sep 11
,
Sep 11
This is blocking VR DFM (issue 850674) - both magic window support and just not loading the runtime as soon as WebVR/WebXR APIs are used.
,
Sep 26
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4df9d69439c0d6f2223f99f80a8130557e5cf471 commit 4df9d69439c0d6f2223f99f80a8130557e5cf471 Author: Suman Nelson Kancherla <sumankancherla@chromium.org> Date: Wed Sep 26 22:25:59 2018 Android: enable orientation sensor device Tested by checking the default value of "WebXR orientation sensor device" before and after the change, and it switched from disbaled to enabled, as expected. Bug: 695937 Change-Id: Ib5c3e9aee51d855740db1d6cbb9267068b411d19 Reviewed-on: https://chromium-review.googlesource.com/1244878 Reviewed-by: Bill Orr <billorr@chromium.org> Reviewed-by: John Abd-El-Malek <jam@chromium.org> Commit-Queue: Suman Kancherla <sumankancherla@chromium.org> Cr-Commit-Position: refs/heads/master@{#594502} [modify] https://crrev.com/4df9d69439c0d6f2223f99f80a8130557e5cf471/content/public/common/content_features.cc
,
Oct 9
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab commit ecf590ef05cf8565f4a4b00fe7c0cb25710736ab Author: Bill Orr <billorr@chromium.org> Date: Tue Oct 09 00:20:31 2018 Allow XRRuntimes to delay initialization This change allows GVRDevice to initialize asynchronously. In particular, this allows starting GVR only when used for presentation and use the orientation device for magic window. WebVR assumes we can get display info that will be valid for presentation before we start presentation, which means we need to initialize GVRDevice and get its VRDisplayInfo right away outside of a call to RequestSession. BUG= 695937 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:linux_vr;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel Change-Id: Ica4a1edd23333fd6b007238deed63d7e6082aefb Reviewed-on: https://chromium-review.googlesource.com/c/1256217 Commit-Queue: Bill Orr <billorr@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Tibor Goldschwendt <tiborg@chromium.org> Cr-Commit-Position: refs/heads/master@{#597749} [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/chrome/browser/vr/service/browser_xr_runtime.cc [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/chrome/browser/vr/service/browser_xr_runtime.h [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/chrome/browser/vr/service/xr_device_impl.cc [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/chrome/browser/vr/service/xr_runtime_manager.cc [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/device/vr/android/gvr/gvr_device.cc [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/device/vr/android/gvr/gvr_device.h [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/device/vr/android/gvr/gvr_device_provider.cc [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/device/vr/public/mojom/isolated_xr_service.mojom [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/device/vr/vr_device_base.cc [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/device/vr/vr_device_base.h [modify] https://crrev.com/ecf590ef05cf8565f4a4b00fe7c0cb25710736ab/device/vr/vr_device_base_unittest.cc
,
Oct 24
,
Oct 30
I believe this is now fixed - we use orientation sensor instead of gvr for magic window. |
|||||||||||||||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||||||||||||||
Comment 1 by amp@chromium.org
, Feb 24 2017