Stop polling for checks if tab goes out of focus

Change-Id: I999144dcc973ec76b1340ca74183ce651b2a9f4c
diff --git a/gr-checks/gr-checks-chip-view.js b/gr-checks/gr-checks-chip-view.js
index e96cdd3..5e8d6c9 100644
--- a/gr-checks/gr-checks-chip-view.js
+++ b/gr-checks/gr-checks-chip-view.js
@@ -84,7 +84,8 @@
         type: Boolean,
         value: false
       },
-      pollChecksInterval: Object
+      pollChecksInterval: Object,
+      visibilityChangeListener: Object
     },
 
     observers: [
@@ -124,13 +125,27 @@
       });
     },
 
+    onVisibililityChange() {
+      if (document.hidden) {
+        clearInterval(this.pollChecksInterval);
+        return;
+      }
+      this._pollChecksRegularly(this.change, this.revision, this.getChecks);
+    },
+
     _pollChecksRegularly(change, revision, getChecks) {
       if (this.pollChecksInterval) {
         clearInterval(this.pollChecksInterval);
       }
       const poll = () => this._fetchChecks(change, revision, getChecks);
       poll();
-      this.pollChecksInterval = setInterval(poll, CHECKS_POLL_INTERVAL_MS)
+      this.pollChecksInterval = setInterval(poll, CHECKS_POLL_INTERVAL_MS);
+      if (!this.visibilityChangeListener) {
+        this.visibilityChangeListener = document.addEventListener(
+          'visibilitychange',
+          this.onVisibililityChange.bind(this)
+        );
+      }
     },
 
     /**