Refactor navigateToChange to take options

Instead of specifying 5 undefined parameters if we want to do a force
reload, specify the necessary parameter only.

Change-Id: Ibae0a57c29f115ef3fdb5c7d381ff1b350b2775d
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
index 8a28cb1..55c84c1 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -1593,7 +1593,9 @@
       fireAlert(this, 'Base is already selected.');
       return;
     }
-    GerritNav.navigateToChange(this._change, this._patchRange.patchNum);
+    GerritNav.navigateToChange(this._change, {
+      patchNum: this._patchRange.patchNum,
+    });
   }
 
   _handleDiffBaseAgainstLeft() {
@@ -1604,7 +1606,9 @@
       fireAlert(this, 'Left is already base.');
       return;
     }
-    GerritNav.navigateToChange(this._change, this._patchRange.basePatchNum);
+    GerritNav.navigateToChange(this._change, {
+      patchNum: this._patchRange.basePatchNum,
+    });
   }
 
   _handleDiffAgainstLatest() {
@@ -1616,11 +1620,10 @@
       fireAlert(this, 'Latest is already selected.');
       return;
     }
-    GerritNav.navigateToChange(
-      this._change,
-      latestPatchNum,
-      this._patchRange.basePatchNum
-    );
+    GerritNav.navigateToChange(this._change, {
+      patchNum: latestPatchNum,
+      basePatchNum: this._patchRange.basePatchNum,
+    });
   }
 
   _handleDiffRightAgainstLatest() {
@@ -1632,11 +1635,10 @@
       fireAlert(this, 'Right is already latest.');
       return;
     }
-    GerritNav.navigateToChange(
-      this._change,
-      latestPatchNum,
-      this._patchRange.patchNum as BasePatchSetNum
-    );
+    GerritNav.navigateToChange(this._change, {
+      patchNum: latestPatchNum,
+      basePatchNum: this._patchRange.patchNum as BasePatchSetNum,
+    });
   }
 
   _handleDiffBaseAgainstLatest() {
@@ -1651,7 +1653,7 @@
       fireAlert(this, 'Already diffing base against latest.');
       return;
     }
-    GerritNav.navigateToChange(this._change, latestPatchNum);
+    GerritNav.navigateToChange(this._change, {patchNum: latestPatchNum});
   }
 
   _handleToggleChangeStar() {
@@ -2055,14 +2057,9 @@
   loadData(isLocationChange?: boolean, clearPatchset?: boolean): Promise<void> {
     if (this.isChangeObsolete()) return Promise.resolve();
     if (clearPatchset && this._change) {
-      GerritNav.navigateToChange(
-        this._change,
-        undefined,
-        undefined,
-        undefined,
-        undefined,
-        true
-      );
+      GerritNav.navigateToChange(this._change, {
+        forceReload: true,
+      });
       return Promise.resolve();
     }
     this._loading = true;
@@ -2497,7 +2494,7 @@
     );
 
     if (editInfo) {
-      GerritNav.navigateToChange(this._change, EditPatchSetNum);
+      GerritNav.navigateToChange(this._change, {patchNum: EditPatchSetNum});
       return;
     }
 
@@ -2511,28 +2508,21 @@
     ) {
       patchNum = this._patchRange.patchNum;
     }
-    GerritNav.navigateToChange(
-      this._change,
+    GerritNav.navigateToChange(this._change, {
       patchNum,
-      undefined,
-      true,
-      undefined,
-      true
-    );
+      isEdit: true,
+      forceReload: true,
+    });
   }
 
   _handleStopEditTap() {
     assertIsDefined(this._change, '_change');
     if (!this._patchRange)
       throw new Error('missing required _patchRange property');
-    GerritNav.navigateToChange(
-      this._change,
-      this._patchRange.patchNum,
-      undefined,
-      undefined,
-      undefined,
-      true
-    );
+    GerritNav.navigateToChange(this._change, {
+      patchNum: this._patchRange.patchNum,
+      forceReload: true,
+    });
   }
 
   _resetReplyOverlayFocusStops() {
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
index 72cd91e..fbdef64 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
@@ -416,7 +416,7 @@
     assert(navigateToChangeStub.called);
     const args = navigateToChangeStub.getCall(0).args;
     assert.equal(args[0], element._change);
-    assert.equal(args[1], 3 as PatchSetNum);
+    assert.equal(args[1]!.patchNum, 3 as PatchSetNum);
   });
 
   test('_handleDiffAgainstLatest', () => {
@@ -432,8 +432,8 @@
     assert(navigateToChangeStub.called);
     const args = navigateToChangeStub.getCall(0).args;
     assert.equal(args[0], element._change);
-    assert.equal(args[1], 10 as PatchSetNum);
-    assert.equal(args[2], 1 as BasePatchSetNum);
+    assert.equal(args[1]!.patchNum, 10 as PatchSetNum);
+    assert.equal(args[1]!.basePatchNum, 1 as BasePatchSetNum);
   });
 
   test('_handleDiffBaseAgainstLeft', () => {
@@ -449,7 +449,7 @@
     assert(navigateToChangeStub.called);
     const args = navigateToChangeStub.getCall(0).args;
     assert.equal(args[0], element._change);
-    assert.equal(args[1], 1 as PatchSetNum);
+    assert.equal(args[1]!.patchNum, 1 as PatchSetNum);
   });
 
   test('_handleDiffRightAgainstLatest', () => {
@@ -464,8 +464,8 @@
     element._handleDiffRightAgainstLatest();
     assert(navigateToChangeStub.called);
     const args = navigateToChangeStub.getCall(0).args;
-    assert.equal(args[1], 10 as PatchSetNum);
-    assert.equal(args[2], 3 as BasePatchSetNum);
+    assert.equal(args[1]!.patchNum, 10 as PatchSetNum);
+    assert.equal(args[1]!.basePatchNum, 3 as BasePatchSetNum);
   });
 
   test('_handleDiffBaseAgainstLatest', () => {
@@ -480,8 +480,8 @@
     element._handleDiffBaseAgainstLatest();
     assert(navigateToChangeStub.called);
     const args = navigateToChangeStub.getCall(0).args;
-    assert.equal(args[1], 10 as PatchSetNum);
-    assert.isNotOk(args[2]);
+    assert.equal(args[1]!.patchNum, 10 as PatchSetNum);
+    assert.isNotOk(args[1]!.basePatchNum);
   });
 
   test('toggle attention set status', async () => {
@@ -2080,7 +2080,7 @@
       const promise = mockPromise();
       sinon.stub(GerritNav, 'navigateToChange').callsFake((...args) => {
         assert.equal(args.length, 2);
-        assert.equal(args[1], EditPatchSetNum); // patchNum
+        assert.equal(args[1]!.patchNum, EditPatchSetNum); // patchNum
         promise.resolve();
       });
 
@@ -2096,9 +2096,9 @@
     test('no edit exists in revisions, non-latest patchset', async () => {
       const promise = mockPromise();
       sinon.stub(GerritNav, 'navigateToChange').callsFake((...args) => {
-        assert.equal(args.length, 6);
-        assert.equal(args[1], 1 as PatchSetNum); // patchNum
-        assert.equal(args[3], true); // opt_isEdit
+        assert.equal(args.length, 2);
+        assert.equal(args[1]!.patchNum, 1 as PatchSetNum); // patchNum
+        assert.equal(args[1]!.isEdit, true); // opt_isEdit
         promise.resolve();
       });
 
@@ -2113,10 +2113,10 @@
     test('no edit exists in revisions, latest patchset', async () => {
       const promise = mockPromise();
       sinon.stub(GerritNav, 'navigateToChange').callsFake((...args) => {
-        assert.equal(args.length, 6);
+        assert.equal(args.length, 2);
         // No patch should be specified when patchNum == latest.
-        assert.isNotOk(args[1]); // patchNum
-        assert.equal(args[3], true); // opt_isEdit
+        assert.isNotOk(args[1]!.patchNum); // patchNum
+        assert.equal(args[1]!.isEdit, true); // opt_isEdit
         promise.resolve();
       });
 
@@ -2137,8 +2137,8 @@
     navigateToChangeStub.restore();
     const promise = mockPromise();
     sinon.stub(GerritNav, 'navigateToChange').callsFake((...args) => {
-      assert.equal(args.length, 6);
-      assert.equal(args[1], 1 as PatchSetNum); // patchNum
+      assert.equal(args.length, 2);
+      assert.equal(args[1]!.patchNum, 1 as PatchSetNum); // patchNum
       promise.resolve();
     });