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

Issue 647028 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner: ----
Closed: Oct 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Bug

Blocking:
issue 650523



Sign in to add a comment

Scrolling down MD Downloads or MD History makes the DOM grow infinitely

Project Member Reported by esprehn@chromium.org, Sep 14 2016

Issue description

Google Chrome	55.0.2860.0 (Official Build) canary (64-bit)
Revision	d19c087b9bfdf76a8af91e2f0a0e791bf2ffcafa-refs/heads/master@{#418438}
OS	Mac OS X 

What steps will reproduce the problem?
(1) Load chrome://history or chrome://downloads
(2) Scroll down and make the infinite scroller load several more pages.

What is the expected output?

DOM should be virtualized with spacers.

What do you see instead?

DOM grows infinitely, by the time you get a few days back in history the DOM is huge (500+ history-items).

Note that the DOM becoming so big is also making the layout and style very slow. The first page they take 20ms on MBP. By a few pages in I'm seeing 100ms style and layout.

It seems like iron-list is operating in a tumblr like mode, instead of an itunes like mode where the scrollbar doesn't estimate the content height. That seems fine, but we need to unload or recycle items far up the page so the DOM isn't infinitely growing.
 

Comment 1 by dbeam@chromium.org, Sep 14 2016

Cc: egarciad@chromium.org

Comment 2 by dbeam@chromium.org, Sep 14 2016

Cc: calamity@chromium.org tsergeant@chromium.org lshang@chromium.org
Components: UI>Browser>History
Labels: -Pri-2 Proj-MaterialDesign-WebUI Pri-1
Blech. I'm not certain, but I would guess this is related to https://github.com/PolymerElements/iron-list/pull/307
There are two related issues here, seemingly.

1) When we load in new data, it's common for the iron-list to need to stamp an extra item to fill in some space (see screenshot). I'm not exactly sure why this happens, but prior to R417813 it would just stamp a single extra item to fill the space and keep moving.

2) Following R417813, the code which let the iron-list stamp a single extra item has been replaced with code to stamp a bunch of extra items [1]. This is what causes the list to go crazy with synchronously increasing its pool.

I'll keep investigating and try to get a repro outside of MD History.

[1] https://github.com/PolymerElements/iron-list/pull/307/files#diff-b97995700c5da5fa638d0324b5f3f861R956
2w3UuzZ9ZfJ.png
218 KB View Download
Status: ExternalDependency (was: Untriaged)
Repro created, issue filed: https://github.com/PolymerElements/iron-list/issues/315

Comment 6 by dbeam@chromium.org, Sep 27 2016

Blocking: 650523
Project Member

Comment 7 by bugdroid1@chromium.org, Oct 4 2016

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

commit 38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e
Author: dbeam <dbeam@chromium.org>
Date: Tue Oct 04 01:16:33 2016

MD History: update iron-list and dependencies for better scroll performance

R=tsergeant@chromium.org
BUG= 647028 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2386533002
Cr-Commit-Position: refs/heads/master@{#422653}

[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/chrome/browser/resources/md_downloads/crisper.js
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/chrome/browser/resources/md_downloads/vulcanized.html
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/chrome/browser/resources/md_history/app.crisper.js
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/chrome/test/data/webui/md_history/md_history_browsertest.js
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/chrome/test/data/webui/settings/passwords_and_forms_browsertest.js
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/chrome/test/data/webui/settings/settings_passwords_section_browsertest.js
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/third_party/polymer/v1_0/bower.json
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/third_party/polymer/v1_0/components-chromium/iron-list/bower.json
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/third_party/polymer/v1_0/components-chromium/iron-list/iron-list-extracted.js
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/bower.json
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js
[modify] https://crrev.com/38d6995aaeade8b5cc6df9d1c7d3fb9cf6be176e/third_party/polymer/v1_0/components_summary.txt

Status: Fixed (was: ExternalDependency)

Sign in to add a comment