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

Side by Side 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, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // require cr.js
6 // require cr/event_target.js
7 // require cr/util.js
8
9 (function() {
10 'use strict';
11
12 /**
13 * Copy properties from src to dest.
14 * @param {Object} src
15 * @param {Object} dest
16 */
17 var overwrite_ = function(src, dest) {
18 for (var i in src)
19 dest[i] = src[i];
20 return dest;
21 };
22
23 var normalizer_ = {
24 avail_: function(v) {
25 return v === undefined ? 'N/A' : '';
26 },
27
28 bool: function(v) {
29 return normalizer_.avail_(v) || (v ? 'true' : 'false');
30 },
31
32 text: function(v) {
33 return normalizer_.avail_(v) || v;
34 },
35
36 numBytes: function(v) {
37 return normalizer_.avail_(v) || (function() {
38 var PREFIX = ['', 'K', 'M', 'G', 'T'];
39 var len = Math.floor((v.length - 1) / 3);
40 return v.substring(0, v.length - 3 * len) +
41 PREFIX[len] + 'B';
42 })();
43 },
44
45 date: function(v) {
46 return normalizer_.avail_(v) || (function() {
47 // TODO(tzik): show relative time
48 return new Date(v).toString();
49 })();
50 },
51
52 num: function(v) {
53 return normalizer_.avail_(v) || v.toString();
54 }
55 };
56
57 /**
58 * @type {{
59 * available_space: {?string},
60 * global_data: Object.<string, Object>,
61 * host_data: Object.<string, Object>,
62 * origin_data: Object.<string, Object>
63 * }}
64 */
65 var quota_data = {
66 available_space: undefined,
67 global_data: {},
68 host_data: {},
69 origin_data: {},
70 stats: {}
71 };
72
73 /**
74 * Event Handler for |cr.quota.onAvailableSpaceUpdated|.
75 * |event.detail| contains |available_space| size.
76 * |available_space| is a (toString'ed) 64bit integer,
77 * that represents total available disk space.
78 */
79 function handleAvailableSpace(event) {
80 /**
81 * @type {string}
82 */
83 var available_space = event.detail;
84
85 quota_data.available_space = available_space;
86 $('diskspace-entry').innerHTML = normalizer_.numBytes(available_space);
87 };
88
89 /**
90 * Event Handler for |cr.quota.onGlobalDataUpdated|.
91 * |event.detail| contains a record which has:
92 * |type|:
93 * Storage type, that is either 'temporary' or 'persistent'
94 * |usage|:
95 * Total storage usage of all hosts,
96 * toString'ed 64bit integer.
97 * |unlimited_usage|:
98 * Total storage usage of unlimited-quota origins,
99 * toString'ed 64bit integer.
100 * |quota|:
101 * Total quota of the storage, toString'ed 64bit integer.
102 *
103 * |usage|, |unlimited_usage| and |quota| can be missing,
104 * and some additional field can be included.
105 */
106 function handleGlobalData(event) {
107 /**
108 * @type {{
109 * type: {!string},
110 * usage: {?string},
111 * unlimited_usage: {?string}
112 * quota: {?string}
113 * }}
114 */
115 var data = event.detail;
116
117 var entry = quota_data.global_data[data.type] ||
118 (quota_data.global_data[data.type] = {});
119 overwrite_(data, entry);
120
121 if (!entry.element) {
122 entry.element = cr.doc.createElement('tr');
123 $('globaldata-entries').appendChild(entry.element);
124 }
125
126 entry.element.innerHTML =
127 '<td>' + normalizer_.text(entry.type) + '</td>' +
128 '<td>' + normalizer_.numBytes(entry.usage) + '</td>' +
129 '<td>' + normalizer_.numBytes(entry.unlimited_usage) + '</td>' +
130 '<td>' + normalizer_.numBytes(entry.quota) + '</td>';
131 };
132
133 /**
134 * Event Handler for |cr.quota.onHostDataUpdated|.
135 * |event.detail| contains records which have:
136 * |host|:
137 * Hostname of the entry. (e.g. 'example.com')
138 * |type|:
139 * Storage type. 'temporary' or 'persistent'
140 * |usage|:
141 * Total storage usage of the host, toString'ed 64bit integer.
142 * |quota|:
143 * Per-host quota, toString'ed 64bit integer.
144 *
145 * |usage| and |quota| can be missing,
146 * and some additional field can be included.
147 */
148 function handleHostData(event) {
149 /**
150 * @type {Array<{
151 * host: {!string},
152 * type: {!string},
153 * usage: {?string},
154 * quota: {?string}
155 * }}
156 */
157 var data_array = event.detail;
158
159 for (var i = 0; i < data_array.length; ++i) {
160 var data = data_array[i];
161
162 var id = data.host + '/' + data.type;
163 var entry = quota_data.host_data[id] ||
164 (quota_data.host_data[id] = {});
165 overwrite_(data, entry);
166
167 if (!entry.element) {
168 entry.element = cr.doc.createElement('tr');
169 $('host-entries').appendChild(entry.element);
170 }
171
172 entry.element.innerHTML =
173 '<td>' + normalizer_.text(entry.host) + '</td>' +
174 '<td>' + normalizer_.text(entry.type) + '</td>' +
175 '<td>' + normalizer_.numBytes(entry.usage) + '</td>' +
176 '<td>' + normalizer_.numBytes(entry.quota) + '</td>';
177 }
178 }
179
180 /**
181 * Event Handler for |cr.quota.onOriginDataUpdated|.
182 * |event.detail| contains records which have:
183 * |origin|:
184 * Origin URL of the entry.
185 * |type|:
186 * Storage type of the entry. 'temporary' or 'persistent'.
187 * |host|:
188 * Hostname of the entry.
189 * |in_use|:
190 * Whether the origin is in use or not.
191 * |used_count|:
192 * Used count of the storage from the origin.
193 * |last_access_time|:
194 * Last storage access time from the origin.
195 * Number of seconds since Jan 1, 1970.
196 *
197 * |in_use|, |used_count| and |last_access_time| can be missing,
198 * and some additional field can be included.
199 */
200 function handleOriginData(event) {
201 /**
202 * @type {Array<{
203 * origin: {!string},
204 * type: {!string},
205 * host: {!string},
206 * in_use: {?boolean},
207 * used_count: {?number},
208 * last_access_time: {?number}
209 * }>}
210 */
211 var data_array = event.detail;
212
213 for (var i = 0; i < data_array.length; ++i) {
214 var data = data_array[i];
215
216 var id = data.origin + data.type;
217 var entry = quota_data.origin_data[id] ||
218 (quota_data.origin_data[id] = {});
219 overwrite_(data, entry);
220
221 if (!entry.element) {
222 entry.element = cr.doc.createElement('tr');
223 $('origin-entries').appendChild(entry.element);
224 }
225
226 entry.element.innerHTML =
227 '<td>' + normalizer_.text(entry.origin) + '</td>' +
228 '<td>' + normalizer_.text(entry.type) + '</td>' +
229 '<td>' + normalizer_.text(entry.host) + '</td>' +
230 '<td>' + normalizer_.bool(entry.in_use) + '</td>' +
231 '<td>' + normalizer_.num(entry.used_count) + '</td>' +
232 '<td>' + normalizer_.date(entry.last_access_time) + '</td>';
233 }
234 }
235
236 /**
237 * Event Handler for |cr.quota.onStatisticsUpdated|.
238 * |event.detail| contains misc statistics data as dictionary.
239 */
240 function handleStatistics(event) {
241 var stats = event.detail;
242
243 for (var key in stats) {
244 var value = stats[key];
245 var entry = quota_data.stats[key] ||
246 (quota_data.stats[key] = {});
247 entry.value = value;
248 if (!entry.element) {
249 entry.element = cr.doc.createElement('tr');
250 $('stat-entries').appendChild(entry.element);
251 }
252
253 entry.element.innerHTML =
254 '<td>' + normalizer_.text(entry.value) + '</td>';
255 }
256 }
257
258 function onLoad() {
259 cr.quota.onAvailableSpaceUpdated.addEventListener('update',
260 handleAvailableSpace);
261 cr.quota.onGlobalDataUpdated.addEventListener('update', handleGlobalData);
262 cr.quota.onHostDataUpdated.addEventListener('update', handleHostData);
263 cr.quota.onOriginDataUpdated.addEventListener('update', handleOriginData);
264 cr.quota.triggar();
265 }
266
267 cr.doc.addEventListener('DOMContentLoaded', onLoad, false);
268 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698