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

Unified Diff: tools/win/sizeviewer/main.js

Issue 801123002: Improve sizeviewer for Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years 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
« no previous file with comments | « tools/win/sizeviewer/favicon.png ('k') | tools/win/sizeviewer/sizeviewer.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/win/sizeviewer/main.js
diff --git a/tools/win/sizeviewer/main.js b/tools/win/sizeviewer/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..82b2f237513a029cd905c15f525b83d88dbb9c89
--- /dev/null
+++ b/tools/win/sizeviewer/main.js
@@ -0,0 +1,116 @@
+google.load("visualization", "1", {packages:["treemap"]});
+google.setOnLoadCallback(drawChart);
+function drawChart() {
+ var data = google.visualization.arrayToDataTable(g_raw_data);
+
+ tree = new google.visualization.TreeMap(
+ document.getElementById('chart_div'));
+
+ tree.draw(data, {
+ minColor: '#faa',
+ midColor: '#f77',
+ maxColor: '#f44',
+ headerHeight: 20,
+ fontColor: 'black',
+ showScale: true,
+ minColorValue: 0,
+ maxColorValue: g_maxval,
+ generateTooltip: tooltip
+ });
+
+ // Update from 'Loading'.
+ document.getElementById('title').innerText = g_dllname;
+
+ // Set favicon.
+ var doc_head = document.getElementsByTagName('head')[0];
+ var new_link = document.createElement('link');
+ new_link.rel = 'shortcut icon';
+ new_link.href = 'data:image/png;base64,'+g_favicon;
+ doc_head.appendChild(new_link);
+
+ var cur_line_sizes = null;
+ function nodeSelect() {
+ symlist.setValue('');
+ var selected = tree.getSelection();
+ if (selected.length > 0) {
+ var filename = data.getValue(selected[0].row, 0);
+ var size = data.getValue(selected[0].row, 2);
+ if (size >= 0) {
+ // Is a leaf.
+ cur_line_sizes = g_line_data[filename];
+ var body = g_file_contents[filename];
+ editor.setValue(body);
+ var maximum_size = 0;
+ for (var line in cur_line_sizes) {
+ maximum_size = Math.max(maximum_size, cur_line_sizes[line][0]);
+ }
+ for (var line in cur_line_sizes) {
+ var symbol_indices = cur_line_sizes[line][1];
+ var symbols = [];
+ for (var i = 0; i < symbol_indices.length; ++i) {
+ symbols.push(g_symbol_list[symbol_indices[i]]);
+ }
+ var size = cur_line_sizes[line][0];
+ // Zero based lines.
+ var line_num = parseInt(line, 10) - 1;
+ if (size >= maximum_size * 0.9)
+ editor.addLineClass(line_num, 'gutter', 'linebg-top10');
+ else if (size >= maximum_size * 0.75)
+ editor.addLineClass(line_num, 'gutter', 'linebg-top25');
+ else if (size >= maximum_size * 0.5)
+ editor.addLineClass(line_num, 'gutter', 'linebg-top50');
+ function addTag() {
+ var line_num = parseInt(line, 10);
+ var symbols_tooltip = symbols.join('\n');
+ var num_syms = symbols.length;
+ // markText wants 0-based lines.
+ var mark = editor.markText({line: line_num - 1, ch: 0},
+ {line: line_num, ch: 0},
+ { className: 'symbol-tag' });
+ CodeMirror.on(mark, 'beforeCursorEnter', function(e) {
+ symlist.setValue(num_syms +
+ ' symbol(s) contributing to line ' +
+ line_num + ':\n' +
+ symbols_tooltip);
+ });
+ }
+ addTag();
+ }
+ }
+ }
+ }
+ google.visualization.events.addListener(tree, 'select', nodeSelect);
+
+ editor = CodeMirror.fromTextArea(
+ document.getElementById('source_view'), {
+ readOnly: "nocursor",
+ mode: { name: 'text/x-c++src' },
+ lineNumbers: true,
+ lineNumberFormatter: weightGetter
+ });
+ editor.setSize(850, 600);
+
+ symlist = CodeMirror.fromTextArea(
+ document.getElementById('symlist_view'), {
+ readOnly: "nocursor",
+ mode: { name: 'none' },
+ lineNumbers: false
+ });
+ symlist.setSize(850, 150);
+
+ function tooltip(row, size, value) {
+ return '<div style="background:#fd9;' +
+ ' padding:10px; border-style:solid"><b>' +
+ data.getValue(row, 0) + '</b><br>' +
+ data.getColumnLabel(2) +
+ ' (total value of this cell and its children): ' + size +
+ '<br>';
+ }
+
+ function weightGetter(line) {
+ if (cur_line_sizes && cur_line_sizes.hasOwnProperty('' + line)) {
+ return cur_line_sizes['' + line][0] + ' bytes ' + line;
+ }
+ return line;
+ }
+}
« no previous file with comments | « tools/win/sizeviewer/favicon.png ('k') | tools/win/sizeviewer/sizeviewer.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698