Index: chrome/browser/resources/net_internals/log_view_painter.js |
diff --git a/chrome/browser/resources/net_internals/log_view_painter.js b/chrome/browser/resources/net_internals/log_view_painter.js |
index bbfaae415bc3c37af56737491766a434be474399..5969699e9adf79077644e132463159f70b820587 100644 |
--- a/chrome/browser/resources/net_internals/log_view_painter.js |
+++ b/chrome/browser/resources/net_internals/log_view_painter.js |
@@ -6,7 +6,7 @@ |
var createLogEntryTablePrinter; |
var proxySettingsToString; |
-var stripCookiesAndLoginInfo; |
+var stripPrivacyInfo; |
// Start of anonymous namespace. |
(function() { |
@@ -244,7 +244,7 @@ var ParameterOutputter = (function() { |
function writeParameters(entry, privacyStripping, out) { |
if (privacyStripping) { |
// If privacy stripping is enabled, remove data as needed. |
- entry = stripCookiesAndLoginInfo(entry); |
+ entry = stripPrivacyInfo(entry); |
} else { |
// If headers are in an object, convert them to an array for better display. |
entry = reformatHeaders(entry); |
@@ -479,6 +479,9 @@ function reformatHeaders(entry) { |
* Removes a cookie or unencrypted login information from a single HTTP header |
* line, if present, and returns the modified line. Otherwise, just returns |
* the original line. |
+ * |
+ * Note: this logic should be kept in sync with |
+ * net::ElideHeaderValueForNetLog in net/http/http_log_util.cc. |
*/ |
function stripCookieOrLoginInfo(line) { |
var patterns = [ |
@@ -545,16 +548,40 @@ function stripCookieOrLoginInfo(line) { |
} |
/** |
+ * Remove debug data from HTTP/2 GOAWAY frame due to privacy considerations, see |
+ * https://httpwg.github.io/specs/rfc7540.html#GOAWAY. |
+ * |
+ * Note: this logic should be kept in sync with |
+ * net::ElideGoAwayDebugDataForNetLog in net/http/http_log_util.cc. |
+ */ |
+function stripGoAwayDebugData(value) { |
+ return '[' + value.length + ' bytes were stripped]'; |
+} |
+ |
+/** |
* If |entry| has headers, returns a copy of |entry| with all cookie and |
* unencrypted login text removed. Otherwise, returns original |entry| object. |
* This is needed so that JSON log dumps can be made without affecting the |
* source data. Converts headers stored in objects to arrays. |
- * |
- * Note: this logic should be kept in sync with |
- * net::ElideHeaderForNetLog in net/http/http_log_util.cc. |
*/ |
-stripCookiesAndLoginInfo = function(entry) { |
- if (!entry.params || entry.params.headers === undefined || |
+stripPrivacyInfo = function(entry) { |
+ if (!entry.params) { |
+ return entry; |
+ } |
+ |
+ if (entry.type == EventType.HTTP2_SESSION_GOAWAY && |
+ entry.params.debug_data != undefined) { |
+ // Duplicate the top level object, and |entry.params|. All other fields are |
+ // just pointers to the original values, as they won't be modified, other |
+ // than |entry.params.debug_data|. |
+ entry = shallowCloneObject(entry); |
+ entry.params = shallowCloneObject(entry.params); |
+ entry.params.debug_data = |
+ stripGoAwayDebugData(entry.params.debug_data); |
+ return entry; |
+ } |
+ |
+ if (entry.params.headers === undefined || |
!(entry.params.headers instanceof Object)) { |
return entry; |
} |