Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 | |
|
Evan Stade
2011/05/26 16:13:13
license header
tzik
2011/05/27 14:53:59
Done.
| |
| 2 document.addEventListener("DOMContentLoaded",function(){ | |
|
Evan Stade
2011/05/26 16:13:13
please don't inline this function. Follow the cr.d
| |
| 3 | |
| 4 function LOG() { | |
|
Evan Stade
2011/05/26 16:13:13
every function in this file needs a comment
| |
| 5 if(window.console && console.log) | |
| 6 console.log.apply(console, arguments); | |
| 7 } | |
| 8 | |
| 9 function forEach(xs, f) { | |
| 10 for(var i=0; i < xs.length; ++i) | |
| 11 f(xs[i]); | |
| 12 } | |
| 13 | |
| 14 function lift(f) { | |
| 15 return function(xs) { | |
| 16 if(xs) | |
| 17 forEach(xs, f); | |
| 18 }; | |
| 19 } | |
| 20 | |
| 21 function clear_child(element) { | |
| 22 while (element.hasChildNodes()) | |
| 23 element.removeChild(element.firstChild); | |
| 24 return element; | |
| 25 } | |
| 26 | |
| 27 function make_elem(tag, text) { | |
| 28 var elem = document.createElement(tag); | |
| 29 if (text) | |
| 30 elem.appendChild(document.createTextNode(text)); | |
| 31 return elem; | |
| 32 } | |
| 33 | |
| 34 function print_text(text) { | |
| 35 if (text === undefined) | |
| 36 return "N/A"; | |
| 37 return text; | |
| 38 } | |
| 39 | |
| 40 function print_byte_number(num_text) { | |
| 41 if (num_text === undefined) | |
| 42 return "N/A"; | |
| 43 var prefix = ["", "K", "M", "G", "T"]; | |
| 44 var len = Math.floor((num_text.length-1)/3); | |
| 45 return num_text.substring(0, num_text.length - 3 * len) + prefix[len] + "B"; | |
| 46 } | |
| 47 | |
| 48 function print_date(date_text) { | |
| 49 if (date_text === undefined) | |
| 50 return "N/A"; | |
| 51 var d = new Date(date_text); | |
| 52 return d.toString(); | |
| 53 } | |
| 54 | |
| 55 function print_bool(b) { | |
| 56 if (b === undefined) return "N/A"; | |
| 57 return b ? "true" : "false"; | |
| 58 } | |
| 59 | |
| 60 function print_int(i) { | |
| 61 return i === undefined ? "N/A" : i.toString(); | |
| 62 } | |
| 63 | |
| 64 if(!window.chrome || !chrome.send) { | |
| 65 document.title += " (test mode)"; | |
| 66 LOG("Entering Test Mode..."); | |
| 67 | |
| 68 var AvailableSpace = "100000000"; | |
| 69 var GlobalData = {type: "temporary", usage: "10", quota: "10000"}; | |
| 70 var HostData = [ | |
| 71 {host: "example.com", type: "temporary", usage: "0", quota: "0"}]; | |
| 72 var OriginData = [ | |
| 73 {origin: "http://example.com/", type: "temporary", host: "example.com", | |
| 74 in_use: true, used_count: 1, last_access: Date.now()}]; | |
| 75 | |
| 76 if(!window.chrome) | |
| 77 window.chrome = {}; | |
| 78 window.chrome.send = function(msg, param) { | |
| 79 switch(msg) { | |
| 80 case "requestData": | |
| 81 OnRecvAvailableSpace(AvailableSpace); | |
| 82 OnRecvGlobalData(GlobalData); | |
| 83 OnRecvHostData(HostData); | |
| 84 OnRecvOriginData(OriginData); | |
| 85 break; | |
| 86 default: | |
| 87 LOG("unknown message: " + msg); | |
| 88 break; | |
| 89 } | |
| 90 }; | |
| 91 } | |
| 92 | |
| 93 // Chrome Callback | |
| 94 OnRecvAvailableSpace = function(avail_space) { | |
| 95 var local = arguments.callee; | |
| 96 if (avail_space !== undefined) | |
| 97 local.avail_space = avail_space; | |
| 98 | |
| 99 var o = document.getElementById("diskspace-entry"); | |
| 100 clear_child(o); | |
| 101 o.appendChild(document.createTextNode( | |
| 102 print_byte_number(avail_space))); | |
| 103 }; | |
| 104 | |
| 105 OnRecvGlobalData = function(data){ | |
| 106 var local = arguments.callee; | |
| 107 if (!local.map) local.map = {}; | |
| 108 | |
| 109 var entry = local.map[data.type]; | |
| 110 if (entry) { | |
| 111 if (data.type !== undefined) | |
| 112 entry.type = data.type; | |
| 113 if (data.usage !== undefined) | |
| 114 entry.usage = data.usage; | |
| 115 if (data.quota !== undefined) | |
| 116 entry.quota = data.quota; | |
| 117 clear_child(entry.element); | |
| 118 } else{ | |
| 119 entry = { | |
| 120 type: data.type, | |
| 121 usage: data.usage, | |
| 122 quota: data.quota, | |
| 123 element: document.createElement("tr") | |
| 124 }; | |
| 125 local.map[data.type] = entry; | |
| 126 document.getElementById("globaldata-entries") | |
| 127 .appendChild(entry.element); | |
| 128 } | |
| 129 | |
| 130 entry.element.appendChild( | |
| 131 make_elem("td", print_text(entry.type))); | |
| 132 entry.element.appendChild( | |
| 133 make_elem("td", print_byte_number(entry.usage))); | |
| 134 entry.element.appendChild( | |
| 135 make_elem("td", print_byte_number(entry.quota))); | |
| 136 }; | |
| 137 | |
| 138 OnRecvHostData = lift(function(data) { | |
| 139 var local = arguments.callee; | |
| 140 if (!local.map) local.map = {}; | |
| 141 | |
| 142 var entry = local.map[data.host + "/" + data.type]; | |
| 143 if (entry) { | |
| 144 if (data.host !== undefined) | |
| 145 entry.host = data.host; | |
| 146 if (data.type !== undefined) | |
| 147 entry.type = data.type; | |
| 148 if (data.usage !== undefined) | |
| 149 entry.usage = data.usage; | |
| 150 if (data.quota !== undefined) | |
| 151 entry.quota = data.quota; | |
| 152 clear_child(entry.element); | |
| 153 } else { | |
| 154 entry = { | |
| 155 host: data.host, | |
| 156 type: data.type, | |
| 157 quota: data.quota, | |
| 158 usage: data.usage, | |
| 159 element: document.createElement("tr") | |
| 160 }; | |
| 161 local.map[data.host + "/" + data.type] = entry; | |
| 162 document.getElementById("host-entries") | |
| 163 .appendChild(entry.element); | |
| 164 } | |
| 165 | |
| 166 entry.element.appendChild( | |
| 167 make_elem("td", print_text(entry.host))); | |
| 168 entry.element.appendChild( | |
| 169 make_elem("td", print_text(entry.type))); | |
| 170 entry.element.appendChild( | |
| 171 make_elem("td", print_byte_number(entry.usage))); | |
| 172 entry.element.appendChild( | |
| 173 make_elem("td", print_byte_number(entry.quota))); | |
| 174 }); | |
| 175 | |
| 176 OnRecvOriginData = lift(function(data) { | |
| 177 var local = arguments.callee; | |
| 178 if (!local.map) local.map = {}; | |
| 179 | |
| 180 var entry = local.map[data.origin + data.type]; | |
| 181 if (entry) { | |
| 182 if (data.origin !== undefined) | |
| 183 entry.origin = data.origin; | |
| 184 if (data.type !== undefined) | |
| 185 entry.type = data.type; | |
| 186 if (data.host !== undefined) | |
| 187 entry.host = data.host; | |
| 188 if (data.in_use !== undefined) | |
| 189 entry.in_use = data.in_use; | |
| 190 if (data.last_access !== undefined) | |
| 191 entry.last_access = data.last_access; | |
| 192 clear_child(entry.element); | |
| 193 } else { | |
| 194 entry = { | |
| 195 origin: data.origin, | |
| 196 type: data.type, | |
| 197 host: data.host, | |
| 198 in_use: data.in_use, | |
| 199 used_count: data.used_count, | |
| 200 last_access: data.last_access, | |
| 201 element: document.createElement("tr") | |
| 202 }; | |
| 203 local.map[data.origin + data.type] = entry; | |
| 204 document.getElementById("origin-entries") | |
| 205 .appendChild(entry.element); | |
| 206 } | |
| 207 | |
| 208 entry.element.appendChild( | |
| 209 make_elem("td", print_text(entry.origin))); | |
| 210 entry.element.appendChild( | |
| 211 make_elem("td", print_text(entry.type))); | |
| 212 entry.element.appendChild( | |
| 213 make_elem("td", print_text(entry.host))); | |
| 214 entry.element.appendChild( | |
| 215 make_elem("td", print_bool(entry.in_use))); | |
| 216 entry.element.appendChild( | |
| 217 make_elem("td", print_int(entry.used_count))); | |
| 218 entry.element.appendChild( | |
| 219 make_elem("td", print_date(entry.last_access))); | |
| 220 }); | |
| 221 | |
| 222 /* | |
|
Evan Stade
2011/05/26 16:13:13
commented out code?
tzik
2011/05/27 14:53:59
Done.
| |
| 223 function parse_query(query) { | |
| 224 var entries = hash.substring(1).split("&"); | |
| 225 var params = {}; | |
| 226 for(var i = 0; i < entries.length; ++i) { | |
| 227 var pair = entries[i].match(/(\w+)=(.*)/); | |
| 228 if(pair && pair.length == 3) | |
| 229 params[pair[1]] = decodeURL(pair[2]); | |
| 230 } | |
| 231 return params; | |
| 232 } | |
| 233 | |
| 234 function make_query(params) { | |
| 235 var query = []; | |
| 236 for(var i in params) | |
| 237 query.push(i+"="+encodeURL(params[i])); | |
| 238 return "#" + query.join("&"); | |
| 239 } | |
| 240 | |
| 241 var switches = document.getElementsByClassName("sort-switches"); | |
| 242 for (var i=0; i < switches.length;++i) { | |
| 243 switches[i].addEventListener("click",function() { | |
| 244 var params = parse_query(location.hash); | |
| 245 params["sort"] = i; | |
| 246 location.hash = make_query(params); | |
| 247 },false); | |
| 248 } | |
| 249 | |
| 250 document.addEventListener("hashchange",function() { | |
| 251 var query = parse_query(location.hash); | |
| 252 },false); | |
| 253 | |
| 254 function sort_entries(i) { | |
| 255 var origins = []; | |
| 256 for (var j in origin_map) | |
| 257 origins.push(j); | |
| 258 origins.sort(function(x,y){ | |
| 259 var xs = origin_map[x][i]; | |
| 260 var ys = origin_map[y][i]; | |
| 261 return xs<ys?-1:xs>ys?1:0; | |
| 262 }); | |
| 263 } | |
| 264 */ | |
| 265 | |
| 266 chrome.send("requestData"); | |
| 267 | |
| 268 },false); | |
| 269 | |
| 270 // Chrome Event Handler | |
| 271 | |
| 272 function NOTREADY() { | |
| 273 console.log("Recieved some data but page is not in ready"); | |
| 274 } | |
| 275 | |
| 276 var OnRecvAvailableSpace = NOTREADY; | |
| 277 var OnRecvGlobalData = NOTREADY; | |
| 278 var OnRecvHostData = NOTREADY; | |
| 279 var OnRecvOriginData = NOTREADY; | |
| OLD | NEW |