// 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. function highlightIfChanged(node, oldVal, newVal) { function clearHighlight() { this.removeAttribute('highlighted'); } var oldStr = oldVal.toString(); var newStr = newVal.toString(); if (oldStr != '' && oldStr != newStr) { // Note the addListener function does not end up creating duplicate // listeners. There can be only one listener per event at a time. // Reference: https://developer.mozilla.org/en/DOM/element.addEventListener node.addEventListener('webkitAnimationEnd', clearHighlight, false); node.setAttribute('highlighted', ''); } } (function() { // Contains the latest snapshot of sync about info. chrome.sync.aboutInfo = {}; // TODO(akalin): Make aboutInfo have key names likeThis and not // like_this. function refreshAboutInfo(aboutInfo) { chrome.sync.aboutInfo = aboutInfo; var aboutInfoDiv = $('aboutInfo'); jstProcess(new JsEvalContext(aboutInfo), aboutInfoDiv); } function onLoad() { $('status-data').hidden = true; chrome.sync.getAboutInfo(refreshAboutInfo); chrome.sync.onServiceStateChanged.addListener(function() { chrome.sync.getAboutInfo(refreshAboutInfo); }); var dumpStatusButton = $('dump-status'); dumpStatusButton.addEventListener('click', function(event) { var aboutInfo = chrome.sync.aboutInfo; if (!$('include-ids').checked) { aboutInfo.details = chrome.sync.aboutInfo.details.filter(function(el) { return !el.is_sensitive; }); } var data = ''; data += new Date().toString() + '\n'; data += '======\n'; data += 'Status\n'; data += '======\n'; data += JSON.stringify(aboutInfo, null, 2) + '\n'; $('status-text').value = data; $('status-data').hidden = false; }); var importStatusButton = $('import-status'); importStatusButton.addEventListener('click', function(event) { $('status-data').hidden = false; if ($('status-text').value.length == 0) { $('status-text').value = 'Paste sync status dump here then click import.'; return; } // First remove any characters before the '{'. var data = $('status-text').value; var firstBrace = data.indexOf('{'); if (firstBrace < 0) { $('status-text').value = 'Invalid sync status dump.'; return; } data = data.substr(firstBrace); // Remove listeners to prevent sync events from overwriting imported data. chrome.sync.onServiceStateChanged.removeListeners(); var aboutInfo = JSON.parse(data); refreshAboutInfo(aboutInfo); }); } document.addEventListener('DOMContentLoaded', onLoad, false); })();