[webvr] Why does entering VR need to be on user interaction?

Michael Chang flux.blackcat at gmail.com
Wed Sep 21 01:20:37 UTC 2016

In the latest chromium build:

VrDisplay.RequestPresent must happen in a user gesture. (Click, touch, etc.)

If you want the page to automatically enter VR (say, from a settimeout),
you get this error now

Uncaught (in promise) DOMException: API can only be initiated by a user
> gesture.

I want to understand the thought process behind this decision.

To my understanding, Chrome requires user interaction to go Full Screen
because some old person might get tricked into thinking the browser is now
their OS and they're entering their credit card to phishing, which is a
security concern.

Am I wrong that is the only reason? How is that relevant to VR though? Why
is a user gesture required to enter VR?

*I want to argue that adding an extra button press to enter VR is bad
friction on both user and developer end.* I know it sounds minor, and
probably a crap ton of hand holding
do-not-put-your-hands-and-legs-outside-of-the-vehicle decision making that
goes into making Chrome, but it worries me a lot.

On the User End
Recall the wonderful discussion we had in the other thread about the future
of VR, and building the metaverse and linking to other pages which are also
VR. How incredibly bad would that user experience be if every time you link
somewhere in VR, you have to take off your headset, go back to your desk
and find the mouse, then click on enter VR, in which every website might
have a different way of doing so?

On the Developer End
>From a developer's perspective, it's bad enough we have to constantly take
our headsets off and on just to find out what's going on inside there. Take
for example, Unreal Engine's VR developer mode being really awesome because
it knows when you've taken off or on the HMD
<https://www.youtube.com/watch?v=cZJmh881FCo>. This is developer friendly,
there's very little friction between the editor and entering VR.

I don't know how you guys develop VR and I've tried several methods to make
it friction free.

My VR Development Style
My first method is developing in HMD all the time, using a combination
of Virtual
Desktop <http://store.steampowered.com/app/382110/> launching chromium and
having its home page be localhost:8000 and a voice command to reload the
page. This is neat because I can still type in Sublime Text in VR, and
still see WebVR live-reloading and everything still works.

My current method is having a setTimeout automatically enter me in VR (1
second after page reload) and I just have the HMD on my head and pull it
down when I need to see something, and just hit reload. This method no
longer works.

So what do I do now? I guess I can bind a Vive button to enter VR? How
janky is this? Why do we have to do these hacks to enter VR, when WebVR is
about VR content and having to worry about how to enter VR is just friction
that shouldn't be there?

Please, if anyone has insight, power to roll back this decision, or just
want to discuss this issue, hit reply below.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/web-vr-discuss/attachments/20160920/35a6c3c4/attachment-0002.html>

More information about the web-vr-discuss mailing list