Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Issue 1461463002: Reland fix for thumbnail generation. (Closed)

Created:
5 years, 1 month ago by shrike
Modified:
4 years, 11 months ago
Reviewers:
Lei Zhang, miu, ccameron
CC:
chromium-reviews, yusukes+watch_chromium.org, shuchen+watch_chromium.org, jam, sievers+watch_chromium.org, jbauman+watch_chromium.org, nona+watch_chromium.org, darin-cc_chromium.org, kalyank, piman+watch_chromium.org, danakj+watch_chromium.org, James Su, miu+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Reland fix for thumbnail generation. This is an attempted relanding of https://codereview.chromium.org/1348833003, which was reverted in https://codereview.chromium.org/1450083002 . This cl includes changes to address the problem in https://crbug.com/555576 . It turns out that DecrementCapturerCount() can trigger a call to content::WebContentsImpl::WasHidden(), which eventually calls ThumbnailTabHelper::UpdateThumbnailIfNecessary(), starting the thumbnail generation process all over again. It also appears that the bitmap capture operation is not necessarily synchronous, so calling DecrementCapturerCount() anywhere within ProcessCapturedBitmap() potentially disposes of the web contents before the thumbnail has been captured. This new cl differs from the original (1348833003) only in thumbnail_tab_helper.cc, where I now unregister the ThumbnailTabHelper from further notifications within UpdateThumbnailIfNecessary(), and call DecrementCapturerCount() once the final callback is completely finished with the web contents. BUG=530707 Committed: https://crrev.com/7fb8a56234863c20dc9d2bce31f730152d086dfc Cr-Commit-Position: refs/heads/master@{#370809}

Patch Set 1 #

Total comments: 7

Patch Set 2 : Rework how ignore spurrious thumbnail generation requests. #

Total comments: 9

Patch Set 3 : Tight ownership of context, still ref counted #

Total comments: 11

Patch Set 4 : Fix nits. #

Total comments: 8

Patch Set 5 : Rearrange code, fix error handling. #

Patch Set 6 : Change variable name. #

Patch Set 7 : Merge changes from tot. #

Patch Set 8 : Rework IsFullscreenForTabOrPending() (per mia@). #

Unified diffs Side-by-side diffs Delta from patch set Stats (+144 lines, -83 lines) Patch
M chrome/browser/thumbnails/thumbnail_tab_helper.h View 1 2 3 4 3 chunks +23 lines, -1 line 0 comments Download
M chrome/browser/thumbnails/thumbnail_tab_helper.cc View 1 2 3 4 4 chunks +111 lines, -75 lines 0 comments Download
M chrome/browser/ui/exclusive_access/fullscreen_controller.cc View 1 2 3 4 5 6 7 1 chunk +3 lines, -2 lines 0 comments Download
M content/browser/compositor/delegated_frame_host.cc View 1 2 3 4 5 3 chunks +6 lines, -4 lines 0 comments Download
M content/browser/renderer_host/render_widget_host_view_mac.mm View 1 2 3 4 5 6 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 60 (21 generated)
shrike
thestig - the only changes to this cl are in thumbnail_tab_helper.cc (please see my comments ...
5 years, 1 month ago (2015-11-18 17:36:26 UTC) #4
Lei Zhang
On 2015/11/18 17:36:26, shrike wrote: > thestig - the only changes to this cl are ...
5 years, 1 month ago (2015-11-18 17:38:48 UTC) #5
shrike
On 2015/11/18 17:38:48, Lei Zhang wrote: > On 2015/11/18 17:36:26, shrike wrote: > > thestig ...
5 years, 1 month ago (2015-11-18 17:41:54 UTC) #6
shrike
On 2015/11/18 17:41:54, shrike wrote: > On 2015/11/18 17:38:48, Lei Zhang wrote: > > Will ...
5 years, 1 month ago (2015-11-18 17:44:49 UTC) #7
Lei Zhang
On 2015/11/18 17:44:49, shrike wrote: > On 2015/11/18 17:41:54, shrike wrote: > > On 2015/11/18 ...
5 years, 1 month ago (2015-11-18 17:56:04 UTC) #8
Lei Zhang
https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode67 chrome/browser/thumbnails/thumbnail_tab_helper.cc:67: DCHECK_CURRENTLY_ON(content::BrowserThread::UI); This generally should be at the top of ...
5 years, 1 month ago (2015-11-18 18:06:43 UTC) #9
shrike
https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode67 chrome/browser/thumbnails/thumbnail_tab_helper.cc:67: DCHECK_CURRENTLY_ON(content::BrowserThread::UI); On 2015/11/18 18:06:43, Lei Zhang wrote: > This ...
5 years, 1 month ago (2015-11-18 18:20:16 UTC) #10
Lei Zhang
https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode67 chrome/browser/thumbnails/thumbnail_tab_helper.cc:67: DCHECK_CURRENTLY_ON(content::BrowserThread::UI); On 2015/11/18 18:20:16, shrike wrote: > On 2015/11/18 ...
5 years, 1 month ago (2015-11-18 18:24:00 UTC) #11
shrike
https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode217 chrome/browser/thumbnails/thumbnail_tab_helper.cc:217: registrar_.RemoveAll(); On 2015/11/18 18:24:00, Lei Zhang wrote: > On ...
5 years, 1 month ago (2015-11-18 19:18:06 UTC) #12
Lei Zhang
On 2015/11/18 19:18:06, shrike wrote: > https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc > File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): > > https://codereview.chromium.org/1461463002/diff/1/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode217 > ...
5 years, 1 month ago (2015-11-18 23:01:40 UTC) #13
shrike
OK thestig, PTAL.
5 years, 1 month ago (2015-11-19 22:41:09 UTC) #14
Lei Zhang
There's probably a couple ways to better workout the lifetime or ThumbnailingContext and ThumbnailTabHelper, so ...
5 years, 1 month ago (2015-11-20 20:01:04 UTC) #15
Lei Zhang
https://codereview.chromium.org/1461463002/diff/20001/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/20001/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode60 chrome/browser/thumbnails/thumbnail_tab_helper.cc:60: void DecrementCapturerCount(const ThumbnailingContext& context) { On 2015/11/20 20:01:04, Lei ...
4 years, 11 months ago (2016-01-07 22:15:29 UTC) #16
shrike
https://codereview.chromium.org/1461463002/diff/20001/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/20001/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode60 chrome/browser/thumbnails/thumbnail_tab_helper.cc:60: void DecrementCapturerCount(const ThumbnailingContext& context) { On 2015/11/20 20:01:04, Lei ...
4 years, 11 months ago (2016-01-08 18:32:36 UTC) #17
Lei Zhang
https://codereview.chromium.org/1461463002/diff/40001/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/40001/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode58 chrome/browser/thumbnails/thumbnail_tab_helper.cc:58: thumbnailing_context_(nullptr), no need to explicitly initialize scoped_refptrs. https://codereview.chromium.org/1461463002/diff/40001/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode113 chrome/browser/thumbnails/thumbnail_tab_helper.cc:113: ...
4 years, 11 months ago (2016-01-09 02:14:25 UTC) #18
miu
Approach lgtm (as partial owner of CopyFromBackingStore() and WebContentsImpl::Increment/DecrementCapturerCount()).
4 years, 11 months ago (2016-01-09 03:32:11 UTC) #20
shrike
PTAL https://codereview.chromium.org/1461463002/diff/40001/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/40001/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode58 chrome/browser/thumbnails/thumbnail_tab_helper.cc:58: thumbnailing_context_(nullptr), On 2016/01/09 02:14:24, Lei Zhang wrote: > ...
4 years, 11 months ago (2016-01-11 19:07:08 UTC) #21
Lei Zhang
lgtm https://codereview.chromium.org/1461463002/diff/60001/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/60001/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode140 chrome/browser/thumbnails/thumbnail_tab_helper.cc:140: DCHECK_CURRENTLY_ON(content::BrowserThread::UI); Didn't you have problems with this on ...
4 years, 11 months ago (2016-01-12 01:54:46 UTC) #22
Lei Zhang
https://codereview.chromium.org/1461463002/diff/60001/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/60001/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode129 chrome/browser/thumbnails/thumbnail_tab_helper.cc:129: context.service->SetPageThumbnail(context, image); And funny indentation here.
4 years, 11 months ago (2016-01-12 02:18:43 UTC) #23
shrike
PTAL https://codereview.chromium.org/1461463002/diff/60001/chrome/browser/thumbnails/thumbnail_tab_helper.cc File chrome/browser/thumbnails/thumbnail_tab_helper.cc (right): https://codereview.chromium.org/1461463002/diff/60001/chrome/browser/thumbnails/thumbnail_tab_helper.cc#newcode129 chrome/browser/thumbnails/thumbnail_tab_helper.cc:129: context.service->SetPageThumbnail(context, image); On 2016/01/12 02:18:43, Lei Zhang wrote: ...
4 years, 11 months ago (2016-01-12 19:52:39 UTC) #24
Lei Zhang
++lgtm
4 years, 11 months ago (2016-01-12 20:22:28 UTC) #25
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1461463002/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1461463002/80001
4 years, 11 months ago (2016-01-13 16:40:48 UTC) #28
commit-bot: I haz the power
Try jobs failed on following builders: ios_dbg_simulator_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator_ninja/builds/116401) ios_rel_device_ninja on tryserver.chromium.mac (JOB_FAILED, ...
4 years, 11 months ago (2016-01-13 16:42:40 UTC) #30
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1461463002/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1461463002/80001
4 years, 11 months ago (2016-01-13 16:48:51 UTC) #32
commit-bot: I haz the power
Try jobs failed on following builders: ios_dbg_simulator_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator_ninja/builds/116405) ios_rel_device_ninja on tryserver.chromium.mac (JOB_FAILED, ...
4 years, 11 months ago (2016-01-13 16:50:54 UTC) #34
shrike
ccameron - I think I need your lgtm for your changes in content/browser/compositor/delegated_frame_host.cc .
4 years, 11 months ago (2016-01-13 17:03:30 UTC) #35
ccameron
DFH still lgtm. I might vaguely prefer just "skip_frame" instead of "skip_frame_size_mismatch", but it's your ...
4 years, 11 months ago (2016-01-13 23:59:00 UTC) #36
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1461463002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1461463002/100001
4 years, 11 months ago (2016-01-14 18:39:38 UTC) #39
commit-bot: I haz the power
Try jobs failed on following builders: ios_dbg_simulator_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator_ninja/builds/117145) ios_rel_device_ninja on tryserver.chromium.mac (JOB_FAILED, ...
4 years, 11 months ago (2016-01-14 18:43:20 UTC) #41
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1461463002/120001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1461463002/120001
4 years, 11 months ago (2016-01-14 20:00:50 UTC) #44
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_asan_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_asan_rel_ng/builds/102195)
4 years, 11 months ago (2016-01-14 20:56:25 UTC) #46
shrike
Hello miu@, It looks like everything is good with this cl except for an issue ...
4 years, 11 months ago (2016-01-14 21:34:23 UTC) #47
shrike
Hello miu@, Regarding the problem at fullscreen_controller.cc:99 where it's checking for web_contents->GetCapturerCount() == 0, is ...
4 years, 11 months ago (2016-01-15 20:30:42 UTC) #48
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1461463002/140001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1461463002/140001
4 years, 11 months ago (2016-01-21 17:23:22 UTC) #50
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 11 months ago (2016-01-21 18:25:13 UTC) #52
shrike
I spoke with mia@ yesterday and he provided a rewrite of the IsFullscreenForTabOrPending() method that ...
4 years, 11 months ago (2016-01-21 18:45:45 UTC) #53
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1461463002/140001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1461463002/140001
4 years, 11 months ago (2016-01-21 22:33:09 UTC) #56
commit-bot: I haz the power
Committed patchset #8 (id:140001)
4 years, 11 months ago (2016-01-21 22:39:57 UTC) #58
commit-bot: I haz the power
4 years, 11 months ago (2016-01-21 22:41:39 UTC) #60
Message was sent while issue was closed.
Patchset 8 (id:??) landed as
https://crrev.com/7fb8a56234863c20dc9d2bce31f730152d086dfc
Cr-Commit-Position: refs/heads/master@{#370809}

Powered by Google App Engine
This is Rietveld 408576698