Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failure to enter immersive mode in DelightVR player #3301

Closed
philip-lamb opened this issue May 1, 2020 · 14 comments
Closed

Failure to enter immersive mode in DelightVR player #3301

philip-lamb opened this issue May 1, 2020 · 14 comments
Labels
compatibility Web content compatibility issues [QA]:Verified fixed Label for QA to mark verified fixed issues
Milestone

Comments

@philip-lamb
Copy link
Contributor

Configuration

FxR 10rc4 9cfba1f

Hardware:
HTC Vive Focus Plus, Oculus Quest

Steps to Reproduce

  1. Navigate to https://delight-vr.com/video-player-module/
  2. Play video near bottom of page "Get barreled in Tahiti"

Current Behavior

DelightVR player starts, but does not enter immersive mode.
Audio plays OK.

Expected Behavior

Player enters immersive mode and allows viewing.

Possible Solution

Context

Functions OK in Oculus Browser 9.0.0.2.38.210941660

Error Logs and Stack Traces

@philip-lamb philip-lamb added WebVR/XR bug This issue is a software or functional defect P1 Fix in the current development iteration regression labels May 1, 2020
@bluemarvin bluemarvin removed P1 Fix in the current development iteration bug This issue is a software or functional defect labels May 1, 2020
@bluemarvin
Copy link
Contributor

05-01 11:34:57.147 15300 15389 W Web Content: [JavaScript Warning: "This page uses the non standard property “zoom”. Consider using calc() in the relevant property values, or using “transform” along with “transform-origin: 0 0”." {file: "https://delight-vr.com/video-player-module/" line: 0}]
05-01 11:34:57.191 15300 15389 I Web Content: JQMIGRATE: Migrate is installed, version 1.4.1
05-01 11:34:57.211 15300 15389 W Web Content: [JavaScript Warning: "Layout was forced before the page was fully loaded. If stylesheets are not yet loaded this may cause a flash of unstyled content." {file: "https://delight-vr.com/wp-includes/js/jquery/jquery.js?ver=1.12.4" line: 3}]
05-01 11:34:57.316 15300 15389 W Web Content: [JavaScript Warning: "Relative positioning of table rows and row groups is now supported. This site may need to be updated because it may depend on this feature having no effect." {file: "https://delight-vr.com/wp-content/themes/uncode/library/js/min/init.min.js.pagespeed.jm.RfDbvplMB3.js" line: 1}]
05-01 11:34:58.610 15300 15389 W Web Content: [JavaScript Warning: "This site appears to use a scroll-linked positioning effect. This may not work well with asynchronous panning; see https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects for further details and to join the discussion on related tools and features!" {file: "https://delight-vr.com/video-player-module/" line: 0}]
05-01 11:34:58.659 15300 15389 W Web Content: [JavaScript Warning: "Autoplay is only allowed when approved by the user, the site is activated by the user, or media is muted." {file: "https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js" line: 55}]
05-01 11:34:58.780 15300 15389 E Web Content: [JavaScript Error: "NotAllowedError: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission." {file: "https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js" line: 55}]
05-01 11:34:58.995 15300 15389 I Web Content: [JavaScript Error: "Cookie “_ga” has “sameSite” policy set to “lax” because it is missing a “sameSite” attribute, and “sameSite=lax” is the default value for this attribute." {file: "https://www.google-analytics.com/analytics.js" line: 28}]
05-01 11:34:58.997 15300 15389 I Web Content: [JavaScript Error: "Cookie “_gid” has “sameSite” policy set to “lax” because it is missing a “sameSite” attribute, and “sameSite=lax” is the default value for this attribute." {file: "https://www.google-analytics.com/analytics.js" line: 28}]
05-01 11:34:59.570 15300 15389 W Web Content: [JavaScript Warning: "Use of the orientation sensor is deprecated." {file: "https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js" line: 18}]
05-01 11:34:59.570 15300 15389 W Web Content: [JavaScript Warning: "Use of the motion sensor is deprecated." {file: "https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js" line: 18}]
05-01 11:34:59.578 15300 15389 W Web Content: [JavaScript Warning: "1522 e No DPDB device match."]
05-01 11:34:59.580 15300 15389 W Web Content: [JavaScript Warning: "1522 e Failed to recalculate device parameters."]
05-01 11:35:02.733 15300 15389 W Web Content: [JavaScript Warning: "WebGL warning: texImage: GetAsSourceSurface or GetDataSurface failed after blit failed for TexUnpackImage." {file: "https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js" line: 16}]
05-01 11:35:07.117 15300 15389 E Web Content: [JavaScript Error: "Error: Fetch error: 404 - Not Found at https://delight-vr.com/wp-content/icons/manifest.json" {file: "resource://gre/modules/ManifestObtainer.jsm" line: 128}]
05-01 11:35:09.727 15300 15389 E Web Content: [JavaScript Error: "12747 t request vr mode failed: undefined"]

@bluemarvin
Copy link
Contributor

This is not a regression in FxR. I tested as far back as 1.4 release and I see the same behavior. I would guess they updated their library and did not test in FxR.

@miketaylr
Copy link

The WebGL waring may or may not be relevant, but we should try to figure this one out:

12747 t request vr mode failed: undefined

@miketaylr
Copy link

@wisniewskit can you look into this one?

@emstanley emstanley added this to the #11 polish milestone May 4, 2020
@bluemarvin
Copy link
Contributor

I have done some more investigating and have found several issues. The first isssue is we are missing the user gesture:

13671 t request xr mode failed: SecurityError: A user gesture is required. dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:51:22773
    value https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:51
    value https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:51
    value https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:52

If the pref dom.vr.require-gesture=false is set. The player is able to enter VR. however it fails to read the device heading and the video is locked and the user can not look around. It is probably related to these errors:

Uncaught TypeError: can't access property "getViewerPose", this._frameData is undefined
    value https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:53
    value https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:12
dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:53:230

45588 Function XRFrame.getPose: GetPose can not be called on an XRFrame that is not active. value/<@https://cdn.delight-vr.com/2.0.19/0.dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:26:17886
value@https://cdn.delight-vr.com/2.0.19/0.dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:26:17190
value@https://cdn.delight-vr.com/2.0.19/0.dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:26:12244
value@https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:12:27628
value@https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:12:27263
dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:51:22773

Uncaught DOMException: XRFrame.getPose: GetPose can not be called on an XRFrame that is not active. 0.dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:26
    value https://cdn.delight-vr.com/2.0.19/0.dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:26
    forEach self-hosted:225
    value https://cdn.delight-vr.com/2.0.19/0.dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:26
    value https://cdn.delight-vr.com/2.0.19/0.dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:26
    value self-hosted:844
    value https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:12
    value https://cdn.delight-vr.com/latest/dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:12

Since the delight-vr player works in the Oculus browser, we either need to fix the compat issues in Gecko or work with delight-vr to fix their player to work with Gecko's WebXR implementation.

@philip-lamb
Copy link
Contributor Author

philip-lamb commented May 22, 2020

The first isssue is we are missing the user gesture:

@kearwood this is also not working correctly on FF desktop with WebXR enabled. Would you like to look into it?

@philip-lamb
Copy link
Contributor Author

This is a P1 issue for a platform partner.

@daoshengmu
Copy link
Contributor

It should be resolved after applying Bug 1641615 patch.

@kearwood
Copy link
Contributor

I'm taking a look at this now

@daoshengmu
Copy link
Contributor

daoshengmu commented Jun 2, 2020

DelightVR player still happens a couple of failures to run video playback even though after applying the patch from Bug 1641615, we are able to enter WebXR session.

JavaScript Error: "16599.58 Function XRFrame.getPose: GetPose can not be called on an XRFrame that is not active. value
JavaScript Error: "TypeError: can't access property "getViewerPose", this._frameData is undefined" 

This is because they use window.rAF instead of XRSession.rAF. They are also trying to use XRFrame outside of XRSession.rAF, that makes them use a recycled _frameData instead of a XRFrame from XRSession.rAF. These things will pause code to be executed. After injecting window.requestAnimationFrame = () => {} in the console, the problems can be solved.

  1. Another case is when first time to launch FxR, then navigating to https://delight-vr.com/video-player-module/. We will be frozen by the first frame, and I saw they do not continually call XRFrame.rAF somehow. In the proper case of video playback, I can see they will trigger XRFrame.rAF every frame.

Not quite sure if it is related to this error from JS.

Autoplay is only allowed when approved by the user, the site is activated by the user, or media is muted. dl8-3e3af913f9d53da7a03b113754466c5ffdddb3cd.js:55:2571
Uncaught (in promise) DOMException: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

@bluemarvin
Copy link
Contributor

Fixed by #3553

@daoshengmu
Copy link
Contributor

I haven't tried the latest build. Does it be fixed?

@bluemarvin
Copy link
Contributor

I haven't tried the latest build. Does it be fixed?

Yes, I verified it today.

@Softvision-GeluHaiduc
Copy link

I have verified this issue with Firefox Reality version 10.2 RC4 (6adc5cc) installed on the Oculus Go, HTC Vive Focus Plus, Pico Neo2 and Pico G2 4K headsets.
Now, immersive mode can be entered using DelightVR player.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compatibility Web content compatibility issues [QA]:Verified fixed Label for QA to mark verified fixed issues
Projects
None yet
Development

No branches or pull requests

7 participants