Index: chrome/browser/resources/quota_internals/quota-internals.js |
diff --git a/chrome/browser/resources/quota_internals/quota-internals.js b/chrome/browser/resources/quota_internals/quota-internals.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ab5461e1238b050a5f1597fcd2ddc33ec471b2c9 |
--- /dev/null |
+++ b/chrome/browser/resources/quota_internals/quota-internals.js |
@@ -0,0 +1,279 @@ |
+ |
Evan Stade
2011/05/26 16:13:13
license header
tzik
2011/05/27 14:53:59
Done.
|
+document.addEventListener("DOMContentLoaded",function(){ |
Evan Stade
2011/05/26 16:13:13
please don't inline this function. Follow the cr.d
|
+ |
+function LOG() { |
Evan Stade
2011/05/26 16:13:13
every function in this file needs a comment
|
+ if(window.console && console.log) |
+ console.log.apply(console, arguments); |
+} |
+ |
+function forEach(xs, f) { |
+ for(var i=0; i < xs.length; ++i) |
+ f(xs[i]); |
+} |
+ |
+function lift(f) { |
+ return function(xs) { |
+ if(xs) |
+ forEach(xs, f); |
+ }; |
+} |
+ |
+function clear_child(element) { |
+ while (element.hasChildNodes()) |
+ element.removeChild(element.firstChild); |
+ return element; |
+} |
+ |
+function make_elem(tag, text) { |
+ var elem = document.createElement(tag); |
+ if (text) |
+ elem.appendChild(document.createTextNode(text)); |
+ return elem; |
+} |
+ |
+function print_text(text) { |
+ if (text === undefined) |
+ return "N/A"; |
+ return text; |
+} |
+ |
+function print_byte_number(num_text) { |
+ if (num_text === undefined) |
+ return "N/A"; |
+ var prefix = ["", "K", "M", "G", "T"]; |
+ var len = Math.floor((num_text.length-1)/3); |
+ return num_text.substring(0, num_text.length - 3 * len) + prefix[len] + "B"; |
+} |
+ |
+function print_date(date_text) { |
+ if (date_text === undefined) |
+ return "N/A"; |
+ var d = new Date(date_text); |
+ return d.toString(); |
+} |
+ |
+function print_bool(b) { |
+ if (b === undefined) return "N/A"; |
+ return b ? "true" : "false"; |
+} |
+ |
+function print_int(i) { |
+ return i === undefined ? "N/A" : i.toString(); |
+} |
+ |
+if(!window.chrome || !chrome.send) { |
+ document.title += " (test mode)"; |
+ LOG("Entering Test Mode..."); |
+ |
+ var AvailableSpace = "100000000"; |
+ var GlobalData = {type: "temporary", usage: "10", quota: "10000"}; |
+ var HostData = [ |
+ {host: "example.com", type: "temporary", usage: "0", quota: "0"}]; |
+ var OriginData = [ |
+ {origin: "http://example.com/", type: "temporary", host: "example.com", |
+ in_use: true, used_count: 1, last_access: Date.now()}]; |
+ |
+ if(!window.chrome) |
+ window.chrome = {}; |
+ window.chrome.send = function(msg, param) { |
+ switch(msg) { |
+ case "requestData": |
+ OnRecvAvailableSpace(AvailableSpace); |
+ OnRecvGlobalData(GlobalData); |
+ OnRecvHostData(HostData); |
+ OnRecvOriginData(OriginData); |
+ break; |
+ default: |
+ LOG("unknown message: " + msg); |
+ break; |
+ } |
+ }; |
+} |
+ |
+// Chrome Callback |
+OnRecvAvailableSpace = function(avail_space) { |
+ var local = arguments.callee; |
+ if (avail_space !== undefined) |
+ local.avail_space = avail_space; |
+ |
+ var o = document.getElementById("diskspace-entry"); |
+ clear_child(o); |
+ o.appendChild(document.createTextNode( |
+ print_byte_number(avail_space))); |
+}; |
+ |
+OnRecvGlobalData = function(data){ |
+ var local = arguments.callee; |
+ if (!local.map) local.map = {}; |
+ |
+ var entry = local.map[data.type]; |
+ if (entry) { |
+ if (data.type !== undefined) |
+ entry.type = data.type; |
+ if (data.usage !== undefined) |
+ entry.usage = data.usage; |
+ if (data.quota !== undefined) |
+ entry.quota = data.quota; |
+ clear_child(entry.element); |
+ } else{ |
+ entry = { |
+ type: data.type, |
+ usage: data.usage, |
+ quota: data.quota, |
+ element: document.createElement("tr") |
+ }; |
+ local.map[data.type] = entry; |
+ document.getElementById("globaldata-entries") |
+ .appendChild(entry.element); |
+ } |
+ |
+ entry.element.appendChild( |
+ make_elem("td", print_text(entry.type))); |
+ entry.element.appendChild( |
+ make_elem("td", print_byte_number(entry.usage))); |
+ entry.element.appendChild( |
+ make_elem("td", print_byte_number(entry.quota))); |
+}; |
+ |
+OnRecvHostData = lift(function(data) { |
+ var local = arguments.callee; |
+ if (!local.map) local.map = {}; |
+ |
+ var entry = local.map[data.host + "/" + data.type]; |
+ if (entry) { |
+ if (data.host !== undefined) |
+ entry.host = data.host; |
+ if (data.type !== undefined) |
+ entry.type = data.type; |
+ if (data.usage !== undefined) |
+ entry.usage = data.usage; |
+ if (data.quota !== undefined) |
+ entry.quota = data.quota; |
+ clear_child(entry.element); |
+ } else { |
+ entry = { |
+ host: data.host, |
+ type: data.type, |
+ quota: data.quota, |
+ usage: data.usage, |
+ element: document.createElement("tr") |
+ }; |
+ local.map[data.host + "/" + data.type] = entry; |
+ document.getElementById("host-entries") |
+ .appendChild(entry.element); |
+ } |
+ |
+ entry.element.appendChild( |
+ make_elem("td", print_text(entry.host))); |
+ entry.element.appendChild( |
+ make_elem("td", print_text(entry.type))); |
+ entry.element.appendChild( |
+ make_elem("td", print_byte_number(entry.usage))); |
+ entry.element.appendChild( |
+ make_elem("td", print_byte_number(entry.quota))); |
+}); |
+ |
+OnRecvOriginData = lift(function(data) { |
+ var local = arguments.callee; |
+ if (!local.map) local.map = {}; |
+ |
+ var entry = local.map[data.origin + data.type]; |
+ if (entry) { |
+ if (data.origin !== undefined) |
+ entry.origin = data.origin; |
+ if (data.type !== undefined) |
+ entry.type = data.type; |
+ if (data.host !== undefined) |
+ entry.host = data.host; |
+ if (data.in_use !== undefined) |
+ entry.in_use = data.in_use; |
+ if (data.last_access !== undefined) |
+ entry.last_access = data.last_access; |
+ clear_child(entry.element); |
+ } else { |
+ entry = { |
+ origin: data.origin, |
+ type: data.type, |
+ host: data.host, |
+ in_use: data.in_use, |
+ used_count: data.used_count, |
+ last_access: data.last_access, |
+ element: document.createElement("tr") |
+ }; |
+ local.map[data.origin + data.type] = entry; |
+ document.getElementById("origin-entries") |
+ .appendChild(entry.element); |
+ } |
+ |
+ entry.element.appendChild( |
+ make_elem("td", print_text(entry.origin))); |
+ entry.element.appendChild( |
+ make_elem("td", print_text(entry.type))); |
+ entry.element.appendChild( |
+ make_elem("td", print_text(entry.host))); |
+ entry.element.appendChild( |
+ make_elem("td", print_bool(entry.in_use))); |
+ entry.element.appendChild( |
+ make_elem("td", print_int(entry.used_count))); |
+ entry.element.appendChild( |
+ make_elem("td", print_date(entry.last_access))); |
+}); |
+ |
+/* |
Evan Stade
2011/05/26 16:13:13
commented out code?
tzik
2011/05/27 14:53:59
Done.
|
+function parse_query(query) { |
+ var entries = hash.substring(1).split("&"); |
+ var params = {}; |
+ for(var i = 0; i < entries.length; ++i) { |
+ var pair = entries[i].match(/(\w+)=(.*)/); |
+ if(pair && pair.length == 3) |
+ params[pair[1]] = decodeURL(pair[2]); |
+ } |
+ return params; |
+} |
+ |
+function make_query(params) { |
+ var query = []; |
+ for(var i in params) |
+ query.push(i+"="+encodeURL(params[i])); |
+ return "#" + query.join("&"); |
+} |
+ |
+var switches = document.getElementsByClassName("sort-switches"); |
+for (var i=0; i < switches.length;++i) { |
+ switches[i].addEventListener("click",function() { |
+ var params = parse_query(location.hash); |
+ params["sort"] = i; |
+ location.hash = make_query(params); |
+ },false); |
+} |
+ |
+document.addEventListener("hashchange",function() { |
+ var query = parse_query(location.hash); |
+},false); |
+ |
+function sort_entries(i) { |
+ var origins = []; |
+ for (var j in origin_map) |
+ origins.push(j); |
+ origins.sort(function(x,y){ |
+ var xs = origin_map[x][i]; |
+ var ys = origin_map[y][i]; |
+ return xs<ys?-1:xs>ys?1:0; |
+ }); |
+} |
+*/ |
+ |
+chrome.send("requestData"); |
+ |
+},false); |
+ |
+// Chrome Event Handler |
+ |
+function NOTREADY() { |
+ console.log("Recieved some data but page is not in ready"); |
+} |
+ |
+var OnRecvAvailableSpace = NOTREADY; |
+var OnRecvGlobalData = NOTREADY; |
+var OnRecvHostData = NOTREADY; |
+var OnRecvOriginData = NOTREADY; |