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

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

Issue 1360253002: Log GOAWAY frame debug data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re: #7. Created 5 years, 2 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // TODO(eroman): put these methods into a namespace. 5 // TODO(eroman): put these methods into a namespace.
6 6
7 var createLogEntryTablePrinter; 7 var createLogEntryTablePrinter;
8 var proxySettingsToString; 8 var proxySettingsToString;
9 var stripCookiesAndLoginInfo; 9 var stripCookiesAndLoginInfoAndGoAwayDebugData;
10 10
11 // Start of anonymous namespace. 11 // Start of anonymous namespace.
12 (function() { 12 (function() {
13 'use strict'; 13 'use strict';
14 14
15 function canCollapseBeginWithEnd(beginEntry) { 15 function canCollapseBeginWithEnd(beginEntry) {
16 return beginEntry && 16 return beginEntry &&
17 beginEntry.isBegin() && 17 beginEntry.isBegin() &&
18 beginEntry.end && 18 beginEntry.end &&
19 beginEntry.end.index == beginEntry.index + 1 && 19 beginEntry.end.index == beginEntry.index + 1 &&
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 })(); // end of ParameterOutputter 237 })(); // end of ParameterOutputter
238 238
239 /** 239 /**
240 * Formats the parameters for |entry| and writes them to |out|. 240 * Formats the parameters for |entry| and writes them to |out|.
241 * Certain event types have custom pretty printers. Everything else will 241 * Certain event types have custom pretty printers. Everything else will
242 * default to a JSON-like format. 242 * default to a JSON-like format.
243 */ 243 */
244 function writeParameters(entry, privacyStripping, out) { 244 function writeParameters(entry, privacyStripping, out) {
245 if (privacyStripping) { 245 if (privacyStripping) {
246 // If privacy stripping is enabled, remove data as needed. 246 // If privacy stripping is enabled, remove data as needed.
247 entry = stripCookiesAndLoginInfo(entry); 247 entry = stripCookiesAndLoginInfoAndGoAwayDebugData(entry);
248 } else { 248 } else {
249 // If headers are in an object, convert them to an array for better display. 249 // If headers are in an object, convert them to an array for better display.
250 entry = reformatHeaders(entry); 250 entry = reformatHeaders(entry);
251 } 251 }
252 252
253 // Use any parameter writer available for this event type. 253 // Use any parameter writer available for this event type.
254 var paramsWriter = getParamaterWriterForEventType(entry.type); 254 var paramsWriter = getParamaterWriterForEventType(entry.type);
255 var consumedParams = {}; 255 var consumedParams = {};
256 if (paramsWriter) 256 if (paramsWriter)
257 paramsWriter(entry, out, consumedParams); 257 paramsWriter(entry, out, consumedParams);
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 headers.push(key + ': ' + entry.params.headers[key]); 472 headers.push(key + ': ' + entry.params.headers[key]);
473 entry.params.headers = headers; 473 entry.params.headers = headers;
474 474
475 return entry; 475 return entry;
476 } 476 }
477 477
478 /** 478 /**
479 * Removes a cookie or unencrypted login information from a single HTTP header 479 * Removes a cookie or unencrypted login information from a single HTTP header
480 * line, if present, and returns the modified line. Otherwise, just returns 480 * line, if present, and returns the modified line. Otherwise, just returns
481 * the original line. 481 * the original line.
482 *
483 * Note: this logic should be kept in sync with
484 * net::ElideHeaderValueForNetLog in net/http/http_log_util.cc.
482 */ 485 */
483 function stripCookieOrLoginInfo(line) { 486 function stripCookieOrLoginInfo(line) {
484 var patterns = [ 487 var patterns = [
485 // Cookie patterns 488 // Cookie patterns
486 /^set-cookie: /i, 489 /^set-cookie: /i,
487 /^set-cookie2: /i, 490 /^set-cookie2: /i,
488 /^cookie: /i, 491 /^cookie: /i,
489 492
490 // Unencrypted authentication patterns 493 // Unencrypted authentication patterns
491 /^authorization: \S*\s*/i, 494 /^authorization: \S*\s*/i,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 // This is often the case when viewing a loaded log. 541 // This is often the case when viewing a loaded log.
539 if (suffix.search(/^\[[0-9]+ bytes were stripped\]$/) == -1) { 542 if (suffix.search(/^\[[0-9]+ bytes were stripped\]$/) == -1) {
540 return prefix + '[' + suffix.length + ' bytes were stripped]'; 543 return prefix + '[' + suffix.length + ' bytes were stripped]';
541 } 544 }
542 } 545 }
543 546
544 return line; 547 return line;
545 } 548 }
546 549
547 /** 550 /**
551 * Remove debug data from HTTP/2 GOAWAY frame due to privacy considerations, see
552 * https://httpwg.github.io/specs/rfc7540.html#GOAWAY.
553 *
554 * Note: this logic should be kept in sync with
555 * net::ElideGoAwayDebugDataForNetLog in net/http/http_log_util.cc.
556 */
557 function stripGoAwayDebugData(value) {
558 return '[' + value.length + ' bytes were stripped]';
559 }
560
561 /**
548 * If |entry| has headers, returns a copy of |entry| with all cookie and 562 * If |entry| has headers, returns a copy of |entry| with all cookie and
549 * unencrypted login text removed. Otherwise, returns original |entry| object. 563 * unencrypted login text removed. Otherwise, returns original |entry| object.
550 * This is needed so that JSON log dumps can be made without affecting the 564 * This is needed so that JSON log dumps can be made without affecting the
551 * source data. Converts headers stored in objects to arrays. 565 * source data. Converts headers stored in objects to arrays.
552 *
553 * Note: this logic should be kept in sync with
554 * net::ElideHeaderForNetLog in net/http/http_log_util.cc.
555 */ 566 */
556 stripCookiesAndLoginInfo = function(entry) { 567 stripCookiesAndLoginInfoAndGoAwayDebugData = function(entry) {
eroman 2015/10/07 17:00:51 This name is accurate however a bit too long IMO.
Bence 2015/10/30 11:55:26 stripPrivacyInfo sounds a lot better, should have
557 if (!entry.params || entry.params.headers === undefined || 568 if (!entry.params) {
569 return entry;
570 }
571
572 if (entry.type == EventType.HTTP2_SESSION_GOAWAY &&
573 entry.params.debug_data != undefined) {
574 // Duplicate the top level object, and |entry.params|. All other fields are
575 // just pointers to the original values, as they won't be modified, other
576 // than |entry.params.debug_data|.
577 entry = shallowCloneObject(entry);
578 entry.params = shallowCloneObject(entry.params);
579 entry.params.debug_data =
580 stripGoAwayDebugData(entry.params.debug_data);
581 return entry;
582 }
583
584 if (entry.params.headers === undefined ||
558 !(entry.params.headers instanceof Object)) { 585 !(entry.params.headers instanceof Object)) {
559 return entry; 586 return entry;
560 } 587 }
561 588
562 // Make sure entry's headers are in an array. 589 // Make sure entry's headers are in an array.
563 entry = reformatHeaders(entry); 590 entry = reformatHeaders(entry);
564 591
565 // Duplicate the top level object, and |entry.params|. All other fields are 592 // Duplicate the top level object, and |entry.params|. All other fields are
566 // just pointers to the original values, as they won't be modified, other than 593 // just pointers to the original values, as they won't be modified, other than
567 // |entry.params.headers|. 594 // |entry.params.headers|.
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 } 802 }
776 803
777 if (config.source != undefined && config.source != 'UNKNOWN') 804 if (config.source != undefined && config.source != 'UNKNOWN')
778 result.push('Source: ' + config.source); 805 result.push('Source: ' + config.source);
779 806
780 return result.join('\n'); 807 return result.join('\n');
781 }; 808 };
782 809
783 // End of anonymous namespace. 810 // End of anonymous namespace.
784 })(); 811 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698