blob: bcc09613b686158c3a47df1e028ccaab54147ac9 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
function busyLoop(millis) {
for (var d = Date.now(); Date.now() - d < millis; ) { }
}
function visible() {
if ("visibilityState" in document
&& document.visibilityState == "hidden")
return false;
if ("webkitVisibilityState" in document
&& document.webkitVisibilityState == "hidden")
return false;
if ("mozVisibilityState" in document
&& document.mozVisibilityState == "hidden")
return false;
if ("msVisibilityState" in document
&& document.msVisibilityState == "hidden")
return false;
return true;
}
var timerId = 0;
function loop() {
timerId = 0;
if (!visible())
return;
busyLoop(250);
timerId = window.setTimeout(loop, 50);
}
function handler() {
if (visible() && !timerId)
timerId = window.setTimeout(loop, 50);
}
if ("visibilityState" in document) {
document.addEventListener("visibilitychange", handler, false);
} else if ("webkitVisibilityState" in document) {
document.addEventListener("webkitvisibilitychange", handler, false);
} else if ("mozVisibilityState" in document) {
document.addEventListener("mozvisibilitychange", handler, false);
} else if ("msVisibilityState" in document) {
document.addEventListener("msvisibilitychange", handler, false);
}
loop();