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

Issue 777338 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 3
Type: Bug-Regression



Sign in to add a comment

Regression: Focus does not travel properly through the media controls

Reported by nutan.ga...@etouch.net, Oct 23 2017

Issue description

Chrome Version:  64.0.3247.0 f82a02e15b3f72736818cbc449df901b90622ecd-refs/heads/master@{#510691}
OS: Win(7,8,10), Mac(10.12.6) and Linux(14.04 LTS).

Steps to reproduce:
1. Launch chrome, navigate to https://mounirlamouri.github.io/sandbox/media/dynamic-controls.html
2. Press tab and observe the focus on media controls

Actual: Focus does not travel properly through the media controls
Expected: Focus should travel properly

This is regression issue broken in ‘M-56’, will soon provide bisect info:

Good Build: 56.0.2900.0
Bad Build: 56.0.2901.0

You are probably looking for a change made after 427481 (known good), but no later than 427482 (first known bad).

CHANGELOG URL:

The script might not always return single CL as suspect as some perf builds might get missing due to failure.

https://chromium.googlesource.com/chromium/src/+log/26ce312cc8b3f53dc76df85e45c17bba93685fc3..43de8ce7588866b2ce0eefa9ccf9f570c22f1df7

Suspect: https://chromium.googlesource.com/chromium/src/+/43de8ce7588866b2ce0eefa9ccf9f570c22f1df7

@ericrk: Could you please check whether this is caused with respect to your change, if not please help us in assigning it to the right owner.

 
Actual Video.mov
2.2 MB Download
Expected Video.mov
2.9 MB Download
Labels: hasbisect-per-revision
Status: Assigned (was: Unconfirmed)

Comment 2 by ericrk@chromium.org, Oct 27 2017

Cc: ericrk@chromium.org
Owner: chrishtr@chromium.org
This seems to be a partial raster issue. I can reproduce with either GPU raster or one-copy raster. Zero-copy raster on mac doesn't allow for partial raster and avoids this issue. It seems like the invalidation rects are incorrect.

chrishtr@, can you help triage?
I think the problem is that we are somehow painting an outline stroke at a
subpixel position, and the antialias setting results in it drawing over two
pixels. Therefore the raster invalidation is too small by 1px, since raster
invalidation is not aware of this situation.
Artificially expanding invalidation rects by a 1px outset fixes the problem, as expected.
Trying to create a reduced testcase now without any video in it.
Labels: -Pri-1 Pri-3
SkPicture demonstrating anti-alias bleed across pixels despite apparent pixel
alignment of RRect parameters attached.
layer_2.skp
6.2 KB Download
I finally figured out the bug. The issue is that the tree walk to update overflow does not
properly recurse into subtrees that are not LayoutBlocks or tables/table sections, and in
this case the buttons are underneath a shadowRoot subtree below a <video> element, which is a LayoutReplaced. LayoutReplaced a LayoutBox but not a LayoutBlock.
Project Member

Comment 8 by bugdroid1@chromium.org, Nov 29 2017

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

commit 4cabfbfd5efa0557b64692c1ab10047b1eaec9b5
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Wed Nov 29 23:50:39 2017

Generalize dirty bits and the overflow recalc tree walk to non-blocks.

Currently, it is assumed that all objects are either blocks,
tables or table sections. However, this is not correct, in the
presence of elements underneath a replaced
object's shadow root, since LayoutReplaced is a LayoutBox and not
a LayoutBlock.

Bug:  777338 
Change-Id: Ic83e6f74ff87b6baea6b1cf68d1cd9d841b8080e
Reviewed-on: https://chromium-review.googlesource.com/777845
Reviewed-by: Christian Biesinger <cbiesinger@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#520308}
[add] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/LayoutTests/fast/overflow/overflow-of-video-outline-expected.txt
[add] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/LayoutTests/fast/overflow/overflow-of-video-outline.html
[add] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png
[add] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png
[add] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-of-video-outline-expected.png
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutBlock.cpp
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutBlock.h
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutObject.cpp
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutObject.h
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutTable.cpp
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutTable.h
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp
[modify] https://crrev.com/4cabfbfd5efa0557b64692c1ab10047b1eaec9b5/third_party/WebKit/Source/core/layout/LayoutTableSection.h

Status: Fixed (was: Assigned)

Sign in to add a comment