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

Unified Diff: chrome/browser/resources/quota_internals/event_handler.js

Issue 7053009: Add chrome://quota-internals/ resources (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Add descriptions Created 9 years, 7 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/quota_internals/event_handler.js
diff --git a/chrome/browser/resources/quota_internals/event_handler.js b/chrome/browser/resources/quota_internals/event_handler.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c98d234b4ec914b62437e158f65304c15378fd5
--- /dev/null
+++ b/chrome/browser/resources/quota_internals/event_handler.js
@@ -0,0 +1,268 @@
+// Copyright (c) 2011 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.
+
+// require cr.js
+// require cr/event_target.js
+// require cr/util.js
+
+(function() {
+'use strict';
+
+/**
+ * Copy properties from src to dest.
+ * @param {Object} src
+ * @param {Object} dest
+ */
+var overwrite_ = function(src, dest) {
+ for (var i in src)
+ dest[i] = src[i];
+ return dest;
+};
+
+var normalizer_ = {
+ avail_: function(v) {
+ return v === undefined ? 'N/A' : '';
+ },
+
+ bool: function(v) {
+ return normalizer_.avail_(v) || (v ? 'true' : 'false');
+ },
+
+ text: function(v) {
+ return normalizer_.avail_(v) || v;
+ },
+
+ numBytes: function(v) {
+ return normalizer_.avail_(v) || (function() {
+ var PREFIX = ['', 'K', 'M', 'G', 'T'];
+ var len = Math.floor((v.length - 1) / 3);
+ return v.substring(0, v.length - 3 * len) +
+ PREFIX[len] + 'B';
+ })();
+ },
+
+ date: function(v) {
+ return normalizer_.avail_(v) || (function() {
+ // TODO(tzik): show relative time
+ return new Date(v).toString();
+ })();
+ },
+
+ num: function(v) {
+ return normalizer_.avail_(v) || v.toString();
+ }
+};
+
+/**
+ * @type {{
+ * available_space: {?string},
+ * global_data: Object.<string, Object>,
+ * host_data: Object.<string, Object>,
+ * origin_data: Object.<string, Object>
+ * }}
+ */
+var quota_data = {
+ available_space: undefined,
+ global_data: {},
+ host_data: {},
+ origin_data: {},
+ stats: {}
+};
+
+/**
+ * Event Handler for |cr.quota.onAvailableSpaceUpdated|.
+ * |event.detail| contains |available_space| size.
+ * |available_space| is a (toString'ed) 64bit integer,
+ * that represents total available disk space.
+ */
+function handleAvailableSpace(event) {
+ /**
+ * @type {string}
+ */
+ var available_space = event.detail;
+
+ quota_data.available_space = available_space;
+ $('diskspace-entry').innerHTML = normalizer_.numBytes(available_space);
+};
+
+/**
+ * Event Handler for |cr.quota.onGlobalDataUpdated|.
+ * |event.detail| contains a record which has:
+ * |type|:
+ * Storage type, that is either 'temporary' or 'persistent'
+ * |usage|:
+ * Total storage usage of all hosts,
+ * toString'ed 64bit integer.
+ * |unlimited_usage|:
+ * Total storage usage of unlimited-quota origins,
+ * toString'ed 64bit integer.
+ * |quota|:
+ * Total quota of the storage, toString'ed 64bit integer.
+ *
+ * |usage|, |unlimited_usage| and |quota| can be missing,
+ * and some additional field can be included.
+ */
+function handleGlobalData(event) {
+ /**
+ * @type {{
+ * type: {!string},
+ * usage: {?string},
+ * unlimited_usage: {?string}
+ * quota: {?string}
+ * }}
+ */
+ var data = event.detail;
+
+ var entry = quota_data.global_data[data.type] ||
+ (quota_data.global_data[data.type] = {});
+ overwrite_(data, entry);
+
+ if (!entry.element) {
+ entry.element = cr.doc.createElement('tr');
+ $('globaldata-entries').appendChild(entry.element);
+ }
+
+ entry.element.innerHTML =
+ '<td>' + normalizer_.text(entry.type) + '</td>' +
+ '<td>' + normalizer_.numBytes(entry.usage) + '</td>' +
+ '<td>' + normalizer_.numBytes(entry.unlimited_usage) + '</td>' +
+ '<td>' + normalizer_.numBytes(entry.quota) + '</td>';
+};
+
+/**
+ * Event Handler for |cr.quota.onHostDataUpdated|.
+ * |event.detail| contains records which have:
+ * |host|:
+ * Hostname of the entry. (e.g. 'example.com')
+ * |type|:
+ * Storage type. 'temporary' or 'persistent'
+ * |usage|:
+ * Total storage usage of the host, toString'ed 64bit integer.
+ * |quota|:
+ * Per-host quota, toString'ed 64bit integer.
+ *
+ * |usage| and |quota| can be missing,
+ * and some additional field can be included.
+ */
+function handleHostData(event) {
+ /**
+ * @type {Array<{
+ * host: {!string},
+ * type: {!string},
+ * usage: {?string},
+ * quota: {?string}
+ * }}
+ */
+ var data_array = event.detail;
+
+ for (var i = 0; i < data_array.length; ++i) {
+ var data = data_array[i];
+
+ var id = data.host + '/' + data.type;
+ var entry = quota_data.host_data[id] ||
+ (quota_data.host_data[id] = {});
+ overwrite_(data, entry);
+
+ if (!entry.element) {
+ entry.element = cr.doc.createElement('tr');
+ $('host-entries').appendChild(entry.element);
+ }
+
+ entry.element.innerHTML =
+ '<td>' + normalizer_.text(entry.host) + '</td>' +
+ '<td>' + normalizer_.text(entry.type) + '</td>' +
+ '<td>' + normalizer_.numBytes(entry.usage) + '</td>' +
+ '<td>' + normalizer_.numBytes(entry.quota) + '</td>';
+ }
+}
+
+/**
+ * Event Handler for |cr.quota.onOriginDataUpdated|.
+ * |event.detail| contains records which have:
+ * |origin|:
+ * Origin URL of the entry.
+ * |type|:
+ * Storage type of the entry. 'temporary' or 'persistent'.
+ * |host|:
+ * Hostname of the entry.
+ * |in_use|:
+ * Whether the origin is in use or not.
+ * |used_count|:
+ * Used count of the storage from the origin.
+ * |last_access_time|:
+ * Last storage access time from the origin.
+ * Number of seconds since Jan 1, 1970.
+ *
+ * |in_use|, |used_count| and |last_access_time| can be missing,
+ * and some additional field can be included.
+ */
+function handleOriginData(event) {
+ /**
+ * @type {Array<{
+ * origin: {!string},
+ * type: {!string},
+ * host: {!string},
+ * in_use: {?boolean},
+ * used_count: {?number},
+ * last_access_time: {?number}
+ * }>}
+ */
+ var data_array = event.detail;
+
+ for (var i = 0; i < data_array.length; ++i) {
+ var data = data_array[i];
+
+ var id = data.origin + data.type;
+ var entry = quota_data.origin_data[id] ||
+ (quota_data.origin_data[id] = {});
+ overwrite_(data, entry);
+
+ if (!entry.element) {
+ entry.element = cr.doc.createElement('tr');
+ $('origin-entries').appendChild(entry.element);
+ }
+
+ entry.element.innerHTML =
+ '<td>' + normalizer_.text(entry.origin) + '</td>' +
+ '<td>' + normalizer_.text(entry.type) + '</td>' +
+ '<td>' + normalizer_.text(entry.host) + '</td>' +
+ '<td>' + normalizer_.bool(entry.in_use) + '</td>' +
+ '<td>' + normalizer_.num(entry.used_count) + '</td>' +
+ '<td>' + normalizer_.date(entry.last_access_time) + '</td>';
+ }
+}
+
+/**
+ * Event Handler for |cr.quota.onStatisticsUpdated|.
+ * |event.detail| contains misc statistics data as dictionary.
+ */
+function handleStatistics(event) {
+ var stats = event.detail;
+
+ for (var key in stats) {
+ var value = stats[key];
+ var entry = quota_data.stats[key] ||
+ (quota_data.stats[key] = {});
+ entry.value = value;
+ if (!entry.element) {
+ entry.element = cr.doc.createElement('tr');
+ $('stat-entries').appendChild(entry.element);
+ }
+
+ entry.element.innerHTML =
+ '<td>' + normalizer_.text(entry.value) + '</td>';
+ }
+}
+
+function onLoad() {
+ cr.quota.onAvailableSpaceUpdated.addEventListener('update',
+ handleAvailableSpace);
+ cr.quota.onGlobalDataUpdated.addEventListener('update', handleGlobalData);
+ cr.quota.onHostDataUpdated.addEventListener('update', handleHostData);
+ cr.quota.onOriginDataUpdated.addEventListener('update', handleOriginData);
+ cr.quota.triggar();
+}
+
+cr.doc.addEventListener('DOMContentLoaded', onLoad, false);
+})();

Powered by Google App Engine
This is Rietveld 408576698