| 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);
|
| +})();
|
|
|