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)
+ );
+ }
},
/**