| Index: chrome/browser/resources/copresence.js
|
| diff --git a/chrome/browser/resources/copresence.js b/chrome/browser/resources/copresence.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9f42895a75963093acf10003c634f744dc0a0228
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/copresence.js
|
| @@ -0,0 +1,107 @@
|
| +// 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.
|
| +
|
| +/**
|
| + * Debug information about an active copresence directive.
|
| + * @typedef {{
|
| + * type: string,
|
| + * medium: string,
|
| + * duration: string
|
| + * }}
|
| + */
|
| +var Directive;
|
| +
|
| +/**
|
| + * Debug information about a recent copresence token.
|
| + * @typedef {{
|
| + * id: string,
|
| + * statuses: string,
|
| + * medium: string,
|
| + * time: string
|
| + * }}
|
| + */
|
| +var Token;
|
| +
|
| +/**
|
| + * Callback to refresh the list of directives.
|
| + * @param {Array<Directive>} directives
|
| + */
|
| +function refreshDirectives(directives) {
|
| + var table = $('directives-table').tBodies[0];
|
| +
|
| + // Fix the directives table to have the correct number of rows.
|
| + while (table.rows.length < directives.length)
|
| + table.insertRow();
|
| + while (table.rows.length > directives.length)
|
| + table.deleteRow();
|
| +
|
| + // Populate the directives into the table.
|
| + directives.forEach(function(directive, index) {
|
| + var row = table.rows.item(index);
|
| + while (row.cells.length < 3)
|
| + row.insertCell();
|
| +
|
| + row.cells.item(0).textContent = directive.type;
|
| + row.cells.item(1).textContent = directive.medium;
|
| + row.cells.item(2).textContent = directive.duration;
|
| + });
|
| +}
|
| +
|
| +/**
|
| + * Callback to add or update transmitted tokens.
|
| + * @param {Token} token
|
| + */
|
| +function updateTransmittedToken(token) {
|
| + updateTokenTable($('transmitted-tokens-table'), token);
|
| +}
|
| +
|
| +/**
|
| + * Callback to add or update received tokens.
|
| + * @param {Token} token
|
| + */
|
| +function updateReceivedToken(token) {
|
| + updateTokenTable($('received-tokens-table'), token);
|
| +}
|
| +
|
| +/**
|
| + * Add or update a token in the specified table.
|
| + * @param {HTMLTableElement} table
|
| + * @param {Token} token
|
| + */
|
| +function updateTokenTable(table, token) {
|
| + var rows = table.tBodies[0].rows;
|
| +
|
| + var index;
|
| + for (index = 0; index < rows.length; index++) {
|
| + var row = rows.item(index);
|
| + if (row.cells[0].textContent == token.id) {
|
| + updateTokenRow(row, token);
|
| + break;
|
| + }
|
| + }
|
| +
|
| + if (index == rows.length)
|
| + updateTokenRow(table.tBodies[0].insertRow(), token);
|
| +}
|
| +
|
| +/**
|
| + * Update a token on the specified row.
|
| + * @param {HTMLTableRowElement} row
|
| + * @param {Token} token
|
| + */
|
| +function updateTokenRow(row, token) {
|
| + while (row.cells.length < 4)
|
| + row.insertCell();
|
| + row.className = token.statuses;
|
| +
|
| + row.cells[0].textContent = token.id;
|
| + row.cells[1].textContent =
|
| + token.statuses.replace('confirmed', '(Confirmed)');
|
| + row.cells[2].textContent = token.medium;
|
| + row.cells[3].textContent = token.time;
|
| +}
|
| +
|
| +document.addEventListener('DOMContentLoaded', function() {
|
| + chrome.send('populateCopresenceState');
|
| +});
|
|
|