Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2551)

Unified Diff: chrome/browser/resources/about_invalidations.js

Issue 159773006: [invalidations] Added table with registered objectsIds (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@about_invalidations_clean
Patch Set: Fixed some nits Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/about_invalidations.js
diff --git a/chrome/browser/resources/about_invalidations.js b/chrome/browser/resources/about_invalidations.js
index db58dc9bf91500a770065ce7a1faa02ee0240fe1..63997cab427bcfcfa5a2f40edb04bb4fffe39f1c 100644
--- a/chrome/browser/resources/about_invalidations.js
+++ b/chrome/browser/resources/about_invalidations.js
@@ -1,8 +1,14 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
+// 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.invalidations', function() {
+ /**
+ * Local variable where we maintain a count of the invalidations received
+ * and of every ObjectId that has ever been updated (note that this doesn't
+ * log any invalidations ocurred prior to opening the about:invalidation page)
+ */
+ var tableObjects = {};
function quote(str) {
return '\"' + str + '\"';
@@ -21,6 +27,31 @@ cr.define('chrome.invalidations', function() {
var invalidationsLog = $('invalidations-log');
invalidationsLog.value += logMessage + '\n';
}
+ /**
+ * Updates the jstemplate with the latest ObjectIds, ordered by registrar.
+ */
+ function repaintTable() {
+ var header = {
rlarocque 2014/02/15 00:09:39 Why not just put this in the HTML? Putting it the
mferreria_g 2014/02/15 01:27:39 Wasn't aware of the <thead> element. Done.
+ registrar: 'Registrar',
+ source: 'Source',
+ name: 'Name',
+ count: 'Count',
+ version: 'Last Version',
+ time: 'Last Time',
+ payload: 'Last Payload',
+ type: 'header'
+ };
+ var keys = [];
+ for (var key in tableObjects)
+ keys.push(key);
+ keys.sort();
+ var sortedInvalidations = [];
+ sortedInvalidations.push(header);
+ for (var i = 0; i < keys.length; i++)
+ sortedInvalidations.push(tableObjects[keys[i]]);
+ var wrapped = { objectsidtable: sortedInvalidations };
+ jstProcess(new JsEvalContext(wrapped), $('objectsid-table-div'));
+ }
/**
* Shows the current state of the InvalidatorService
@@ -40,7 +71,7 @@ cr.define('chrome.invalidations', function() {
* Adds to the log the latest invalidations received
*
* @param {Array of Object} allInvalidations The array of ObjectId
- * that contains the invalidations received by the InvalidatorService
+ * that contains the invalidations received by the InvalidatorService.
*/
function logInvalidations(allInvalidations) {
for (var i = 0; i < allInvalidations.length; i++) {
@@ -55,8 +86,80 @@ cr.define('chrome.invalidations', function() {
quote(inv.payload);
appendToLog(logMessage);
+ var isInvalidation = true;
+ logToTable(inv, isInvalidation);
}
}
+ repaintTable();
+ }
+
+ /**
+ * Marks a change in the table whether a new invalidation has arrived
+ * or a new ObjectId is currently being added or updated.
+ *
+ * @param {object} oId The ObjectId being added or updated.
+ * @param {bool} isInvaldation A flag that says that an invalidation
+ * for this ObjectId has arrived or we just need to add it to the table
+ * as it was just updated its state.
+ */
+ function logToTable(oId, isInvalidation) {
+ var registrar = oId.registrar;
+ var name = oId.objectId.name;
+ var source = oId.objectId.source;
+ var key = source + '-' + name;
+ var time = new Date();
+ var version = oId.isUnknownVersion ? '?' :
+ oId.version;
+ var payload = '';
+ if (oId.hasOwnProperty('payload'))
+ payload = oId.payload;
+ if (!(key in tableObjects)) {
+ tableObjects[key] = {
+ name: name,
+ source: source,
+ count: 0,
+ registrar: registrar,
+ time: '',
+ version: '',
+ payload: '',
+ type: 'content'
+ };
+ }
+ // Refresh the type to be a content because it might have been
+ // greyed out.
+ tableObjects[key].type = 'content';
+ if (isInvalidation) {
+ tableObjects[key].count = tableObjects[key].count + 1;
+ tableObjects[key].time = time.toTimeString();
+ tableObjects[key].version = version;
+ tableObjects[key].payload = payload;
+ }
+ }
+
+ /**
+ * Updates the table with the objects ids registered for invalidations
+ *
+ * @param {string} registrar The name of the owner of the InvalidationHandler
+ * that is registered for invalidations
+ * @param {Array of Object} allIds An array of ObjectsIds that are currently
+ * registered for invalidations. It is not differential (as in, whatever
+ * is not registered now but was before, it mean it was taken out the
+ * registered objects)
+ */
+ function updateIds(registrar, allIds) {
+ // Grey out every datatype assigned to this registrar
+ // (and reenable them later in case they are still registered).
+ for (var key in tableObjects) {
+ if (tableObjects[key]['registrar'] === registrar)
+ tableObjects[key].type = 'greyed';
+ }
+ // Reenable those ObjectsIds still registered with this registrar.
+ for (var i = 0; i < allIds.length; i++) {
+ var oId = { objectId: allIds[i], registrar: registrar };
+ var isInvalidation = false;
+ logToTable(oId, isInvalidation);
+ }
+ repaintTable();
}
/**
@@ -69,6 +172,7 @@ cr.define('chrome.invalidations', function() {
return {
updateState: updateState,
+ updateIds: updateIds,
logInvalidations: logInvalidations,
onLoadWork: onLoadWork
};

Powered by Google App Engine
This is Rietveld 408576698