Expand inline diffs based on user preference

If a user has enabled the expand inline diffs preference, the file list
expands the file inline instead of opening a diff view. The toggle arrow
is also hidden when this preference is selected.

Feature: Issue 5115
Change-Id: I814d7dfff0348a8a315c992c0259810fcbc4704f
This commit is contained in:
Becky Siegel
2016-12-20 11:52:13 -08:00
parent 0c1cbbfbdf
commit 35e7e0c37a
3 changed files with 41 additions and 10 deletions

View File

@@ -232,7 +232,8 @@ limitations under the License.
[[_computeFileStatus(file.status)]]
</div>
<a class$="[[_computePathClass(file.__expanded)]]"
href$="[[_computeDiffURL(changeNum, patchRange, file.__path)]]">
href$="[[_computeDiffURL(changeNum, patchRange, file.__path)]]"
on-click="_handleFileClick">
<div title$="[[_computeFileDisplayName(file.__path)]]"
class="fullFileName">
[[_computeFileDisplayName(file.__path)]]
@@ -265,7 +266,7 @@ limitations under the License.
[[_formatPercentage(file.size, file.size_delta)]]
</span>
</div>
<div class="show-hide">
<div class="show-hide" hidden$="[[_userPrefs.expand_inline_diffs]]">
<label class="show-hide">
<input type="checkbox" class="show-hide"
checked$="[[!file.__expanded]]" data-path$="[[file.__path]]"

View File

@@ -312,6 +312,15 @@
});
},
_handleFileClick: function(e) {
// If the user prefers to expand inline diffs rather than opening the diff
// view, intercept the click event.
if (this._userPrefs && this._userPrefs.expand_inline_diffs) {
e.preventDefault();
this._handleHiddenChange(e);
}
},
_handleShiftLeftKey: function(e) {
if (this.shouldSuppressKeyboardShortcut(e)) { return; }
if (!this._showInlineDiffs) { return; }

View File

@@ -617,14 +617,6 @@ limitations under the License.
assert.isNotOk(element.$$('.expanded'));
});
test('expanded attribute set on path when expanded', function() {
element._files = [
{__path: '/COMMIT_MSG', __expanded: true},
];
flushAsynchronousOperations();
assert.isOk(element.$$('.expanded'));
});
test('_getDiffViewMode', function() {
// No user prefs or diff view mode set.
assert.equal(element._getDiffViewMode(), 'SIDE_BY_SIDE');
@@ -638,5 +630,34 @@ limitations under the License.
assert.equal(element._getDiffViewMode(
element.diffViewMode, element._userPrefs), 'SIDE_BY_SIDE');
});
test('expand_inline_diffs user preference', function() {
element._files = [
{__path: '/COMMIT_MSG', __expanded: false},
];
element.changeNum = '42';
element.patchRange = {
basePatchNum: 'PARENT',
patchNum: '2',
};
flushAsynchronousOperations();
var commitMsgFile = Polymer.dom(element.root)
.querySelectorAll('.row:not(.header) a')[0];
// Remove href attribute so the app doesn't route to a diff view
commitMsgFile.removeAttribute('href');
var hiddenChangeSpy = sandbox.spy(element, '_handleHiddenChange');
MockInteractions.tap(commitMsgFile);
flushAsynchronousOperations();
assert(hiddenChangeSpy.notCalled, 'file is opened as diff view');
assert.isNotOk(element.$$('.expanded'));
element._userPrefs = {expand_inline_diffs: true};
flushAsynchronousOperations();
MockInteractions.tap(commitMsgFile);
flushAsynchronousOperations();
assert(hiddenChangeSpy.calledOnce, 'file is expanded');
assert.isOk(element.$$('.expanded'));
});
});
</script>