New issue
Advanced search Search tips

Issue 814934 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug
Proj-XR



Sign in to add a comment

VrShellNavigationTest#test2dTo2d broken in multiple ways (?)

Project Member Reported by bsheedy@chromium.org, Feb 22 2018

Issue description

VrShellNavigationTest#test2dTo2d seems broken in 3 completely unrelated ways.

First, it's failing 100% of the time on the Nougat bot. It first occurred in https://ci.chromium.org/buildbot/chromium.android/Nougat%20Phone%20Tester/3788, and the only VR-related CL there is a DOFF flow change. In this case, it's failing because it's failing to properly load the chrome://history page. The following is provided as the failure reason:

java.lang.AssertionError: Page did not load.  Tab information at time of failure -- url: file:///storage/emulated/0/chromium_tests_root/chrome/test/data/vr/e2e_test_files/html/test_navigation_2d_page2.html, final URL: chrome://history/, load progress: 100, is loading: false, web contents loading: false

Looking at the logcat output, the following lines just before the failure seem slightly suspicious, although I don't know how this would relate to page loading:

02-22 04:20:52.435 11158 27753 I VrCtl.StateMachine: Restarting for controller GoogleDaydreamControllerV1
02-22 04:20:52.435 11158 27753 I VrCtl.StateMachine: Preparing controller GoogleDaydreamControllerV1
02-22 04:20:52.436 11158 27753 I VrCtl.StateMachine: Controller GoogleDaydreamControllerV1 state change STATE_ERROR --> STATE_PREPARING
02-22 04:20:52.436 11158 27753 I VrCtl.ControllerSelector: Creating ControllerDevice with driver: DRIVER_P6
02-22 04:20:52.436 11158 27753 I VrCtl.ControllerDriverFactory: Creating ControllerDevice for driver: DRIVER_P6
02-22 04:20:52.437 11158 27753 I VrCtl.PaprikaController: Soft disconnect mode: 
02-22 04:20:52.447 11158 27753 E VrCtl.ControllerSelector: Controller unexpectedly absent from bonded device list: [name=DRIVER_P6,isEmulator=false,address=,usesBluetooth=false]
02-22 04:20:52.447 11158 27753 E VrCtl.StateMachine: Controller GoogleDaydreamControllerV1 experienced error: ERROR_CONTROLLER_NOT_BONDED
02-22 04:20:52.448 11158 27753 I VrCtl.StateMachine: Controller GoogleDaydreamControllerV1 state change STATE_PREPARING --> STATE_ERROR
02-22 04:20:52.449 11158 27753 W VrCtl.ControllerService: No controller found since the restart.
02-22 04:20:52.449 11158 27753 I VrCtl.ListenersManager: Controller GoogleDaydreamControllerV1 state updated to: SCANNING
02-22 04:20:52.449 11158 11158 I VrCtl.ControllerService: Not launching recovery flow for controller: GoogleDaydreamControllerV1 missingTimeMillis: 0
02-22 04:20:52.452 11158 27753 I VrCtl.ListenersManager: Controller GoogleDaydreamControllerV1 state updated to: DISCONNECTED
02-22 04:20:57.454 11158 27753 I VrCtl.StateMachine: Restarting for controller GoogleDaydreamControllerV1
02-22 04:20:57.454 11158 27753 I VrCtl.StateMachine: Preparing controller GoogleDaydreamControllerV1
02-22 04:20:57.454 11158 27753 I VrCtl.StateMachine: Controller GoogleDaydreamControllerV1 state change STATE_ERROR --> STATE_PREPARING
02-22 04:20:57.454 11158 27753 I VrCtl.ControllerSelector: Creating ControllerDevice with driver: DRIVER_P6
02-22 04:20:57.455 11158 27753 I VrCtl.ControllerDriverFactory: Creating ControllerDevice for driver: DRIVER_P6
02-22 04:20:57.456 11158 27753 I VrCtl.PaprikaController: Soft disconnect mode: 
02-22 04:20:57.464 11158 27753 E VrCtl.ControllerSelector: Controller unexpectedly absent from bonded device list: [name=DRIVER_P6,isEmulator=false,address=,usesBluetooth=false]
02-22 04:20:57.464 11158 27753 E VrCtl.StateMachine: Controller GoogleDaydreamControllerV1 experienced error: ERROR_CONTROLLER_NOT_BONDED
02-22 04:20:57.465 11158 27753 I VrCtl.StateMachine: Controller GoogleDaydreamControllerV1 state change STATE_PREPARING --> STATE_ERROR
02-22 04:20:57.466 11158 27753 W VrCtl.ControllerService: No controller found since the restart.
02-22 04:20:57.466 11158 27753 I VrCtl.ListenersManager: Controller GoogleDaydreamControllerV1 state updated to: SCANNING
02-22 04:20:57.467 11158 11158 I VrCtl.ControllerService: Not launching recovery flow for controller: GoogleDaydreamControllerV1 missingTimeMillis: 0
02-22 04:20:57.467 11158 27753 I VrCtl.ListenersManager: Controller GoogleDaydreamControllerV1 state updated to: DISCONNECTED

The post-failure screenshot shows that something's clearly wrong, as the content quad is completely black https://storage.cloud.google.com/chromium-result-details/f20440473962d8e4f619f5b7e5d6e3292fba01f1

Trying to reproduce this issue locally on O resulted in the two other failures.

If I run the test while the phone is in landscape mode, the browser crashes due to hitting the OnMainThread() DCHECK in VrGLThread::ShowExitVrPrompt at https://cs.chromium.org/chromium/src/chrome/browser/android/vr_shell/vr_gl_thread.cc?q=vr_gl_thread.cc&sq=package:chromium&dr&l=363. This is weird because we shouldn't need to show the exit prompt during the test.

If I run the test while the phone is in portrait mode, the history page is clearly messed up (super zoomed in), and the test fails due to:

java.lang.AssertionError: Two navigations showed up in history expected:<2> but was:<1>

This sort of makes sense, as only one history item is actually being shown (the way we check the number of history items might be affected by what's being actually displayed), but the history page weirdness that causes that is unexpected.
 
The history page weirdness and two separate failure cases based on orientation also reproduces locally on a Pixel 2 with O.

This is on ToT.
The zoom effect seems to be caused by different screen sizes being reported.

In portrait, it's 356 x 238. In landscape, it's 632 x 431. In both cases, the browser window size is reported as 980 x 656.
Suspected build where the screen size issue was introduced was https://ci.chromium.org/buildbot/chromium.android/Nougat%20Phone%20Tester/3805, as the crash doesn't occur at any point before that. However, none of the CLs in that range look suspicious, and I'm unable to bisect since I get linker errors when building from around that time.
Owner: bsheedy@chromium.org
Status: Started (was: Available)
Project Member

Comment 5 by bugdroid1@chromium.org, Feb 23 2018

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

commit c7485d8253a3d67f5622c27879aeed842dd1738f
Author: bsheedy <bsheedy@chromium.org>
Date: Fri Feb 23 20:48:29 2018

Fix two VR browser bugs

Fixes two unrelated bugs that were causing
VrShellNavigationTest#test2dTo2d to fail in different ways.

The first is that, at least with the DON flow skipped, it's possible to
get into the VR browser before we switch orientation to landscape, which
results in incorrect screen dimensions and thus reported screen size.
This is fixed by manually swapping width and height in this case.

The second is that we could hit a DCHECK in native code for running on
the UI thread when calling requestToExitVr. This is fixed by running the
onClick that triggers this on the UI thread.

Bug:  814934 
Change-Id: Id3ec37f11beca833588b8bec4bfab4e84aaae1ab
Reviewed-on: https://chromium-review.googlesource.com/935185
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Reviewed-by: Michael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/master@{#538889}
[modify] https://crrev.com/c7485d8253a3d67f5622c27879aeed842dd1738f/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellImpl.java
[modify] https://crrev.com/c7485d8253a3d67f5622c27879aeed842dd1738f/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellNavigationTest.java

Project Member

Comment 6 by bugdroid1@chromium.org, Feb 27 2018

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

commit 43043b29c0cd9de8f3fd121c7c3c59117338a82c
Author: Michael Thiessen <mthiesse@chromium.org>
Date: Tue Feb 27 00:29:24 2018

Short-circuit link opening on History page when within ChromeActivity.

VR doesn't like things starting 2D Activities, which is how the History
page opens its links (by starting the LauncherActivity to do the
routing).

This CL changes the behaviour when the History page is not loaded as a
separate Activity to short-circuit the Intent sending and talking to the
tab creator/tab directly.

Bug:  814934 
Change-Id: Ib1c2bf8e7521e1c54a8c70195a8b2ade83c0483b
Reviewed-on: https://chromium-review.googlesource.com/935263
Reviewed-by: Maria Khomenko <mariakhomenko@chromium.org>
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/master@{#539342}
[modify] https://crrev.com/43043b29c0cd9de8f3fd121c7c3c59117338a82c/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java

This all fixed now Brian?
Status: Fixed (was: Started)
Looks like it.
Labels: M-66 Test-Complete
Labels: VR-Caught-By-Test
Components: Internals>XR
Labels: -VR-Caught-By-Test XR-Caught-By-Test

Sign in to add a comment