[regression] DevTools - Web and Browser console - Added "Log request and response bodies" preference

Issue #102
This commit is contained in:
janekptacijarabaci 2018-05-07 07:23:21 +02:00 committed by Roy Tam
commit 30e2f6345d
4 changed files with 48 additions and 8 deletions

View file

@ -11,6 +11,11 @@
<!ENTITY window.title "Web Console">
<!ENTITY browserConsole.title "Browser Console">
<!-- LOCALIZATION NOTE (saveBodies.label): You can see this string in
- the Browser Console context menu. -->
<!ENTITY saveBodies.label "Log Request and Response Bodies">
<!ENTITY saveBodies.accesskey "L">
<!-- LOCALIZATION NOTE (openURL.label): You can see this string in the Web
- Console context menu. -->
<!ENTITY openURL.label "Open URL in New Tab">

View file

@ -248,6 +248,7 @@ pref("devtools.webconsole.filter.log", true);
pref("devtools.webconsole.filter.debug", true);
pref("devtools.webconsole.filter.net", false);
pref("devtools.webconsole.filter.netxhr", false);
pref("devtools.webconsole.filter.saveBodies", true);
// Deprecated - old console frontend
pref("devtools.webconsole.filter.network", true);
pref("devtools.webconsole.filter.networkinfo", false);
@ -273,6 +274,7 @@ pref("devtools.browserconsole.filter.network", true);
pref("devtools.browserconsole.filter.networkinfo", false);
pref("devtools.browserconsole.filter.netwarn", true);
pref("devtools.browserconsole.filter.netxhr", false);
pref("devtools.browserconsole.filter.saveBodies", false);
pref("devtools.browserconsole.filter.csserror", true);
pref("devtools.browserconsole.filter.cssparser", false);
pref("devtools.browserconsole.filter.csslog", false);

View file

@ -555,6 +555,19 @@ WebConsoleFrame.prototype = {
// calculations.
this._updateCharSize();
let saveBodiesDisabled = !this.getFilterState("networkinfo") &&
!this.getFilterState("netxhr") &&
!this.getFilterState("network");
let saveBodies = this.document.getElementById("saveBodies");
saveBodies.disabled = saveBodiesDisabled;
saveBodies.parentNode.addEventListener("popupshowing", () => {
saveBodies.disabled = !this.getFilterState("networkinfo") &&
!this.getFilterState("netxhr") &&
!this.getFilterState("network");
});
this.jsterm = new JSTerm(this);
this.jsterm.init();
@ -684,9 +697,9 @@ WebConsoleFrame.prototype = {
_initDefaultFilterPrefs: function () {
let prefs = ["network", "networkinfo", "csserror", "cssparser", "csslog",
"exception", "jswarn", "jslog", "error", "info", "warn", "log",
"secerror", "secwarn", "netwarn", "netxhr", "sharedworkers",
"serviceworkers", "windowlessworkers", "servererror",
"serverwarn", "serverinfo", "serverlog"];
"secerror", "secwarn", "netwarn", "netxhr", "saveBodies",
"sharedworkers", "serviceworkers", "windowlessworkers",
"servererror", "serverwarn", "serverinfo", "serverlog"];
for (let pref of prefs) {
this.filterPrefs[pref] = Services.prefs.getBoolPref(
@ -954,6 +967,16 @@ WebConsoleFrame.prototype = {
let prefKey = target.getAttribute("prefKey");
this.setFilterState(prefKey, state);
// Disable the log response and request body if network logging is off.
if (prefKey == "networkinfo" ||
prefKey == "netxhr" ||
prefKey == "network") {
let checkState = !this.getFilterState("networkinfo") &&
!this.getFilterState("netxhr") &&
!this.getFilterState("network");
this.document.getElementById("saveBodies").disabled = checkState;
}
// Adjust the state of the button appropriately.
let menuPopup = target.parentNode;
@ -987,9 +1010,12 @@ WebConsoleFrame.prototype = {
_setMenuState: function (target, state) {
let menuItems = target.querySelectorAll("menuitem");
Array.forEach(menuItems, (item) => {
item.setAttribute("checked", state);
let prefKey = item.getAttribute("prefKey");
this.setFilterState(prefKey, state);
// If not a separate switch only.
if (prefKey != "saveBodies") {
item.setAttribute("checked", state);
this.setFilterState(prefKey, state);
}
});
},
@ -1006,6 +1032,10 @@ WebConsoleFrame.prototype = {
Services.prefs.setBoolPref(this._filterPrefsPrefix + toggleType, state);
if (toggleType == "saveBodies") {
this.setSaveRequestAndResponseBodies(state);
}
if (this._updateListenersTimeout) {
clearTimeout(this._updateListenersTimeout);
}
@ -3245,9 +3275,8 @@ WebConsoleConnectionProxy.prototype = {
this.webConsoleClient = webConsoleClient;
this._hasNativeConsoleAPI = response.nativeConsoleAPI;
// There is no way to view response bodies from the Browser Console, so do
// not waste the memory.
let saveBodies = !this.webConsoleFrame.isBrowserConsole;
let saveBodiesPref = this.webConsoleFrame._filterPrefsPrefix + "saveBodies";
let saveBodies = Services.prefs.getBoolPref(saveBodiesPref);
this.webConsoleFrame.setSaveRequestAndResponseBodies(saveBodies);
this.webConsoleClient.on("networkEvent", this._onNetworkEvent);

View file

@ -96,6 +96,10 @@ function goUpdateConsoleCommands() {
prefKey="netxhr"/>
<menuitem label="&btnConsoleLog;" type="checkbox" autocheck="false"
prefKey="networkinfo"/>
<menuseparator id="saveBodiesSeparator" />
<menuitem id="saveBodies" type="checkbox" label="&saveBodies.label;"
accesskey="&saveBodies.accesskey;" autocheck="false"
prefKey="saveBodies"/>
</menupopup>
</toolbarbutton>
<toolbarbutton label="&btnPageCSS.label;" type="menu-button"