diff --git a/gr-checks/gr-checks-chip-view.js b/gr-checks/gr-checks-chip-view.js
index c19671d..07ae391 100644
--- a/gr-checks/gr-checks-chip-view.js
+++ b/gr-checks/gr-checks-chip-view.js
@@ -100,7 +100,7 @@
     },
 
     observers: [
-      '_pollChecksRegularly(change, revision, getChecks)',
+      '_pollChecksRegularly(change, getChecks)',
     ],
 
     listeners: {
@@ -115,7 +115,7 @@
                 bubbles: true,
                 composed: true,
                 detail: {
-                  tab: 'change-view-tab-content-checks',
+                  tab: 'change-view-tab-header-checks',
                 },
               })
       );
@@ -123,13 +123,14 @@
 
     /**
      * @param {!Defs.Change} change
-     * @param {!Defs.Revision} revision
      * @param {function(number, number): !Promise<!Object>} getChecks
      */
-    _fetchChecks(change, revision, getChecks) {
-      if (!getChecks || !change || !revision) return;
+    _fetchChecks(change, getChecks) {
+      if (!getChecks || !change) return;
 
-      getChecks(change._number, revision._number).then(checks => {
+      // change.current_revision always points to latest patchset
+      getChecks(change._number, change.revisions[change.current_revision]
+          ._number).then(checks => {
         this.set('_hasChecks', checks.length > 0);
         if (checks.length > 0) {
           this._downgradeFailureToWarning =
@@ -149,14 +150,14 @@
         clearInterval(this.pollChecksInterval);
         return;
       }
-      this._pollChecksRegularly(this.change, this.revision, this.getChecks);
+      this._pollChecksRegularly(this.change, this.getChecks);
     },
 
-    _pollChecksRegularly(change, revision, getChecks) {
+    _pollChecksRegularly(change, getChecks) {
       if (this.pollChecksInterval) {
         clearInterval(this.pollChecksInterval);
       }
-      const poll = () => this._fetchChecks(change, revision, getChecks);
+      const poll = () => this._fetchChecks(change, getChecks);
       poll();
       this.pollChecksInterval = setInterval(poll, CHECKS_POLL_INTERVAL_MS);
       if (!this.visibilityChangeListenerAdded) {
diff --git a/gr-checks/gr-checks-chip-view_test.html b/gr-checks/gr-checks-chip-view_test.html
index e926e60..105227c 100644
--- a/gr-checks/gr-checks-chip-view_test.html
+++ b/gr-checks/gr-checks-chip-view_test.html
@@ -48,6 +48,12 @@
         getChecks: getChecksSpy,
         change: {
           _number: 314,
+          current_revision: 'abcd',
+          revisions: {
+            abcd: {
+              _number: 271,
+            },
+          },
         },
         revision: {
           _number: 271,
@@ -62,6 +68,14 @@
       assert.include(element.textContent.trim(), 'Checks:');
     });
 
+    test('updating revision does not update getChecks call', done => {
+      element.revision = {_number: 272};
+      flush(() => {
+        assert.isFalse(getChecksSpy.calledWith(314, 272));
+        done();
+      });
+    });
+
     suite('builds chip contents', () => {
       test('queries the checks', () => {
         assert.isTrue(getChecksSpy.called);
