1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 * WebUI to monitor the Sync File System Service.
8 var SyncService = (function() {
14 * Request Sync Service Status.
16 function getServiceStatus() {
17 chrome.send('getServiceStatus');
21 * Called when service status is initially retrieved or updated via events.
22 * @param {string} Service status enum as a string.
24 SyncService.onGetServiceStatus = function(statusString) {
25 $('service-status').textContent = statusString;
29 * Request Google Drive Notification Source. e.g. XMPP or polling.
31 function getNotificationSource() {
32 chrome.send('getNotificationSource');
36 * Handles callback from getNotificationSource.
37 * @param {string} Notification source as a string.
39 SyncService.onGetNotificationSource = function(sourceString) {
40 $('notification-source').textContent = sourceString;
43 // Keeps track of the last log event seen so it's not reprinted.
44 var lastLogEventId = -1;
50 chrome.send('getLog', [lastLogEventId]);
56 function clearLogs() {
57 chrome.send('clearLogs');
58 $('log-entries').innerHTML = '';
62 * Handles callback from getUpdateLog.
63 * @param {Array} list List of dictionaries containing 'id', 'time', 'logEvent'.
65 SyncService.onGetLog = function(logEntries) {
66 var itemContainer = $('log-entries');
67 for (var i = 0; i < logEntries.length; i++) {
68 var logEntry = logEntries[i];
69 var tr = document.createElement('tr');
70 var error = /ERROR/.test(logEntry.logEvent) ? ' error' : '';
71 tr.appendChild(createElementFromText('td', logEntry.time,
72 {'class': 'log-time'}));
73 tr.appendChild(createElementFromText('td', logEntry.logEvent,
74 {'class': 'log-event' + error}));
75 itemContainer.appendChild(tr);
77 lastLogEventId = logEntry.id;
82 * Get initial sync service values and set listeners to get updated values.
85 cr.ui.decorate('tabbox', cr.ui.TabBox);
86 $('clear-log-button').addEventListener('click', clearLogs);
88 getNotificationSource();
90 // TODO: Look for a way to push entries to the page when necessary.
91 window.setInterval(getLog, 1000);
94 document.addEventListener('DOMContentLoaded', main);