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

Side by Side Diff: chrome/browser/resources/net_internals/dataview.js

Issue 2052003: Display the text dump for chrome://net2#data inline, rather than in a new win... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 7 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
« no previous file with comments | « no previous file | chrome/browser/resources/net_internals/index.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * This view displays options for importing/exporting the captured data. Its 6 * This view displays options for importing/exporting the captured data. Its
7 * primarily usefulness is to allow users to copy-paste their data in an easy 7 * primarily usefulness is to allow users to copy-paste their data in an easy
8 * to read format for bug reports. 8 * to read format for bug reports.
9 * 9 *
10 * - Has a button to generate a text report. 10 * - Has a button to generate a text report.
11 * - Has a button to generate a raw JSON dump (most useful for testing). 11 * - Has a button to generate a raw JSON dump (most useful for testing).
12 * 12 *
13 * @constructor 13 * @constructor
14 */ 14 */
15 function DataView(mainBoxId, exportJsonButtonId, exportTextButtonId) { 15 function DataView(mainBoxId, outputTextBoxId, exportTextButtonId) {
16 DivView.call(this, mainBoxId); 16 DivView.call(this, mainBoxId);
17 17
18 var exportJsonButton = document.getElementById(exportJsonButtonId); 18 this.textPre_ = document.getElementById(outputTextBoxId);
19 var exportTextButton = document.getElementById(exportTextButtonId); 19 var exportTextButton = document.getElementById(exportTextButtonId);
20 20
21 exportJsonButton.onclick = this.onExportToJSON_.bind(this);
22 exportTextButton.onclick = this.onExportToText_.bind(this); 21 exportTextButton.onclick = this.onExportToText_.bind(this);
23 } 22 }
24 23
25 inherits(DataView, DivView); 24 inherits(DataView, DivView);
26 25
27 /** 26 /**
28 * Very simple output format which directly displays the internally captured
29 * data in its javascript format.
30 */
31 DataView.prototype.onExportToJSON_ = function() {
32 // Format some text describing the data we have captured.
33 var text = []; // Lines of text.
34
35 text.push('//----------------------------------------------');
36 text.push('// Proxy settings');
37 text.push('//----------------------------------------------');
38 text.push('');
39
40 text.push('proxySettings = ' +
41 JSON.stringify(g_browser.proxySettings_.currentData_));
42
43 text.push('');
44 text.push('//----------------------------------------------');
45 text.push('// Bad proxies');
46 text.push('//----------------------------------------------');
47 text.push('');
48
49 text.push('badProxies = ' +
50 JSON.stringify(g_browser.badProxies_.currentData_));
51
52 text.push('');
53 text.push('//----------------------------------------------');
54 text.push('// Host resolver cache');
55 text.push('//----------------------------------------------');
56 text.push('');
57
58 text.push('hostResolverCache = ' +
59 JSON.stringify(g_browser.hostResolverCache_.currentData_));
60
61 text.push('');
62 text.push('//----------------------------------------------');
63 text.push('// Passively captured events');
64 text.push('//----------------------------------------------');
65 text.push('');
66
67 this.appendPrettyPrintedJsonArray_('passive',
68 g_browser.getAllPassivelyCapturedEvents(),
69 text);
70
71 text.push('');
72 text.push('//----------------------------------------------');
73 text.push('// Actively captured events');
74 text.push('//----------------------------------------------');
75 text.push('');
76
77 this.appendPrettyPrintedJsonArray_('active',
78 g_browser.getAllActivelyCapturedEvents(),
79 text);
80
81 // Open a new window to display this text.
82 this.displayPopupWindow_(text.join('\n'));
83 };
84
85 /**
86 * Presents the captured data as formatted text. 27 * Presents the captured data as formatted text.
87 */ 28 */
88 DataView.prototype.onExportToText_ = function() { 29 DataView.prototype.onExportToText_ = function() {
30 this.setText_("Generating...");
31
89 var text = []; 32 var text = [];
90 33
91 // Print some basic information about our environment. 34 // Print some basic information about our environment.
92 text.push('Data exported on: ' + (new Date()).toLocaleString()); 35 text.push('Data exported on: ' + (new Date()).toLocaleString());
93 text.push(''); 36 text.push('');
94 text.push('Number of passively captured events: ' + 37 text.push('Number of passively captured events: ' +
95 g_browser.getAllPassivelyCapturedEvents().length); 38 g_browser.getAllPassivelyCapturedEvents().length);
96 text.push('Number of actively captured events: ' + 39 text.push('Number of actively captured events: ' +
97 g_browser.getAllActivelyCapturedEvents().length); 40 g_browser.getAllActivelyCapturedEvents().length);
98 text.push('Timetick to timestamp offset: ' + g_browser.timeTickOffset_); 41 text.push('Timetick to timestamp offset: ' + g_browser.timeTickOffset_);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 86
144 text.push(''); 87 text.push('');
145 text.push('----------------------------------------------'); 88 text.push('----------------------------------------------');
146 text.push(' Requests'); 89 text.push(' Requests');
147 text.push('----------------------------------------------'); 90 text.push('----------------------------------------------');
148 text.push(''); 91 text.push('');
149 92
150 this.appendRequestsPrintedAsText_(text); 93 this.appendRequestsPrintedAsText_(text);
151 94
152 // Open a new window to display this text. 95 // Open a new window to display this text.
153 this.displayPopupWindow_(text.join('\n')); 96 this.setText_(text.join('\n'));
154 }; 97 };
155 98
156 DataView.prototype.appendRequestsPrintedAsText_ = function(out) { 99 DataView.prototype.appendRequestsPrintedAsText_ = function(out) {
157 // Concatenate the passively captured events with the actively captured events 100 // Concatenate the passively captured events with the actively captured events
158 // into a single array. 101 // into a single array.
159 var allEvents = g_browser.getAllPassivelyCapturedEvents().concat( 102 var allEvents = g_browser.getAllPassivelyCapturedEvents().concat(
160 g_browser.getAllActivelyCapturedEvents()); 103 g_browser.getAllActivelyCapturedEvents());
161 104
162 // Group the events into buckets by source ID, and buckets by source type. 105 // Group the events into buckets by source ID, and buckets by source type.
163 var sourceIds = []; 106 var sourceIds = [];
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 out.push('------------------------------'); 138 out.push('------------------------------');
196 out.push(getKeyWithValue(LogSourceType, sourceType) + 139 out.push(getKeyWithValue(LogSourceType, sourceType) +
197 ' (id=' + sourceId + ')'); 140 ' (id=' + sourceId + ')');
198 out.push('------------------------------'); 141 out.push('------------------------------');
199 142
200 out.push(PrintSourceEntriesAsText(eventList)); 143 out.push(PrintSourceEntriesAsText(eventList));
201 } 144 }
202 }; 145 };
203 146
204 /** 147 /**
205 * Helper function to open a new window and display |text| in it. 148 * Helper function to set this view's content to |text|.
206 */ 149 */
207 DataView.prototype.displayPopupWindow_ = function(text) { 150 DataView.prototype.setText_ = function(text) {
208 // Note that we use a data:URL because the chrome:// URL scheme doesn't 151 this.textPre_.innerHTML = '';
209 // allow us to mutate any new windows we open. 152 addTextNode(this.textPre_, text);
210 dataUrl = 'data:text/plain,' + encodeURIComponent(text);
211 window.open(dataUrl, '_blank');
212 };
213
214 /**
215 * Stringifies |arrayData| as JSON-like output, and appends it to the
216 * line buffer |out|.
217 */
218 DataView.prototype.appendPrettyPrintedJsonArray_ = function(name,
219 arrayData,
220 out) {
221 out.push(name + ' = [];');
222 for (var i = 0; i < arrayData.length; ++i) {
223 out.push(name + '[' + i + '] = ' + JSON.stringify(arrayData[i]) + ';');
224 }
225 }; 153 };
226 154
227 /** 155 /**
228 * Stringifies |arrayData| to formatted table output, and appends it to the 156 * Stringifies |arrayData| to formatted table output, and appends it to the
229 * line buffer |out|. 157 * line buffer |out|.
230 */ 158 */
231 DataView.prototype.appendPrettyPrintedTable_ = function(arrayData, out) { 159 DataView.prototype.appendPrettyPrintedTable_ = function(arrayData, out) {
232 for (var i = 0; i < arrayData.length; ++i) { 160 for (var i = 0; i < arrayData.length; ++i) {
233 var e = arrayData[i]; 161 var e = arrayData[i];
234 var eString = '[' + i + ']: '; 162 var eString = '[' + i + ']: ';
235 for (var key in e) { 163 for (var key in e) {
236 eString += key + "=" + e[key] + "; "; 164 eString += key + "=" + e[key] + "; ";
237 } 165 }
238 out.push(eString); 166 out.push(eString);
239 } 167 }
240 }; 168 };
241 169
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/net_internals/index.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698