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

Issue 809867 link

Starred by 6 users

Issue metadata

Status: Verified
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome
Pri: 1
Type: Bug

Blocking:
issue 806366
issue 835945



Sign in to add a comment

FrameSinkVideoCapturer doesn't capture all updates from child surfaces

Project Member Reported by m...@chromium.org, Feb 7 2018

Issue description

What steps will reproduce the problem?
(1) Build ToT with attached patch.
(2) Install chrome/common/extensions/docs/examples/desktopChooser extension.
(3) Launch (from chrome://extensions) and start capture of the browser window.
(4) In the browser window being captured, play a video (or anything that continuously changes).

What is the expected result?
Continuous capture of updated tab content in result video.

What happens instead?
Capture freezes unless mouse cursor is continuously moved over the browser tab strip. Seems that the tab strip UI causes browser window composites that then allow capture of the updated tab content (which is in a child frame sink).
 
aura_window_video_capture_device.diff
14.4 KB Download

Comment 1 by m...@chromium.org, Mar 15 2018

Status: Started (was: Assigned)
Project Member

Comment 2 by bugdroid1@chromium.org, Mar 20 2018

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

commit fab9f78151c81b9243405e6b8b815234a430f627
Author: Yuri Wiitala <miu@chromium.org>
Date: Tue Mar 20 22:16:38 2018

FrameSinkVideoCapture: BeginFrameArgs→DisplayScheduler timestamps

In order to support capture of damage caused by child frame sinks, this
change plumbs-through timestamps from the DisplayScheduler, through the
SurfaceAggregator, and ultimately to CompostiorFrameSinkSupport and the
FrameSinkVideoCapturer; to provide "expected presentation" timestamps.

With this, all the old infrastructure for processing BeginFrameArgs and
caching their timestamps is removed.

Bug:  809867 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I81253b94800f31fe8f4379395bec2fda119ebf9a
Reviewed-on: https://chromium-review.googlesource.com/967601
Commit-Queue: Yuri Wiitala <miu@chromium.org>
Reviewed-by: Eric Seckler <eseckler@chromium.org>
Reviewed-by: Fady Samuel <fsamuel@chromium.org>
Reviewed-by: Saman Sami <samans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544554}
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/display/display.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/display/display_scheduler.h
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/display/surface_aggregator.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/display/surface_aggregator.h
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/display/surface_aggregator_perftest.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/display/surface_aggregator_pixeltest.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/display/surface_aggregator_unittest.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/frame_sinks/compositor_frame_sink_support.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/frame_sinks/compositor_frame_sink_support.h
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/frame_sinks/video_capture/capturable_frame_sink.h
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.h
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl_unittest.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/frame_sinks/video_detector_unittest.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/surfaces/surface.cc
[modify] https://crrev.com/fab9f78151c81b9243405e6b8b815234a430f627/components/viz/service/surfaces/surface.h

Comment 3 by m...@chromium.org, Mar 20 2018

Status: Fixed (was: Started)

Comment 4 by m...@chromium.org, Apr 26 2018

Issue 836065 has been merged into this issue.

Comment 5 by m...@chromium.org, Apr 26 2018

Labels: Merge-Request-66
Given that two users are seeing bugs for two separate major web sites in M66, I'm requesting a merge to stable. See  bug 835945  and bug 836065 for use cases.

FWIW, I would have requested the merge long ago, but I didn't realize the impact severity of the bug at the time I fixed it. It seems I've grossly underestimated that.
Project Member

Comment 6 by sheriffbot@chromium.org, Apr 26 2018

Labels: -Merge-Request-66 Merge-Review-66 Hotlist-Merge-Review
This bug requires manual review: Request affecting a post-stable build
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), josafat@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 7 by m...@chromium.org, Apr 26 2018

Blocking: 835945
What is exactly the issue? How prevalent is this issue? M66 is already being promoted to Stable. 
Cc: manoranj...@chromium.org

Comment 10 by m...@chromium.org, Apr 27 2018

Cc: johnpallett@chromium.org
The issue is that tab screen capture is broken for all web sites with cross-origin iframes. The bug only manifests when cross-site isolation is turned on, which seems to be the default now. So far, I've directly received reports that this has broken the screen capture of Google Drive video playback and some extensions (such as useloom.com). So, I expect the problem is much more wide-spread than I originally anticipated and would like to merge the fix for the next M66 stable update.

Comment 11 by m...@chromium.org, Apr 27 2018

Also, it's worth noting that everyone's confirmed the bug is gone in M67 branch, which suggests risk is low (bug is fixed and features are working).
Cc: abdulsyed@chromium.org creis@chromium.org nasko@chromium.org
Labels: s
+ abdulsyed@, creis@ and nasko@, PTAL comment #10. Seems to be related to site isolation.
Labels: -s

Comment 14 by creis@chromium.org, Apr 28 2018

Components: Internals>Sandbox>SiteIsolation
Yes, comment 10 does indicate this is a problem when Site Isolation is turned on.  There's a 5% trial of Site Isolation on M66, but some enterprises also have it enabled by default in M66, which may explain some of the reports.

Given the bake time r544554 has had on M67, the confirmation that it's working in M67, and the prominent impact to users who have Site Isolation enabled, it might make sense to merge to M66 (assuming there's a respin coming for other reasons).
So far there is no M66 respin planned. Are there any client side workarounds that are available until M67? 67 is tentatively planned for stable on May 29th. 

Even though the fix has been baking in M67 for over a month, is it a safe and clean merge to 66?  

Cc: m...@chromium.org
 Issue 835945  has been merged into this issue.

Comment 17 by m...@chromium.org, Apr 30 2018

Unfortunately, there aren't any client-side workarounds, except for website authors to re-design around not using iframes (I wouldn't expect this to be feasible).

I took a look, and based on code changes on trunk between the branch point and the time of the fix, the fix should merge to M66 cleanly. Even if we decide not to respin 66 just for this fix, it might be good to do the merge so that it can go out alongside other, more severe fixes if there are ever any.

Comment 18 by amp@chromium.org, May 2 2018

+1 to miu@ suggestion to merge this to the 66 branch, but not force a respin on it's own and wait until some other required respin (if any) goes out.

If no other respin happens then our guidance will be to direct users to Chrome 67 beta until it becomes stable.
Labels: -Merge-Review-66 Merge-Approved-66
Approving merge for M66. branch:3359 - please note that no respin planned. 

Comment 20 by vi...@useloom.com, May 2 2018

#19 & 18 - if I understand this correctly, this won't get released in M66 unless there's another critical bug that goes out?
#20 - yes

Comment 22 by vi...@useloom.com, May 2 2018

May I ask what the hold off is on the respin? Genuinely asking so I understand the Chrome merge-back process. This is the first time we're actually getting a fix merged back, but it seems ineffective if the code potentially never gets released. Is it a risk mitigation strategy?

Comment 23 by amp@chromium.org, May 3 2018

Cc: hhazen@google.com
 Issue 838734  has been merged into this issue.
Project Member

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

Labels: -merge-approved-66 merge-merged-3359
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191

commit 7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191
Author: Adam Parker <amp@chromium.org>
Date: Thu May 03 17:18:35 2018

Merge 66: FrameSinkVideoCapture: BeginFrameArgs→DisplayScheduler timestamps

In order to support capture of damage caused by child frame sinks, this
change plumbs-through timestamps from the DisplayScheduler, through the
SurfaceAggregator, and ultimately to CompostiorFrameSinkSupport and the
FrameSinkVideoCapturer; to provide "expected presentation" timestamps.

With this, all the old infrastructure for processing BeginFrameArgs and
caching their timestamps is removed.

TBR=miu@chromium.org

(cherry picked from commit fab9f78151c81b9243405e6b8b815234a430f627)

Bug:  809867 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I81253b94800f31fe8f4379395bec2fda119ebf9a
Reviewed-on: https://chromium-review.googlesource.com/967601
Commit-Queue: Yuri Wiitala <miu@chromium.org>
Reviewed-by: Eric Seckler <eseckler@chromium.org>
Reviewed-by: Fady Samuel <fsamuel@chromium.org>
Reviewed-by: Saman Sami <samans@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#544554}
Reviewed-on: https://chromium-review.googlesource.com/1042537
Reviewed-by: Adam Parker <amp@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#795}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/display/display.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/display/display_scheduler.h
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/display/surface_aggregator.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/display/surface_aggregator.h
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/display/surface_aggregator_perftest.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/display/surface_aggregator_pixeltest.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/display/surface_aggregator_unittest.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/frame_sinks/compositor_frame_sink_support.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/frame_sinks/compositor_frame_sink_support.h
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/frame_sinks/video_capture/capturable_frame_sink.h
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.h
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl_unittest.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/frame_sinks/video_detector_unittest.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/surfaces/surface.cc
[modify] https://crrev.com/7292bb3e6a1e6cd89d41aa5f52ecdbf030ba4191/components/viz/service/surfaces/surface.h

Comment 25 by amp@chromium.org, May 4 2018

Cc: amp@chromium.org

Comment 26 by amp@chromium.org, May 14 2018

Status: Verified (was: Fixed)
Looks like there was a respin for Chrome 66 with version 66.0.3359.170 which includes this fix.

I just tested now and it works correctly for videos viewed on Google drive.

Sign in to add a comment