sync_service.js revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
1b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// found in the LICENSE file. 4b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 5b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)/** 6b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * WebUI to monitor the Sync File System Service. 7b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 8b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)var syncService = (function() { 9b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)'use strict'; 10b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)function SyncService() { 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 14b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)/** 15b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * Request Sync Service Status. 16b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 17b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)function getServiceStatus() { 18b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) chrome.send('getServiceStatus'); 19b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 20b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 21b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)/** 22b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * Handles callback from getServiceStatus. 23b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * @param {string} Service status enum as a string. 24b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)SyncService.prototype.onGetServiceStatus = function(statusString) { 26b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) $('service-status').textContent = statusString; 27b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 28b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 29b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)/** 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Request Google Drive Notification Source. e.g. XMPP or polling. 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)function getNotificationSource() { 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) chrome.send('getNotificationSource'); 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)/** 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Handles callback from getNotificationSource. 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * @param {string} Notification source as a string. 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)SyncService.prototype.onGetNotificationSource = function(sourceString) { 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) $('notification-source').textContent = sourceString; 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)/** 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Creates an element named |elementName| containing the content |text|. 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * @param {string} elementName Name of the new element to be created. 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * @param {string} text Text to be contained in the new element. 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * @return {HTMLElement} The newly created HTML element. 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)function createElementFromText(elementName, text) { 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) var element = document.createElement(elementName); 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) element.appendChild(document.createTextNode(text)); 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return element; 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)/** 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Request debug log. 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)function getLog() { 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) chrome.send('getLog'); 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)/** 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Handles callback from getUpdateLog. 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * @param {Array} list List of dictionaries containing 'time' and 'logEvent'. 6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)SyncService.prototype.onGetLog = function(logEntries) { 6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) var itemContainer = $('log-entries'); 6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) for (var i = 0; i < logEntries.length; i++) { 7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) var logEntry = logEntries[i]; 7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) var tr = document.createElement('tr'); 7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) tr.appendChild(createElementFromText('td', logEntry.time)); 7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) tr.appendChild(createElementFromText('td', logEntry.logEvent)); 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) itemContainer.appendChild(tr); 7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)/** 79b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) * Get initial sync service values and set listeners to get updated values. 80b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) */ 81b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)function main() { 82b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) cr.ui.decorate('tabbox', cr.ui.TabBox); 83b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) getServiceStatus(); 8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) getNotificationSource(); 8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) window.setInterval(getLog, 1000); 86b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 87b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 88b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)document.addEventListener('DOMContentLoaded', main); 8990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)return new SyncService; 90b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)})(); 91