Merge "Estimate render times for file list rows"
This commit is contained in:
@@ -283,6 +283,7 @@ limitations under the License.
|
||||
as="file"
|
||||
initial-count="[[fileListIncrement]]"
|
||||
target-framerate="1">
|
||||
[[_reportRenderedRow(index)]]
|
||||
<div class="stickyArea">
|
||||
<div class$="file-row row [[_computePathClass(file.__path, _expandedFilePaths.*)]]"
|
||||
data-path$="[[file.__path]]" tabindex="-1">
|
||||
|
@@ -26,6 +26,8 @@
|
||||
const SIZE_BAR_GAP_WIDTH = 1;
|
||||
const SIZE_BAR_MIN_WIDTH = 1.5;
|
||||
|
||||
const RENDER_TIME = 'FileListRenderTime';
|
||||
|
||||
const FileStatus = {
|
||||
A: 'Added',
|
||||
C: 'Copied',
|
||||
@@ -797,6 +799,12 @@
|
||||
_computeFilesShown(numFilesShown, files) {
|
||||
const filesShown = files.base.slice(0, numFilesShown);
|
||||
this.fire('files-shown-changed', {length: filesShown.length});
|
||||
|
||||
// Start the timer for the rendering work hwere because this is where the
|
||||
// _shownFiles property is being set, and _shownFiles is used in the
|
||||
// dom-repeat binding.
|
||||
this.$.reporting.time(RENDER_TIME);
|
||||
|
||||
return filesShown;
|
||||
},
|
||||
|
||||
@@ -1175,5 +1183,21 @@
|
||||
_noDiffsExpanded() {
|
||||
return this.filesExpanded === GrFileListConstants.FilesExpandedState.NONE;
|
||||
},
|
||||
|
||||
/**
|
||||
* Method to call via binding when each file list row is rendered. This
|
||||
* allows approximate detection of when the dom-repeat has completed
|
||||
* rendering.
|
||||
* @param {number} index The index of the row being rendered.
|
||||
* @return {string} an empty string.
|
||||
*/
|
||||
_reportRenderedRow(index) {
|
||||
if (index === this._shownFiles.length - 1) {
|
||||
this.async(() => {
|
||||
this.$.reporting.timeEnd(RENDER_TIME);
|
||||
}, 1);
|
||||
}
|
||||
return '';
|
||||
},
|
||||
});
|
||||
})();
|
||||
|
@@ -127,6 +127,19 @@ limitations under the License.
|
||||
assert.isTrue(controlRow.classList.contains('invisible'));
|
||||
});
|
||||
|
||||
test('rendering each row calls the _reportRenderedRow method', () => {
|
||||
const renderedStub = sandbox.stub(element, '_reportRenderedRow');
|
||||
element._filesByPath = _.range(10)
|
||||
.reduce((_filesByPath, i) => {
|
||||
_filesByPath['/file' + i] = {lines_inserted: 9};
|
||||
return _filesByPath;
|
||||
}, {});
|
||||
flushAsynchronousOperations();
|
||||
assert.equal(
|
||||
Polymer.dom(element.root).querySelectorAll('.file-row').length, 10);
|
||||
assert.equal(renderedStub.callCount, 10);
|
||||
});
|
||||
|
||||
test('calculate totals for patch number', () => {
|
||||
element._filesByPath = {
|
||||
'/COMMIT_MSG': {
|
||||
|
Reference in New Issue
Block a user