| Index: chrome/browser/resources/sync_internals/types.js
|
| diff --git a/chrome/browser/resources/sync_internals/types.js b/chrome/browser/resources/sync_internals/types.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d08cc0ed775920f6d56d9df3618b30f4f8bf8a0f
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/sync_internals/types.js
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2014 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.
|
| +
|
| +cr.define('chrome.sync.types', function() {
|
| + var typeCountersMap = {};
|
| +
|
| + /**
|
| + * Redraws the counters table taking advantage of the most recent
|
| + * available information.
|
| + *
|
| + * Makes use of typeCountersMap, which is defined in the containing scope.
|
| + */
|
| + var refreshTypeCountersDisplay = function() {
|
| + var typeCountersArray = [];
|
| +
|
| + // Transform our map into an array to make jstemplate happy.
|
| + Object.keys(typeCountersMap).sort().forEach(function(t) {
|
| + typeCountersArray.push({
|
| + type: t,
|
| + counters: typeCountersMap[t],
|
| + });
|
| + });
|
| +
|
| + jstProcess(
|
| + new JsEvalContext({ rows: typeCountersArray }),
|
| + $('type-counters-table'));
|
| + };
|
| +
|
| + /**
|
| + * Helps to initialize the table by picking up where initTypeCounters() left
|
| + * off. That function registers this listener and requests that this event
|
| + * be emitted.
|
| + *
|
| + * @param {!Object} e An event containing the list of known sync types.
|
| + */
|
| + var onReceivedListOfTypes = function(e) {
|
| + var types = e.details.types;
|
| + types.map(function(type) {
|
| + if (!typeCountersMap.hasOwnProperty(type)) {
|
| + typeCountersMap[type] = {};
|
| + }
|
| + });
|
| + chrome.sync.events.removeEventListener(
|
| + 'onReceivedListOfTypes',
|
| + onReceivedListOfTypes);
|
| + refreshTypeCountersDisplay();
|
| + };
|
| +
|
| + /**
|
| + * Callback for receipt of updated per-type counters.
|
| + *
|
| + * @param {!Object} e An event containing an updated counter.
|
| + */
|
| + var onCountersUpdated = function(e) {
|
| + var details = e.details;
|
| +
|
| + var modelType = details.modelType;
|
| + var counters = details.counters;
|
| +
|
| + if (typeCountersMap.hasOwnProperty(modelType))
|
| + for (k in counters) {
|
| + typeCountersMap[modelType][k] = counters[k];
|
| + }
|
| + refreshTypeCountersDisplay();
|
| + };
|
| +
|
| + /**
|
| + * Initializes state and callbacks for the per-type counters and status UI.
|
| + */
|
| + var initTypeCounters = function() {
|
| + chrome.sync.events.addEventListener(
|
| + 'onCountersUpdated',
|
| + onCountersUpdated);
|
| + chrome.sync.events.addEventListener(
|
| + 'onReceivedListOfTypes',
|
| + onReceivedListOfTypes);
|
| +
|
| + chrome.sync.requestListOfTypes();
|
| + chrome.sync.registerForPerTypeCounters();
|
| + };
|
| +
|
| + var onLoad = function() {
|
| + initTypeCounters();
|
| + };
|
| +
|
| + return {
|
| + onLoad: onLoad
|
| + };
|
| +});
|
| +
|
| +document.addEventListener('DOMContentLoaded', chrome.sync.types.onLoad, false);
|
|
|