| Index: remoting/webapp/me2mom/host_list.js
 | 
| diff --git a/remoting/webapp/me2mom/host_list.js b/remoting/webapp/me2mom/host_list.js
 | 
| deleted file mode 100644
 | 
| index 8539f28ff2e138795f83f54bde38be5a7ebfc27d..0000000000000000000000000000000000000000
 | 
| --- a/remoting/webapp/me2mom/host_list.js
 | 
| +++ /dev/null
 | 
| @@ -1,273 +0,0 @@
 | 
| -// Copyright (c) 2011 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.
 | 
| -
 | 
| -/**
 | 
| - * @fileoverview
 | 
| - * Class representing the host-list portion of the home screen UI.
 | 
| - */
 | 
| -
 | 
| -'use strict';
 | 
| -
 | 
| -/** @suppress {duplicate} */
 | 
| -var remoting = remoting || {};
 | 
| -
 | 
| -/**
 | 
| - * Create a host list consisting of the specified HTML elements, which should
 | 
| - * have a common parent that contains only host-list UI as it will be hidden
 | 
| - * if the host-list is empty.
 | 
| - *
 | 
| - * @constructor
 | 
| - * @param {Element} table The HTML <table> to contain host-list.
 | 
| - * @param {Element} errorDiv The HTML <div> to display error messages.
 | 
| - */
 | 
| -remoting.HostList = function(table, errorDiv) {
 | 
| -  /**
 | 
| -   * @type {Element}
 | 
| -   * @private
 | 
| -   */
 | 
| -  this.table_ = table;
 | 
| -  /**
 | 
| -   * @type {Element}
 | 
| -   * @private
 | 
| -   */
 | 
| -  this.errorDiv_ = errorDiv;
 | 
| -  /**
 | 
| -   * @type {Array.<remoting.HostTableEntry>}
 | 
| -   * @private
 | 
| -   */
 | 
| -  this.hostTableEntries_ = [];
 | 
| -  /**
 | 
| -   * @type {Array.<remoting.Host>}
 | 
| -   * @private
 | 
| -   */
 | 
| -  this.hosts_ = [];
 | 
| -  /**
 | 
| -   * @type {string}
 | 
| -   * @private
 | 
| -   */
 | 
| -  this.lastError_ = '';
 | 
| -
 | 
| -  // Load the cache of the last host-list, if present.
 | 
| -  var cached = /** @type {string} */
 | 
| -      (window.localStorage.getItem(remoting.HostList.HOSTS_KEY));
 | 
| -  if (cached) {
 | 
| -    try {
 | 
| -      this.hosts_ = /** @type {Array} */ JSON.parse(cached);
 | 
| -    } catch (err) {
 | 
| -      console.error('Invalid host list cache:', /** @type {*} */(err));
 | 
| -    }
 | 
| -  }
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Search the host list for a host with the specified id.
 | 
| - *
 | 
| - * @param {string} hostId The unique id of the host.
 | 
| - * @return {remoting.Host?} The host, if any.
 | 
| - */
 | 
| -remoting.HostList.prototype.getHostForId = function(hostId) {
 | 
| -  for (var i = 0; i < this.hosts_.length; ++i) {
 | 
| -    if (this.hosts_[i].hostId == hostId) {
 | 
| -      return this.hosts_[i];
 | 
| -    }
 | 
| -  }
 | 
| -  return null;
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Query the Remoting Directory for the user's list of hosts.
 | 
| - *
 | 
| - * @param {function(boolean):void} onDone Callback invoked with true on success
 | 
| - *     or false on failure.
 | 
| - * @return {void} Nothing.
 | 
| - */
 | 
| -remoting.HostList.prototype.refresh = function(onDone) {
 | 
| -  /** @type {remoting.HostList} */
 | 
| -  var that = this;
 | 
| -  /** @param {XMLHttpRequest} xhr The response from the server. */
 | 
| -  var parseHostListResponse = function(xhr) {
 | 
| -    that.parseHostListResponse_(xhr, onDone);
 | 
| -  }
 | 
| -  /** @param {string} token The OAuth2 token. */
 | 
| -  var getHosts = function(token) {
 | 
| -    var headers = { 'Authorization': 'OAuth ' + token };
 | 
| -    remoting.xhr.get(
 | 
| -        'https://www.googleapis.com/chromoting/v1/@me/hosts',
 | 
| -        parseHostListResponse, '', headers);
 | 
| -  };
 | 
| -  remoting.oauth2.callWithToken(getHosts);
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Handle the results of the host list request.  A success response will
 | 
| - * include a JSON-encoded list of host descriptions, which we display if we're
 | 
| - * able to successfully parse it.
 | 
| - *
 | 
| - * @param {XMLHttpRequest} xhr The XHR object for the host list request.
 | 
| - * @param {function(boolean):void} onDone The callback passed to |refresh|.
 | 
| - * @return {void} Nothing.
 | 
| - * @private
 | 
| - */
 | 
| -remoting.HostList.prototype.parseHostListResponse_ = function(xhr, onDone) {
 | 
| -  this.hosts_ = [];
 | 
| -  this.lastError_ = '';
 | 
| -  try {
 | 
| -    if (xhr.status == 200) {
 | 
| -      var parsed_response =
 | 
| -          /** @type {{data: {items: Array}}} */ JSON.parse(xhr.responseText);
 | 
| -      if (parsed_response.data && parsed_response.data.items) {
 | 
| -        this.hosts_ = parsed_response.data.items;
 | 
| -      }
 | 
| -    } else {
 | 
| -      // Some other error.
 | 
| -      console.error('Bad status on host list query: ', xhr);
 | 
| -      if (xhr.status == 403) {
 | 
| -        // The user's account is not enabled for Me2Me, so fail silently.
 | 
| -      } else if (xhr.status >= 400 && xhr.status < 500) {
 | 
| -        // For other errors, tell the user to re-authorize us.
 | 
| -        this.lastError_ = remoting.Error.GENERIC;
 | 
| -      } else if (xhr.status == 503) {
 | 
| -        this.lastError_ = remoting.Error.SERVICE_UNAVAILABLE;
 | 
| -      } else {
 | 
| -        this.lastError_ = remoting.Error.UNEXPECTED;
 | 
| -      }
 | 
| -    }
 | 
| -  } catch (er) {
 | 
| -    var typed_er = /** @type {Object} */ (er);
 | 
| -    console.error('Error processing response: ', xhr, typed_er);
 | 
| -    this.lastError_ = remoting.Error.UNEXPECTED;
 | 
| -  }
 | 
| -  window.localStorage.setItem(remoting.HostList.HOSTS_KEY,
 | 
| -                              JSON.stringify(this.hosts_));
 | 
| -  onDone(this.lastError_ == '');
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Display the list of hosts or error condition.
 | 
| - *
 | 
| - * @return {void} Nothing.
 | 
| - */
 | 
| -remoting.HostList.prototype.display = function() {
 | 
| -  this.table_.innerHTML = '';
 | 
| -  this.errorDiv_.innerText = '';
 | 
| -  this.hostTableEntries_ = [];
 | 
| -
 | 
| -  /**
 | 
| -   * @type {remoting.HostList}
 | 
| -   */
 | 
| -  var that = this;
 | 
| -  /**
 | 
| -   * @param {remoting.HostTableEntry} hostTableEntry The entry being renamed.
 | 
| -   */
 | 
| -  var onRename = function(hostTableEntry) { that.renameHost_(hostTableEntry); }
 | 
| -  /**
 | 
| -   * @param {remoting.HostTableEntry} hostTableEntry The entry beign deleted.
 | 
| -   */
 | 
| -  var onDelete = function(hostTableEntry) { that.deleteHost_(hostTableEntry); }
 | 
| -
 | 
| -  for (var i = 0; i < this.hosts_.length; ++i) {
 | 
| -    /** @type {remoting.Host} */
 | 
| -    var host = this.hosts_[i];
 | 
| -    // Validate the entry to make sure it has all the fields we expect.
 | 
| -    if (host.hostName && host.hostId && host.status && host.jabberId &&
 | 
| -        host.publicKey) {
 | 
| -      var hostTableEntry = new remoting.HostTableEntry();
 | 
| -      hostTableEntry.init(host, onRename, onDelete);
 | 
| -      this.hostTableEntries_[i] = hostTableEntry;
 | 
| -      this.table_.appendChild(hostTableEntry.tableRow);
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  if (this.lastError_ != '') {
 | 
| -    l10n.localizeElementFromTag(this.errorDiv_, this.lastError_);
 | 
| -  }
 | 
| -
 | 
| -  this.showOrHide_(this.hosts_.length != 0 || this.lastError_ != '');
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Show or hide the host-list UI.
 | 
| - *
 | 
| - * @param {boolean} show True to show the UI, or false to hide it.
 | 
| - * @return {void} Nothing.
 | 
| - * @private
 | 
| - */
 | 
| -remoting.HostList.prototype.showOrHide_ = function(show) {
 | 
| -  var parent = /** @type {Element} */ (this.table_.parentNode);
 | 
| -  parent.hidden = !show;
 | 
| -  if (show) {
 | 
| -    parent.style.height = parent.scrollHeight + 'px';
 | 
| -    removeClass(parent, remoting.HostList.COLLAPSED_);
 | 
| -  } else {
 | 
| -    addClass(parent, remoting.HostList.COLLAPSED_);
 | 
| -  }
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Remove a host from the list, and deregister it.
 | 
| - * @param {remoting.HostTableEntry} hostTableEntry The host to be removed.
 | 
| - * @return {void} Nothing.
 | 
| - * @private
 | 
| - */
 | 
| -remoting.HostList.prototype.deleteHost_ = function(hostTableEntry) {
 | 
| -  this.table_.removeChild(hostTableEntry.tableRow);
 | 
| -  var index = this.hostTableEntries_.indexOf(hostTableEntry);
 | 
| -  if (index != -1) {
 | 
| -    this.hostTableEntries_.splice(index, 1);
 | 
| -  }
 | 
| -
 | 
| -  /** @param {string} token The OAuth2 token. */
 | 
| -  var deleteHost = function(token) {
 | 
| -    var headers = { 'Authorization': 'OAuth ' + token };
 | 
| -    remoting.xhr.remove(
 | 
| -        'https://www.googleapis.com/chromoting/v1/@me/hosts/' +
 | 
| -        hostTableEntry.host.hostId,
 | 
| -        function() {}, '', headers);
 | 
| -  }
 | 
| -  remoting.oauth2.callWithToken(deleteHost);
 | 
| -
 | 
| -  this.showOrHide_(this.hostTableEntries_.length != 0);
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Prepare a host for renaming by replacing its name with an edit box.
 | 
| - * @param {remoting.HostTableEntry} hostTableEntry The host to be renamed.
 | 
| - * @return {void} Nothing.
 | 
| - * @private
 | 
| - */
 | 
| -remoting.HostList.prototype.renameHost_ = function(hostTableEntry) {
 | 
| -  /** @param {string} token */
 | 
| -  var renameHost = function(token) {
 | 
| -    var headers = {
 | 
| -      'Authorization': 'OAuth ' + token,
 | 
| -      'Content-type' : 'application/json; charset=UTF-8'
 | 
| -    };
 | 
| -    var newHostDetails = { data: {
 | 
| -      hostId: hostTableEntry.host.hostId,
 | 
| -      hostName: hostTableEntry.host.hostName,
 | 
| -      publicKey: hostTableEntry.host.publicKey
 | 
| -    } };
 | 
| -    remoting.xhr.put(
 | 
| -        'https://www.googleapis.com/chromoting/v1/@me/hosts/' +
 | 
| -        hostTableEntry.host.hostId,
 | 
| -        function(xhr) {},
 | 
| -        JSON.stringify(newHostDetails),
 | 
| -        headers);
 | 
| -  }
 | 
| -  remoting.oauth2.callWithToken(renameHost);
 | 
| -};
 | 
| -
 | 
| -/**
 | 
| - * Class name for the host list when it is collapsed.
 | 
| - * @private
 | 
| - */
 | 
| -remoting.HostList.COLLAPSED_ = 'collapsed';
 | 
| -
 | 
| -/**
 | 
| - * Key name under which Me2Me hosts are cached.
 | 
| - */
 | 
| -remoting.HostList.HOSTS_KEY = 'me2me-cached-hosts';
 | 
| -
 | 
| -/** @type {remoting.HostList} */
 | 
| -remoting.hostList = null;
 | 
| 
 |