Chromium Code Reviews| 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..f36c026c12de9bb03fdbf250eb314a24a0fb5a14 |
| --- /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, |
|
Dan Beam
2014/12/09 05:33:38
nit: type: string
^ \s
Charlie
2014/12/17 23:39:55
Done.
|
| + * 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 |
|
Dan Beam
2014/12/09 05:33:38
nit: Array<Directive>
Charlie
2014/12/17 23:39:55
Oh. I thought jsdoc required the dot?
http://usej
|
| + */ |
| +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 sent tokens. |
| + * @param {Token} token |
| + */ |
| +function updateSentToken(token) { |
| + updateTokenTable($('sent-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'); |
| +}); |