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

Issue 870031 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Nov 20
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug-Regression
Proj-VR
Proj-XR
Proj-XR-VR



Sign in to add a comment

WebXrVrInputTest#testAppButtonExitsPresentation_WebXr__ChromeTabbedActivity flaky

Project Member Reported by bsheedy@chromium.org, Aug 1

Issue description

WebXrVrInputTest#testAppButtonExitsPresentation_WebXr__ChromeTabbedActivity is flakily reporting that the app button does not cause the WebXr immersive session to end. This is most prevalent on Oreo.

After some testing and discussion with acndor@, this appears to be due to two separate issues:

1. Due to DON flow skipping weirdness, we can get paused and resumed extremely quickly, which can cause the controller to reconnect. This reconnection can cause the button up transition to be missed, but is easily fixable by only updating previous button states if the controller is connected.

2. It looks like we may be reporting immersive session entry too early, so that the app button press is sent before we actually start doing anything with controller input. If this is the case, this could be fixed by either:

a. Only reporting session entry after we're able to submit frames (test infrastructure change)
b. Not giving out an immersive session until we're fully ready (production change)

It's currently not clear which of those two solutions is the correct one.
 
Cc: klausw@chromium.org
Klaus, what are your thoughts on 2?
I lied. #2 appears to be the same as #1, but instead of only missing the button up due to the disconnect/reconnect, we miss both the button down and up.
Unfortunately, the only workarounds I can think of for #2 are either adding a sleep so that the potential disconnect/reconnect has happened by the time we start sending input, or by spamming multiple button presses instead of sending one.

I think I actually prefer the sleep since multiple button presses could hide flakiness in our gesture detection code.

Hopefully the proposed VrCore-side fix for Issue 762724 that makes DON flow skipping more like a really quickly and automatically completed DON flow will actually fix this.
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 2

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

commit fcb71d1ab3a40d13ced2559259a02b76b2c44152
Author: bsheedy <bsheedy@chromium.org>
Date: Thu Aug 02 17:20:36 2018

Work around VR controller disconnect flakiness

Adds a sleep (ew) after entering presentation in VR tests for testing
that the Daydream controller's app buton exits presentation. This works
around a VrCore issue when skipping the DON flow that causes the
controller to briefly disconnect and reconnect when entering VR, eating
any controller input that's sent during that time.

Bug:  870031 
Change-Id: Id888826907c9548120d36b0dde67e30271d4bc85
Reviewed-on: https://chromium-review.googlesource.com/1159398
Reviewed-by: Amirhossein Simjour <asimjour@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580225}
[modify] https://crrev.com/fcb71d1ab3a40d13ced2559259a02b76b2c44152/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrVrInputTest.java

Project Member

Comment 5 by bugdroid1@chromium.org, Aug 3

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

commit 04d2f0f8ddf85bb106eb43e2b9a9ee3d8754a529
Author: bsheedy <bsheedy@chromium.org>
Date: Fri Aug 03 18:35:11 2018

Only update VR controller states if connected

Only updates the VR controller's previous button states if the
controller is connected. This fixes some flakiness with VR tests caused
by the controller briefly disconnecting then reconnecting.

Bug:  870031 
Change-Id: If1e0e8807120e9ddba94c05b651ae553b1e4f60b
Reviewed-on: https://chromium-review.googlesource.com/1159273
Reviewed-by: Aldo Culquicondor <acondor@chromium.org>
Reviewed-by: Amirhossein Simjour <asimjour@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580609}
[modify] https://crrev.com/04d2f0f8ddf85bb106eb43e2b9a9ee3d8754a529/chrome/browser/android/vr/vr_controller.cc

Status: ExternalDependency (was: Assigned)
Marking as an external dependency since fully fixing this will require a VrCore-side change.
Project Member

Comment 7 by bugdroid1@chromium.org, Aug 7

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

commit b3597e15a245a728d3eedd7cfd049f90dbd9ca94
Author: bsheedy <bsheedy@chromium.org>
Date: Tue Aug 07 16:48:37 2018

Move VR controller disconnect workaround

Moves the workaround for the Daydream controller flakily disconnecting
and reconnecting immediately after entering VR into the
EmulatedVrController class. This means that we don't have to add sleeps
anytime we use the emulated controller, and tests don't have to care
about the workaround unless they're re-entering VR while using the
emulated controller (none currently do).

Bug:  870031 
Change-Id: Icd590ffbd1348764cc945ddd1d72e341febba33e
Reviewed-on: https://chromium-review.googlesource.com/1164317
Reviewed-by: Amirhossein Simjour <asimjour@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581255}
[modify] https://crrev.com/b3597e15a245a728d3eedd7cfd049f90dbd9ca94/chrome/android/javatests/src/org/chromium/chrome/browser/vr/EmulatedVrController.java
[modify] https://crrev.com/b3597e15a245a728d3eedd7cfd049f90dbd9ca94/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrVrInputTest.java

Labels: -VR-Caught-By-Test XR-Caught-By-Test
Status: WontFix (was: ExternalDependency)
This should no longer be an issue since the app button tests have been moved over to Chrome-side controller code instead of the VrCore-side controller emulation.

Sign in to add a comment