OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @fileoverview | 6 * @fileoverview |
7 * Functions related to the 'client screen' for Chromoting. | 7 * Functions related to the 'client screen' for Chromoting. |
8 */ | 8 */ |
9 | 9 |
10 'use strict'; | 10 'use strict'; |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 } else { | 457 } else { |
458 remoting.debug.log('Error response: ' + xhr.responseText); | 458 remoting.debug.log('Error response: ' + xhr.responseText); |
459 } | 459 } |
460 | 460 |
461 // If the error is unlikely to be recoverable then notify the user. | 461 // If the error is unlikely to be recoverable then notify the user. |
462 if (xhr.status >= 400 && xhr.status <= 499) { | 462 if (xhr.status >= 400 && xhr.status <= 499) { |
463 // TODO(wez): We need to replace this with a more general showError_(). | 463 // TODO(wez): We need to replace this with a more general showError_(). |
464 showConnectError_(remoting.Error.GENERIC); | 464 showConnectError_(remoting.Error.GENERIC); |
465 } | 465 } |
466 } | 466 } |
467 } catch(er) { | 467 } catch (er) { |
468 // Error parsing response... | 468 console.error('Error processing response: ', xhr); |
469 remoting.debug.log('Error: Error processing response: "' + | |
470 xhr.status + ' ' + xhr.statusText); | |
471 remoting.debug.log(xhr.responseText); | |
472 } | 469 } |
473 } | 470 } |
474 | 471 |
475 /** | 472 /** |
476 * Cache of the latest host list and status information. | 473 * Cache of the latest host list and status information. |
477 * | 474 * |
478 * @type {Array.<{hostName: string, hostId: string, status: string, | 475 * @type {Array.<{hostName: string, hostId: string, status: string, |
479 * jabberId: string, publicKey: string}>} | 476 * jabberId: string, publicKey: string}>} |
480 * | 477 * |
481 */ | 478 */ |
482 remoting.hostList_ = new Array(); | 479 remoting.hostList_ = new Array(); |
483 | 480 |
484 /** | 481 /** |
485 * Refresh the host list display with up to date host details. | 482 * Refresh the host list display with up to date host details. |
486 * | 483 * |
487 * @param {Array.<{hostName: string, hostId: string, status: string, | 484 * @param {Array.<{hostName: string, hostId: string, status: string, |
488 * jabberId: string, publicKey: string}>} hostList | 485 * jabberId: string, publicKey: string}>} hostList |
489 * The new list of registered hosts. | 486 * The new list of registered hosts. |
490 * @return {void} Nothing. | 487 * @return {void} Nothing. |
491 */ | 488 */ |
492 function replaceHostList_(hostList) { | 489 function replaceHostList_(hostList) { |
493 var hostListDiv = document.getElementById('host-list-div'); | 490 var hostListDiv = document.getElementById('host-list-div'); |
494 var hostListTable = document.getElementById('host-list'); | 491 var hostListTable = document.getElementById('host-list'); |
495 | 492 |
496 remoting.hostList_ = hostList; | 493 remoting.hostList_ = hostList; |
497 | 494 |
498 // Clear the table before adding the host info. | 495 // Clear the table before adding the host info. |
499 hostListTable.innerHTML = ''; | 496 hostListTable.innerHTML = ''; |
500 | 497 |
501 // Show/hide the div depending on whether there are hosts to list. | |
502 hostListDiv.hidden = (hostList.length == 0); | |
503 | |
504 for (var i = 0; i < hostList.length; ++i) { | 498 for (var i = 0; i < hostList.length; ++i) { |
505 var host = hostList[i]; | 499 var host = hostList[i]; |
506 if (!host.hostName || !host.hostId || !host.status || !host.jabberId || | 500 if (!host.hostName || !host.hostId || !host.status || !host.jabberId || |
507 !host.publicKey) | 501 !host.publicKey) |
508 continue; | 502 continue; |
509 var hostEntry = document.createElement('tr'); | 503 var hostEntry = document.createElement('tr'); |
| 504 addClass(hostEntry, 'host-list-row'); |
| 505 |
| 506 var hostIcon = document.createElement('td'); |
| 507 var hostIconImage = document.createElement('img'); |
| 508 hostIconImage.src = 'icon_host.png'; |
| 509 hostIcon.className = 'host-list-row-start'; |
| 510 hostIcon.appendChild(hostIconImage); |
| 511 hostEntry.appendChild(hostIcon); |
510 | 512 |
511 var hostName = document.createElement('td'); | 513 var hostName = document.createElement('td'); |
512 hostName.setAttribute('class', 'mode-select-label'); | 514 hostName.setAttribute('class', 'mode-select-label'); |
513 hostName.appendChild(document.createTextNode(host.hostName)); | 515 hostName.appendChild(document.createTextNode(host.hostName)); |
514 hostEntry.appendChild(hostName); | 516 hostEntry.appendChild(hostName); |
515 | 517 |
516 var hostStatus = document.createElement('td'); | 518 var hostStatus = document.createElement('td'); |
517 if (host.status == 'ONLINE') { | 519 if (host.status == 'ONLINE') { |
518 var connectButton = document.createElement('button'); | 520 var connectButton = document.createElement('button'); |
519 connectButton.setAttribute('class', 'mode-select-button'); | 521 connectButton.setAttribute('class', 'mode-select-button'); |
520 connectButton.setAttribute('type', 'button'); | 522 connectButton.setAttribute('type', 'button'); |
521 connectButton.setAttribute('onclick', | 523 connectButton.setAttribute('onclick', |
522 'remoting.connectHost("'+host.hostId+'")'); | 524 'remoting.connectHost("'+host.hostId+'")'); |
523 connectButton.innerHTML = | 525 connectButton.innerHTML = |
524 chrome.i18n.getMessage(/*i18n-content*/'CONNECT_BUTTON'); | 526 chrome.i18n.getMessage(/*i18n-content*/'CONNECT_BUTTON'); |
525 hostStatus.appendChild(connectButton); | 527 hostStatus.appendChild(connectButton); |
526 } else { | 528 } else { |
| 529 addClass(hostEntry, 'host-offline'); |
527 hostStatus.innerHTML = chrome.i18n.getMessage(/*i18n-content*/'OFFLINE'); | 530 hostStatus.innerHTML = chrome.i18n.getMessage(/*i18n-content*/'OFFLINE'); |
528 } | 531 } |
| 532 hostStatus.className = 'host-list-row-end'; |
529 hostEntry.appendChild(hostStatus); | 533 hostEntry.appendChild(hostStatus); |
530 | 534 |
531 hostListTable.appendChild(hostEntry); | 535 hostListTable.appendChild(hostEntry); |
532 } | 536 } |
| 537 |
| 538 // Show/hide the div depending on whether there are hosts to list. |
| 539 hostListDiv.hidden = (hostList.length == 0); |
| 540 if (hostList.length == 0) { |
| 541 addClass(hostListDiv, 'collapsed'); |
| 542 } else { |
| 543 hostListDiv.style.height = hostListDiv.scrollHeight + 'px'; |
| 544 removeClass(hostListDiv, 'collapsed'); |
| 545 } |
| 546 |
533 } | 547 } |
534 | 548 |
535 /** | 549 /** |
536 * Start a connection to the specified host, using the stored details. | 550 * Start a connection to the specified host, using the stored details. |
537 * | 551 * |
538 * @param {string} hostId The Id of the host to connect to. | 552 * @param {string} hostId The Id of the host to connect to. |
539 * @return {void} Nothing. | 553 * @return {void} Nothing. |
540 */ | 554 */ |
541 remoting.connectHost = function(hostId) { | 555 remoting.connectHost = function(hostId) { |
542 var hostList = remoting.hostList_; | 556 var hostList = remoting.hostList_; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
583 var createPluginAndConnect = function(token) { | 597 var createPluginAndConnect = function(token) { |
584 remoting.clientSession.createPluginAndConnect( | 598 remoting.clientSession.createPluginAndConnect( |
585 document.getElementById('session-mode'), | 599 document.getElementById('session-mode'), |
586 token); | 600 token); |
587 }; | 601 }; |
588 | 602 |
589 remoting.setMode(remoting.AppMode.CLIENT_CONNECTING); | 603 remoting.setMode(remoting.AppMode.CLIENT_CONNECTING); |
590 remoting.oauth2.callWithToken(createPluginAndConnect); | 604 remoting.oauth2.callWithToken(createPluginAndConnect); |
591 } | 605 } |
592 | 606 |
593 // Don't delete this! | |
594 }()); | 607 }()); |
OLD | NEW |