blob: a578dc5efd69d61068ff84480c2db0abef12c405 [file] [log] [blame]
// Copyright (c) 2012 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.
/**
* Updates the Authentication Status section.
* @param {Object} authStatus Dictionary containing auth status.
*/
function updateAuthStatus(authStatus) {
$('has-refresh-token').textContent = authStatus['has-refresh-token'];
$('has-access-token').textContent = authStatus['has-access-token'];
}
/**
* Updates the GCache Contents section.
* @param {Array} gcacheContents List of dictionaries describing metadata
* of files and directories under the GCache directory.
* @param {Object} gcacheSummary Dictionary of summary of GCache.
*/
function updateGCacheContents(gcacheContents, gcacheSummary) {
var tbody = $('gcache-contents');
for (var i = 0; i < gcacheContents.length; i++) {
var entry = gcacheContents[i];
var tr = document.createElement('tr');
// Add some suffix based on the type.
var path = entry.path;
if (entry.is_directory)
path += '/';
else if (entry.is_symbolic_link)
path += '@';
tr.appendChild(createElementFromText('td', path));
tr.appendChild(createElementFromText('td', entry.size));
tr.appendChild(createElementFromText('td', entry.last_modified));
tbody.appendChild(tr);
}
$('gcache-summary-total-size').textContent = gcacheSummary['total_size'];
}
/**
* Updates the File System Contents section. The function is called from the
* C++ side repeatedly with contents of a directory.
* @param {string} directoryContentsAsText Pre-formatted string representation
* of contents a directory in the file system.
*/
function updateFileSystemContents(directoryContentsAsText) {
var div = $('file-system-contents');
div.appendChild(createElementFromText('pre', directoryContentsAsText));
}
/**
* Updates the Cache Contents section.
* @param {Object} cacheEntry Dictionary describing a cache entry.
* The function is called from the C++ side repeatedly.
*/
function updateCacheContents(cacheEntry) {
var tr = document.createElement('tr');
tr.appendChild(createElementFromText('td', cacheEntry.resource_id));
tr.appendChild(createElementFromText('td', cacheEntry.md5));
tr.appendChild(createElementFromText('td', cacheEntry.is_present));
tr.appendChild(createElementFromText('td', cacheEntry.is_pinned));
tr.appendChild(createElementFromText('td', cacheEntry.is_dirty));
tr.appendChild(createElementFromText('td', cacheEntry.is_mounted));
tr.appendChild(createElementFromText('td', cacheEntry.is_persistent));
$('cache-contents').appendChild(tr);
}
/**
* Updates the Local Storage summary.
* @param {Object} localStorageSummary Dictionary describing the status of local
* stogage.
*/
function updateLocalStorageUsage(localStorageSummary) {
var freeSpaceInMB = localStorageSummary.free_space / (1 << 20);
$('local-storage-freespace').innerText = freeSpaceInMB;
}
/**
* Updates the summary about in-flight operations.
* @param {Array} inFlightOperations List of dictionaries describing the status
* of in-flight operations.
*/
function updateInFlightOperations(inFlightOperations) {
var container = $('in-flight-operations-contents');
// Reset the table.
var existingNodes = container.childNodes;
for (var i = 0; i < existingNodes.length; i++) {
var node = existingNodes[i];
if (node.className == 'in-flight-operation')
container.removeChild(node);
}
// Add in-flight operations.
for (var i = 0; i < inFlightOperations.length; i++) {
var operation = inFlightOperations[i];
var tr = document.createElement('tr');
tr.className = 'in-flight-operation';
tr.appendChild(createElementFromText('td', operation.operation_id));
tr.appendChild(createElementFromText('td', operation.operation_type));
tr.appendChild(createElementFromText('td', operation.file_path));
tr.appendChild(createElementFromText('td', operation.transfer_state));
tr.appendChild(createElementFromText('td', operation.start_time));
var progress = operation.progress_current + '/' + operation.progress_total;
if (operation.progress_total > 0) {
progress += ' (' +
(operation.progress_current / operation.progress_total * 100) + '%)';
}
tr.appendChild(createElementFromText('td', progress));
container.appendChild(tr);
}
}
/**
* Creates an element named |elementName| containing the content |text|.
* @param {string} elementName Name of the new element to be created.
* @param {string} text Text to be contained in the new element.
* @return {HTMLElement} The newly created HTML element.
*/
function createElementFromText(elementName, text) {
var element = document.createElement(elementName);
element.appendChild(document.createTextNode(text));
return element;
}
document.addEventListener('DOMContentLoaded', function() {
chrome.send('pageLoaded');
window.setInterval(function() {
chrome.send('periodicUpdate');
}, 1000);
});