Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / remoting / webapp / host.js
blob5d24b7f52f8465216e3f7a98eea59f38bc5031d6
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 /**
6  * @fileoverview
7  * The deserialized form of the chromoting host as returned by Apiary.
8  */
10 'use strict';
12 /** @suppress {duplicate} */
13 var remoting = remoting || {};
15 /**
16  * Note that the object has more fields than are detailed below--these
17  * are just the ones that we refer to directly.
18  * @constructor
19  */
20 remoting.Host = function() {
21   /** @type {string} */
22   this.hostName = '';
23   /** @type {string} */
24   this.hostId = '';
25   /** @type {string} */
26   this.status = '';
27   /** @type {string} */
28   this.jabberId = '';
29   /** @type {string} */
30   this.publicKey = '';
31   /** @type {string} */
32   this.hostVersion = '';
33   /** @type {Array.<string>} */
34   this.tokenUrlPatterns = [];
35   /** @type {string} */
36   this.updatedTime = '';
39 /**
40  * Determine whether a host needs to be manually updated. This is the case if
41  * the host's major version number is more than 1 lower than that of the web-
42  * app (a difference of 1 is tolerated due to the different update mechanisms)
43  * and if the host is on-line (off-line hosts are not expected to auto-update).
44  *
45  * @param {remoting.Host} host The host information from the directory.
46  * @param {string|number} webappVersion The version number of the web-app, in
47  *     either dotted-decimal notation notation, or directly represented by the
48  *     major version.
49  * @return {boolean} True if the host is on-line but out-of-date.
50  */
51 remoting.Host.needsUpdate = function(host, webappVersion) {
52   if (host.status != 'ONLINE') {
53     return false;
54   }
55   var hostMajorVersion = parseInt(host.hostVersion, 10);
56   if (isNaN(hostMajorVersion)) {
57     // Host versions 26 and higher include the version number in heartbeats,
58     // so if it's missing then the host is at most version 25.
59     hostMajorVersion = 25;
60   }
61   return (parseInt(webappVersion, 10) - hostMajorVersion) > 1;