blob: 06ddf237df394aeaad49ed5f06e8e8cd7215dfdb [file] [log] [blame]
// Copyright 2014 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.
cr.define('hotword', function() {
'use strict';
/**
* Class used to keep this extension alive. When started, this calls an
* extension API on a regular basis which resets the event page keep-alive
* timer.
* @constructor
*/
function KeepAlive() {
this.timeoutId_ = null;
}
KeepAlive.prototype = {
/**
* Start the keep alive process. Safe to call multiple times.
*/
start: function() {
if (this.timeoutId_ == null)
this.timeoutId_ = setTimeout(this.handleTimeout_.bind(this), 1000);
},
/**
* Stops the keep alive process. Safe to call multiple times.
*/
stop: function() {
if (this.timeoutId_ != null) {
clearTimeout(this.timeoutId_);
this.timeoutId_ = null;
}
},
/**
* Handle the timer timeout. Calls an extension API and schedules the next
* timeout.
* @private
*/
handleTimeout_: function() {
// Dummy extensions API call used to keep this event page alive by
// resetting the shutdown timer.
chrome.runtime.getPlatformInfo(function(info) {});
this.timeoutId_ = setTimeout(this.handleTimeout_.bind(this), 1000);
}
};
return {
KeepAlive: KeepAlive
};
});