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. 4 5/** 6 * @fileoverview 7 * The deserialized form of the chromoting host as returned by Apiary. 8 */ 9 10'use strict'; 11 12/** @suppress {duplicate} */ 13var remoting = remoting || {}; 14 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 */ 20remoting.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 = ''; 37}; 38 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 */ 51remoting.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; 62}; 63