blob: d915fd77a1490047a503254fdd6396739e9e54df [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.
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);
})();