Merge "Do not navigate to Base vs X if X is Base and file is unchanged"
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
index 4b283e8..90a9301 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
@@ -1107,6 +1107,12 @@
           if (!this._path) throw new Error('Missing this._path');
           if (!this._patchRange) throw new Error('Missing this._patchRange');
 
+          if (this._patchRange.basePatchNum === ParentPatchSetNum) {
+            // file is unchanged between Base vs X
+            // hence should not show diff between Base vs Base
+            return;
+          }
+
           this.dispatchEvent(
             new CustomEvent('show-alert', {
               detail: {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
index 8fb9038..382cb2f 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
@@ -129,8 +129,21 @@
         basePatchNum: 'PARENT',
       };
       sinon.stub(element.$.commentAPI, 'loadAll').returns(Promise.resolve({
-        _comments: {'/COMMIT_MSG': [{id: 'c1', line: 10, patch_set: 2,
-          __commentSide: 'left', path: '/COMMIT_MSG'}]},
+        _comments: {'/COMMIT_MSG': [
+          {
+            id: 'c1',
+            line: 10,
+            patch_set: 2,
+            __commentSide: 'left',
+            path: '/COMMIT_MSG',
+          }, {
+            id: 'c3',
+            line: 10,
+            patch_set: 'PARENT',
+            __commentSide: 'left',
+            path: '/COMMIT_MSG',
+          },
+        ]},
         computeCommentCount: () => {},
         computeUnresolvedNum: () => {},
         getPaths: () => {},
@@ -233,15 +246,7 @@
             commentLink: true,
             commentId: 'c1',
           };
-          element._patchRange = {
-            patchNum: '2',
-          };
           sinon.stub(element.$.diffHost, '_commentsChanged');
-          sinon.stub(element, '_getCommentsForPath').returns({
-            left: [{id: 'c1', __commentSide: 'left', line: 10, path:
-              '/COMMIT_MSG'}],
-            right: [{id: 'c2', __commentSide: 'right', line: 11}],
-          });
           element._change = generateChange({revisionsCount: 11});
           return element._paramsChanged.returnValues[0].then(() => {
             assert.isTrue(diffNavStub.lastCall.calledWithExactly(
@@ -249,6 +254,30 @@
           });
         });
 
+    test('unchanged diff Base vs latest from comment does not navigate'
+        , () => {
+          const diffNavStub = sinon.stub(GerritNav, 'navigateToDiff');
+          sinon.stub(element.reporting, 'diffViewDisplayed');
+          sinon.stub(element, '_loadBlame');
+          sinon.stub(element.$.diffHost, 'reload').returns(Promise.resolve());
+          sinon.stub(element, '_isFileUnchanged').returns(true);
+          sinon.spy(element, '_paramsChanged');
+          sinon.stub(element, '_getChangeDetail').returns(Promise.resolve(
+              generateChange({revisionsCount: 11})));
+          element.params = {
+            view: GerritNav.View.DIFF,
+            changeNum: '42',
+            path: '/COMMIT_MSG',
+            commentLink: true,
+            commentId: 'c3',
+          };
+          sinon.stub(element.$.diffHost, '_commentsChanged');
+          element._change = generateChange({revisionsCount: 11});
+          return element._paramsChanged.returnValues[0].then(() => {
+            assert.isFalse(diffNavStub.called);
+          });
+        });
+
     test('_isFileUnchanged', () => {
       let diff = {
         content: [