New issue
Advanced search Search tips

Issue 840481 link

Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 8
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug
Q3



Sign in to add a comment

Empty bottom sheet appears after exiting VR

Project Member Reported by mdjones@chromium.org, May 7 2018

Issue description

The bottom sheet is incorrectly being triggered after exiting vr. It looks to be a problem with the actual bottom sheet rather than an issue with the content since the sheet is completely empty.
 
Status: Started (was: Assigned)
Labels: -Pri-2 Hotlist-EoC-MVP Q2 M-69 zine-triaged O-EoC-Launch KR-Implementation-Complete Pri-1
Project Member

Comment 3 by bugdroid1@chromium.org, May 10 2018

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

commit ef2cb9dc17ac85313f67b0a737a0f4d378e0416a
Author: Matthew Jones <mdjones@chromium.org>
Date: Thu May 10 00:02:41 2018

Don't peek bottom sheet after exiting VR

This patch cleans up more cruft from Chrome Home. The sheet's default
state is no longer peeking, which is what the removed logic assumed.

Bug:  840481 
Change-Id: I4d38144806b87207904f4d354a013f1774457db2
Reviewed-on: https://chromium-review.googlesource.com/1048396
Reviewed-by: Theresa <twellington@chromium.org>
Commit-Queue: Matthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#557384}
[modify] https://crrev.com/ef2cb9dc17ac85313f67b0a737a0f4d378e0416a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java

Status: Fixed (was: Started)
Labels: M-68
Status: Available (was: Fixed)
I'm still seeing this show up after exiting WebVR on today's Canary (69.0.3441.0)
Status: Assigned (was: Available)
Cc: mthiesse@chromium.org
I haven't been able to reproduce the empty sheet. I can make the sheet show using the following steps:

- Trigger EoC on some page
- Go to tab with vr.chromeexperiments.com
- Enter VR
- Exit VR

The sheet then shows with VR related content. That particular issue looks to be on the side of EoC triggering since fullscreen updates the browser controls. Are you seeing something different?
vr.chromeexperiments.com doesn't actually use WebVR :/ Long story.

Can you try instead with https://webvr.info/samples/03-vr-presentation.html?

(if it doesn't ask you to go through headset insertion and controller pairing, it isn't actually webVR and is probably just using the Cardboard headset polyfill)
Cc: tiborg@chromium.org dougman@chromium.org vsupruniuk@google.com
 Issue 843178  has been merged into this issue.
Labels: -Q2 -O-EoC-Launch -KR-Implementation-Complete O-EoC-Experiment KR-Omnibox-Entry-Point Q3
Is this still reproducible? If so, can it be repro'ed with the new toolbar button?
Still reproducible when exiting VR. Don't know about the new toolbar button.
Instructions for switching to the toolbar button:

1. Use Chrome version 69.0.3489.0+
2. Go to chrome://flags and enable "Chrome Modern Design" and "Contextual Suggestions Button" flags. Make sure "Contextual Suggestions Bottom Sheet" is disabled.
3. Restart Chrome twice

Labels: -Pri-1 -M-69 -M-68 Pri-2
Lowering the priority until we have a launch target for EoC.
 Issue 884806  has been merged into this issue.
This is still happening in Canary, but not in ToT. What is the related flag?
Labels: -Pri-2 M-71 Pri-1
"Contextual Suggestions Button" is the related flag.

We have a launch target now (M71) so bumping the priority back up. We should figure out if this is still happening and if so investigate a fix.
Cc: klausw@chromium.org
This is reproducible for me on ToT, including the proposed https://crrev.com/c/1263568 that's intended to fix the bottom-margin issue from issue 884803.

For the record, the flag names have changed since the comment #13 instructions, I've enabled the following:
 
 "Chrome Duet" mode: chrome://flags#enable-chrome-duet
 "Contextual Suggestions Button": chrome://flags#contextual-suggestions-button

FWIW, if I drag the white sheet upwards, I get a crash in BottomSheet.java:

10-05 11:52:34.164  1162  1162 I ActivityManager: Config changes=200 {1.0 ?mcc?mnc [en_US] ldltr sw392dp w737dp h368dp 440dpi nrml long hdr widecg land finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2028) mAppBounds=Rect(0, 0 - 2028, 1080) mWindowingMode=fullscreen mActivityType=undefined} android.arch.lifecycle.ReflectiveGenericLifecycleObserver$MethodReference.75}
10-05 11:52:34.174  3865  3881 E libc    : Access denied finding property "vendor.debug.egl.changepixelformat"
10-05 11:52:34.210  1162  1162 I ActivityManager: Override config changes=20000200 {1.0 ?mcc?mnc [en_US] ldltr sw392dp w737dp h368dp 440dpi nrml long hdr widecg land finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2028) mAppBounds=Rect(0, 0 - 2028, 1080) mWindowingMode=fullscreen mActivityType=undefined} s.75} for displayId=0
10-05 11:52:34.393  3778  3778 E cr_BkgrdTaskJS: Tried finishing non-current BackgroundTask.
10-05 11:52:36.740  3778  3778 D AndroidRuntime: Shutting down com.google.android.libraries.feed.sharedstream.offlinemonitor.StreamOfflineMonitor$$Lambda$0
10-05 11:52:36.747  3778  3778 E AndroidRuntime: FATAL EXCEPTION: main
10-05 11:52:36.747  3778  3778 E AndroidRuntime: Process: org.chromium.chrome, PID: 3778
10-05 11:52:36.747  3778  3778 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'int bNl.i()' on a null object reference
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.setInternalCurrentState$255f295(BottomSheet.java:1331)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.access$000(BottomSheet.java:66)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.access$002(BottomSheet.java:66)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.access$1000(BottomSheet.java:66)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.access$1100(BottomSheet.java:66)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.access$1402(BottomSheet.java:66)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.access$1500$13ad29a8(BottomSheet.java:66)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at org.chromium.chrome.browser.widget.bottomsheet.BottomSheet$6.onAnimationEnd(BottomSheet.java:1058)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.animation.Animator$AnimatorListener.onAnimationEnd(Animator.java:552)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.animation.ValueAnimator.endAnimation(ValueAnimator.java:1232)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1474)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.animation.AnimationHandler.doAnimationFrame(AnimationHandler.java:146)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.animation.AnimationHandler.access$100(AnimationHandler.java:37)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.animation.AnimationHandler$1.doFrame(AnimationHandler.java:54)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:947)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:761)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:693)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
10-05 11:52:36.747  3778  3778 E AndroidRuntime: at android.os.Looper.loop(Looper.java:193)

Also, if I disable "Contextual Suggestions Button", I don't get the white sheet and don't get a crash, the bottom controls appear and work normally after exiting VR.
Labels: ReleaseBlock-Stable
Sounds like we need to fix this before launch.
Here's the repro steps I'm using:

- Daydream-compatible phone + Daydream View headset required. Launch the Daydream app and confirm that Daydream Home works in VR mode. If it's showing the VR tutorial, you can bypass that by looking down and pressing the "X" button.

- exit Daydream Home to get back to 2D mode.

- enable the following flags in a ToT Chromium build:
 
 "Chrome Duet" mode: chrome://flags#enable-chrome-duet
 "Contextual Suggestions Button": chrome://flags#contextual-suggestions-button

- Open any web page in Chromium, for example wikipedia.org. Does not need to be a WebVR/WebXR page.

- Place the phone in the Daydream Home viewer. NFC should trigger Daydream View mode and show the Chrome browser page in VR Browsing mode as a floating window.

- Alternatively to the previous step, if NFC doesn't work, launch Daydream Home, and launch Chromium from the "Library" page.

- Remove the phone from the Daydream View, and swipe the right edge of the screen to show the Back button. Press the Back button.

- Chrome should return to 2D mode, with the unexpected white bar at the bottom covering the bottom navigation buttons.

- Optionally, swipe up the white bar to check for a crash.

For completeness, here's my args.gn:

ffmpeg_branding = "Chrome"
is_component_build = false
is_debug = false
is_official_build = true
proprietary_codecs = true
symbol_level = 1
target_cpu = "arm"
target_os = "android"
is_chrome_branded = true
use_goma = true
enable_resource_whitelist_generation = false

Build target is "chrome_public_apk".
FWIW, I've been testing in normal Daydream View mode including the VR entry screen. If I set the "Skip VR entry screens" developer option in Daydream, it doesn't reproduce as consistently. While that option may speed up testing, I think it may produce false negatives.
Project Member

Comment 23 by bugdroid1@chromium.org, Oct 5

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

commit d41e88bdbb91ec59f6bc3b5dd589b76d85d9adb2
Author: Matthew Jones <mdjones@chromium.org>
Date: Fri Oct 05 23:39:54 2018

Prevent VR from peeking bottom sheet

This patch removes some old Chrome Home code that caused the bottom
sheet to peek when exiting VR. Instead, the BottomSheetController now
listens to VR events and suppresses the sheet if necessary.

Bug:  840481 
Change-Id: Iad8e20cd9876c2487150eac69693bac60266dee5
Reviewed-on: https://chromium-review.googlesource.com/c/1265834
Commit-Queue: Matthew Jones <mdjones@chromium.org>
Reviewed-by: Theresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#597368}
[modify] https://crrev.com/d41e88bdbb91ec59f6bc3b5dd589b76d85d9adb2/chrome/android/java/src/org/chromium/chrome/browser/vr/VrShell.java
[modify] https://crrev.com/d41e88bdbb91ec59f6bc3b5dd589b76d85d9adb2/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java
[modify] https://crrev.com/d41e88bdbb91ec59f6bc3b5dd589b76d85d9adb2/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetController.java

Status: Fixed (was: Assigned)

Sign in to add a comment