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

Issue 888964 link

Starred by 2 users

Issue metadata

Status: ExternalDependency
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Video shifts downwards from its original position after exiting from fullscreen mode in "Bing Search" app.

Reported by pshi...@etouch.net, Sep 25

Issue description

Device name:Pixel 2 XL/ PPR2.180905.005,Pixel XL/OPM2.171019.029,Htc Desire 630/MMB29M,Samsung Galaxy J5/MMB29M,Samsung Galaxy J2/LMY47X
WebView version: 71.0.3561.0
Application: Bing Search
Application version: 9.0.26237502

Test URL: https://m.youtube.com

Bisect Information:
Per-Version bisect information:
Good build: 71.0.3544.0
Bad build:  71.0.3545.0

Regression range: https://chromium.googlesource.com/chromium/src/+log/71.0.3544.0..71.0.3545.0?pretty=fuller&n=10000

Steps to reproduce:
(1)Launch Bing search,Navigate to Test URL
(2)Play any video and tap on fullscreen icon and then exit from fullscreen
(3)Repeat step 2 twice and observe.

Actual result: Video shifts downwards from its original position after exiting from fullscreen mode.

Expected result: Video should play properly in its original position after exiting from fullscreen mode.
 
Labels: -Pri-3 hasbisect-per-revision RegressedIn-71 ReleaseBlock-Stable Target-71 M-71 FoundIn-71 Pri-1 Type-Bug-Regression
Owner: dtapu...@chromium.org
Status: Assigned (was: Unconfirmed)
Please find the log and Video @ http://go/chrome-androidlogs1/8/888964
Per-CL bisect information:
Good commit:589184
Bad commit:589185

Suspect CL:
https://chromium.googlesource.com/chromium/src/+/62898a131761fbeeac3f2b2f7c2c0512f7ca14a9

dtapuska@  Might be it looks like this issue is related to your change. please look into once, if its not related to your change please reassign back to me. 

Thanks!
Cc: boliu@chromium.org liber...@chromium.org
Bo, Frank any ideas? I can occasionally reproduce this on a Nexus 5 but always on a Pixel2. Seems like a timing issue and the position of layers. It fixes upon rotation.
i suggest turning off overlays (--disable-features=overlay-fullscreen-video) and see if it still happens.
Oh, no sorry those are other switches. Will try disabling it for webview...
It still happens with setting that flag to disable overlay fullscreen video
sorry, i missed that this was webview.  yeah, it's off for webview all the time.

not sure.  a few things come to mind:

- full screen transitions can push a scroll offset to the impl side of the cc tree, if i remember.  maybe something's going wrong there.  not sure why it would affect the video layer only, though.

- full screen transitions in the browser roughly start here, to send the updates to the renderer: https://cs.chromium.org/chromium/src/content/browser/renderer_host/render_widget_host_view_android.cc?rcl=9ed601294506de71433e1cb9c32a2d33cce558d2&l=1225 .  it might be interesting to compare the order of calls between a 'working' and 'non-working' transition.
caveat: this was a long time ago, and i think i've actively tried to forget how it all worked.  :)
Wow that looks odd. Webview disables kUseSurfaceLayerForVideo as well, in case that matters. This looks to be blink putting the video in the wrong place (assuming no compositing bug)? I have no knowledge at all about blink things..
Cc: chrishtr@chromium.org e...@chromium.org
eae@ can I get some help form a layout perspective? I don't believe it is a CC issue but actually a layout issue. I find that when I set the "object-fit: fill" style on the video element it works correctly. Alternatively I can set the "top: -516px" or so to move it up and it renders correctly.

I'm not sure if this is a site issue or a layout issue. Being that it works sometimes and not others I wonder if it is a layout issue. I'll try comparing styles when it works and when it doesn't. 
I don't suppose there is any way to reproduce this without a Pixel 2 device and the Bing app?

I went through all changes in the regression range and the following two stand out:

- r589275 Changes how scroll positions are computed and is the only layout
          change in the regression range.
          https://chromium-review.googlesource.com/1181644

- r589190 Changes how scroll positions are restored on existing fullscreen.
          https://chromium-review.googlesource.com/1195714

The second one in particular seems relevant.
The change clearly bisects to my change enabling the feature flag. But I believe that this actually reveals a possible race (or problem handling the Pseudo Fullscreen selector)

It occurs on a Nexus 5 as well but only in the bing app. I'm working on dumping the layout tree cause devtools doesn't reveal much to me.
Cc: szager@chromium.org
Ah, didn't realize that. Thanks for the clarification.

It's certainly possible that the timing of the scroll computation is incorrect after exiting fullscreen, this code is sadly full of life-cycle violations. Enabling the feature might very well have triggered a code-path that wasn't executed before and thereby surfaced an existing problem.

szager (cc:ed) is the person with the best grasp of these things.

Debugging inside of webview, in the bing app, on an external device certainly makes for an interesting challenge!

Hmm.. looks like it is the height of the video layer..

When it fails:
layer at (0,144) size 1080x1548 backgroundClip at (0,144) size 1080x608 clip at (0,144) size 1080x608
  LayoutVideo (positioned) {VIDEO} at (0,0) size 1080x1548

When it is working:

layer at (0,144) size 1080x609 backgroundClip at (0,144) size 1080x608 clip at (0,144) size 1080x608
  LayoutVideo (positioned) {VIDEO} at (0,0) size 1080x609

Yet the style specifically has height: 516px applied to it.




Cc: dtapu...@chromium.org
Owner: szager@chromium.org
szager@ do you mind taking a look based on comment #15. I'm OOO for a few days.
The video element has an inline style declaration that sets its width. The page script has a resize event handler that runs code to update that value. So, I think this needs to be fixed in javascript. I cross-filed this in YouTube's bug tracker:

b/117182231
Status: ExternalDependency (was: Assigned)
Cc: leslierogers@google.com
Labels: -Restrict-View-Google
Re comment #17 -- it's the inline style 'height' value that is problematic, not 'width'.
Labels: -ReleaseBlock-Stable -RegressedIn-71
Removing the RegressedIn and ReleaseBlock flags; this needs to be fixed on the YouTube side.
Issue 907431 has been merged into this issue.

Sign in to add a comment