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