Refuse to expand skip groups with WHOLE_FILE
Skip groups should always be collapsed,
even if user preferences define file to be
automatically expanded.
Change-Id: I3eeb4b3a3eef13a403c911c941511a31046bc41f
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.ts b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.ts
index 08ea1a6..ab7ab8a 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.ts
@@ -307,8 +307,10 @@
state.lineNums.right + 1
);
- if (this.context !== WHOLE_FILE) {
- const hiddenStart = state.chunkIndex === 0 ? 0 : this.context;
+ const hasSkippedGroup = !!groups.find(g => g.skip);
+ if (this.context !== WHOLE_FILE || hasSkippedGroup) {
+ const contextNumLines = this.context > 0 ? this.context : 0;
+ const hiddenStart = state.chunkIndex === 0 ? 0 : contextNumLines;
const hiddenEnd =
lineCount -
(firstUncollapsibleChunkIndex === chunks.length ? 0 : this.context);
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor_test.js b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor_test.js
index eed5900..ce7a3c4 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor_test.js
@@ -770,6 +770,51 @@
state.lineNums.right + rows.length);
});
+ test('WHOLE_FILE with skip chunks still get collapsed', () => {
+ element.context = WHOLE_FILE;
+ const lineNums = {left: 10, right: 100};
+ const state = {
+ lineNums,
+ chunkIndex: 1,
+ };
+ const skip = 10000;
+ const chunks = [
+ {a: ['foo']},
+ {skip},
+ {ab: rows},
+ {a: ['bar']},
+ ];
+ const result = element._processNext(state, chunks);
+ // Results in one, uncollapsed group with all rows.
+ assert.equal(result.groups.length, 1);
+ assert.equal(result.groups[0].type, GrDiffGroupType.CONTEXT_CONTROL);
+
+ // Skip and ab group are hidden in the same context control
+ assert.equal(result.groups[0].contextGroups.length, 2);
+ const [skippedGroup, abGroup] = result.groups[0].contextGroups;
+
+ // Line numbers are set correctly.
+ assert.deepEqual(
+ skippedGroup.lineRange,
+ {
+ left: {start: lineNums.left + 1, end: lineNums.left + skip},
+ right: {start: lineNums.right + 1, end: lineNums.right + skip},
+ });
+
+ assert.deepEqual(
+ abGroup.lineRange,
+ {
+ left: {
+ start: lineNums.left + skip + 1,
+ end: lineNums.left + skip + rows.length,
+ },
+ right: {
+ start: lineNums.right + skip + 1,
+ end: lineNums.right + skip + rows.length,
+ },
+ });
+ });
+
test('with context', () => {
element.context = 10;
const state = {