browser(firefox): introduce auto-open-devtools-for-tabs CLI flag (#7580)

This commit is contained in:
Max Schmitt 2021-07-13 18:29:35 +02:00 committed by GitHub
parent 5d62d01450
commit 786f6c4d31
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 126 additions and 4 deletions

View file

@ -1,2 +1,2 @@
1268
Changed: lushnikov@chromium.org Thu 01 Jul 2021 03:59:44 AM PDT
1269
Changed: max@schmitt.mx Tue Jul 13 16:28:05 UTC 2021

View file

@ -171,6 +171,67 @@ index 040c7b124dec6bb254563bbe74fe50012cb077a3..b4e6b8132786af70e8ad0dce88b67c28
const transportProvider = {
setListener(upgradeListener) {
diff --git a/devtools/startup/DevToolsStartup.jsm b/devtools/startup/DevToolsStartup.jsm
index 2c1f767f89f596fb5732572ad4e0cad3cafcc7c3..99401071ad93a2f2a3ba37e7643920f2e05e8b25 100644
--- a/devtools/startup/DevToolsStartup.jsm
+++ b/devtools/startup/DevToolsStartup.jsm
@@ -375,7 +375,7 @@ DevToolsStartup.prototype = {
// Store devtoolsFlag to check it later in onWindowReady.
this.devtoolsFlag = flags.devtools;
-
+ this.autoOpenDevtoolsForTabs = flags.autoOpenDevtoolsForTabs;
/* eslint-disable mozilla/balanced-observers */
// We are not expecting to remove those listeners until Firefox closes.
@@ -438,6 +438,7 @@ DevToolsStartup.prototype = {
const console = cmdLine.handleFlag("jsconsole", false);
const devtools = cmdLine.handleFlag("devtools", false);
+ const autoOpenDevtoolsForTabs = cmdLine.handleFlag("auto-open-devtools-for-tabs", false);
let devToolsServer;
try {
@@ -460,7 +461,7 @@ DevToolsStartup.prototype = {
debuggerFlag = cmdLine.handleFlag("jsdebugger", false);
}
- return { console, debugger: debuggerFlag, devtools, devToolsServer };
+ return { console, debugger: debuggerFlag, devtools, autoOpenDevtoolsForTabs, devToolsServer };
},
/**
@@ -482,9 +483,22 @@ DevToolsStartup.prototype = {
this._firstWindowReadyReceived = true;
}
+ if (this.autoOpenDevtoolsForTabs) {
+ this.handleDevToolsOpenForEveryTab(window);
+ }
+
JsonView.initialize();
},
+ handleDevToolsOpenForEveryTab(window) {
+ const require = this.initDevTools("CommandLine");
+ const { gDevTools } = require("devtools/client/framework/devtools");
+ window.gBrowser.tabContainer.addEventListener('TabOpen', async (event) => {
+ await gDevTools.showToolboxForTab(event.target);
+ });
+ gDevTools.showToolboxForTab(window.gBrowser.selectedTab).catch(() => {});
+ },
+
removeDevToolsMenus(window) {
// This will hide the "Tools > Web Developer" menu.
window.document.getElementById("webDeveloperMenu").hidden = true;
@@ -1243,6 +1257,7 @@ DevToolsStartup.prototype = {
" Enables debugging (some) application startup code paths.\n" +
" Only has an effect when `--jsdebugger` is also supplied.\n" +
" --devtools Open DevTools on initial load.\n" +
+ " --auto-open-devtools-for-tabs Open DevTools on new Tabs.\n" +
" --start-debugger-server [ws:][ <port> | <path> ] Start the devtools server on\n" +
" a TCP port or Unix domain socket path. Defaults to TCP port\n" +
" 6000. Use WebSocket protocol if ws: prefix is specified.\n",
diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp
index 0093288d1a448afe7bd8e5b6e8c0cb31835ba3f5..93908f5719f2cb0fe2f58d7f3153a9af0e71f08b 100644
--- a/docshell/base/BrowsingContext.cpp

View file

@ -1,2 +1,2 @@
1275
Changed: yurys@chromium.org Thu Jul 8 13:25:54 MSK 2021
1276
Changed: max@schmitt.mx Tue Jul 13 13:50:07 UTC 2021

View file

@ -171,6 +171,67 @@ index 040c7b124dec6bb254563bbe74fe50012cb077a3..b4e6b8132786af70e8ad0dce88b67c28
const transportProvider = {
setListener(upgradeListener) {
diff --git a/devtools/startup/DevToolsStartup.jsm b/devtools/startup/DevToolsStartup.jsm
index e583547c071167d1072d2022ceec506e87647e50..138c28f76ffe9796b858796b54739e9a97822952 100644
--- a/devtools/startup/DevToolsStartup.jsm
+++ b/devtools/startup/DevToolsStartup.jsm
@@ -375,7 +375,7 @@ DevToolsStartup.prototype = {
// Store devtoolsFlag to check it later in onWindowReady.
this.devtoolsFlag = flags.devtools;
-
+ this.autoOpenDevtoolsForTabs = flags.autoOpenDevtoolsForTabs;
/* eslint-disable mozilla/balanced-observers */
// We are not expecting to remove those listeners until Firefox closes.
@@ -438,6 +438,7 @@ DevToolsStartup.prototype = {
const console = cmdLine.handleFlag("jsconsole", false);
const devtools = cmdLine.handleFlag("devtools", false);
+ const autoOpenDevtoolsForTabs = cmdLine.handleFlag("auto-open-devtools-for-tabs", false);
let devToolsServer;
try {
@@ -460,7 +461,7 @@ DevToolsStartup.prototype = {
debuggerFlag = cmdLine.handleFlag("jsdebugger", false);
}
- return { console, debugger: debuggerFlag, devtools, devToolsServer };
+ return { console, debugger: debuggerFlag, devtools, autoOpenDevtoolsForTabs, devToolsServer };
},
/**
@@ -482,9 +483,22 @@ DevToolsStartup.prototype = {
this._firstWindowReadyReceived = true;
}
+ if (this.autoOpenDevtoolsForTabs) {
+ this.handleDevToolsOpenForEveryTab(window);
+ }
+
JsonView.initialize();
},
+ handleDevToolsOpenForEveryTab(window) {
+ const require = this.initDevTools("CommandLine");
+ const { gDevTools } = require("devtools/client/framework/devtools");
+ window.gBrowser.tabContainer.addEventListener('TabOpen', async (event) => {
+ await gDevTools.showToolboxForTab(event.target);
+ });
+ gDevTools.showToolboxForTab(window.gBrowser.selectedTab).catch(() => {});
+ },
+
removeDevToolsMenus(window) {
// This will hide the "Tools > Web Developer" menu.
window.document.getElementById("webDeveloperMenu").hidden = true;
@@ -1250,6 +1264,7 @@ DevToolsStartup.prototype = {
" Enables debugging (some) application startup code paths.\n" +
" Only has an effect when `--jsdebugger` is also supplied.\n" +
" --devtools Open DevTools on initial load.\n" +
+ " --auto-open-devtools-for-tabs Open DevTools on new Tabs.\n" +
" --start-debugger-server [ws:][ <port> | <path> ] Start the devtools server on\n" +
" a TCP port or Unix domain socket path. Defaults to TCP port\n" +
" 6000. Use WebSocket protocol if ws: prefix is specified.\n",
diff --git a/docshell/base/BrowsingContext.cpp b/docshell/base/BrowsingContext.cpp
index f3292d8ae6da1865847ded8b1c79a80ba8fca70e..70a0aacfe2439bb8180f2f069f9e0db7059265ce 100644
--- a/docshell/base/BrowsingContext.cpp