31 Commits
Author SHA1 Message Date
Alexandre Poirot 5eeea2b7d6 Bug 1651518 - [devtools] Enable server side worker targets for browser toolbox. r=devtools-reviewers,nchevobbe
Note that the ignore code for subprocess is being ported from the legacy worker watcher.

The Worker Target URL is now correctly set to the Absolute URL,
this has an impact on the context selector as we are displaying it.

Also, this patch highlights some issues around Common JS Loader and the distinct compartment
to be used when debugging privileged page, or when running the browser toolbox.
It caused leaks when running browser toolbox tests in debug builds.
The JS Process Actor is directly loaded in a distinct global and compartment "DevTools global",
thanks to `loadInDevToolsLoader` flag of BrowserToolboxDevToolsProcess JS Process Actor configuration.
There is no need to use `useDistinctSystemPrincipalLoader` helper as Loader.sys.mjs, loaded from
the JS Process Actor will also be loaded in the distinct global.
Then, we only need to ensure that the CommonJS Loader will also pick up the "DevTools global"
when it is loaded in that distinct global.
Things will be significantly easier once we migrate from CommonJS to ESM as the `{ global: "contextual" }`
option passed to `ChromeUtils.importESModule` will do the right thing, as well as static `import` statements.

Differential Revision: https://phabricator.services.mozilla.com/D204874
2024-05-27 09:53:55 +00:00
Cristian Tuns d0272b92b7 Backed out 8 changesets (bug 1651518, bug 1883847) dt failures in nsTArray.h. CLOSED TREE
Backed out changeset 481558275c1d (bug 1651518)
Backed out changeset 5337435e8bca (bug 1651518)
Backed out changeset 8fe0c1a4da7f (bug 1651518)
Backed out changeset 840a0d9db260 (bug 1651518)
Backed out changeset eaab9de5819d (bug 1651518)
Backed out changeset cf71de92d782 (bug 1651518)
Backed out changeset d778691464db (bug 1651518)
Backed out changeset af28e5f719e8 (bug 1883847)
2024-05-22 09:02:19 -04:00
Alexandre Poirot 76d52e829a Bug 1651518 - [devtools] Enable server side worker targets for browser toolbox. r=devtools-reviewers,nchevobbe
Note that the ignore code for subprocess is being ported from the legacy worker watcher.

The Worker Target URL is now correctly set to the Absolute URL,
this has an impact on the context selector as we are displaying it.

Also, this patch highlights some issues around Common JS Loader and the distinct compartment
to be used when debugging privileged page, or when running the browser toolbox.
It caused leaks when running browser toolbox tests in debug builds.
The JS Process Actor is directly loaded in a distinct global and compartment "DevTools global",
thanks to `loadInDevToolsLoader` flag of BrowserToolboxDevToolsProcess JS Process Actor configuration.
There is no need to use `useDistinctSystemPrincipalLoader` helper as Loader.sys.mjs, loaded from
the JS Process Actor will also be loaded in the distinct global.
Then, we only need to ensure that the CommonJS Loader will also pick up the "DevTools global"
when it is loaded in that distinct global.
Things will be significantly easier once we migrate from CommonJS to ESM as the `{ global: "contextual" }`
option passed to `ChromeUtils.importESModule` will do the right thing, as well as static `import` statements.

Differential Revision: https://phabricator.services.mozilla.com/D204874
2024-05-22 11:50:45 +00:00
Alexandre Poirot 28e34df8ef Bug 1819767 - [devtools] Expose ChromeUtils.isDevToolsOpened to know if DevTools are debugging something in the current process. r=smaug,devtools-reviewers,jdescottes
This doesn't help know what particular resource DevTools is currently inspecting,
but at least it helps know if it debugs something:
* one or many BrowsingContext(s) for regular DevTools (you can use BrowsingContext.watchedByDevTools instead)
* the whole process for the Browser Console/Toolbox

Differential Revision: https://phabricator.services.mozilla.com/D173295
2023-04-03 12:35:53 +00:00
Csoregi Natalia 1d11c2a5b2 Backed out 2 changesets (bug 1819767) for causing bustage on ChromeUtils.cpp. CLOSED TREE
Backed out changeset f67a63d151f5 (bug 1819767)
Backed out changeset 91e577f436e9 (bug 1819767)
2023-03-31 02:23:14 +03:00
Alexandre Poirot 763c211b2d Bug 1819767 - [devtools] Expose ChromeUtils.isDevToolsOpened to know if DevTools are debugging something in the current process. r=smaug,devtools-reviewers,jdescottes
This doesn't help know what particular resource DevTools is currently inspecting,
but at least it helps know if it debugs something:
* one or many BrowsingContext(s) for regular DevTools (you can use BrowsingContext.watchedByDevTools instead)
* the whole process for the Browser Console/Toolbox

Differential Revision: https://phabricator.services.mozilla.com/D173295
2023-03-30 21:25:08 +00:00
Alexandre Poirot 59fe57c052 Bug 1793396 - [devtools] Use absolute URLs in all usages of loader.lazyRequireGetter. r=Honza
Differential Revision: https://phabricator.services.mozilla.com/D158489
2022-10-03 18:57:13 +00:00
Alexandre Poirot 28d340da28 Bug 1792849 - [devtools] Use absolute URLs to import modules in devtools/server. r=Honza
Differential Revision: https://phabricator.services.mozilla.com/D158487
2022-10-03 18:57:12 +00:00
Alexandre Poirot 0c4e317914 Bug 1789980 - [devtools] Migrate all callsites using require("chrome") to use Components.* global symbols. r=jdescottes,perftest-reviewers,AlexandruIonescu
This will help transition to ES Modules as we won't be able to expose a magic "chrome" ESM.
Also, most of these symbols are exposed as global already.
All but:
* `components` which is `Components`,
* `CC` which is `Components.Constructor`,
* `Cm` which is `Components.manager`.

$ sed -ie "/require(.chrome.)/d" $(git grep -l 'require("chrome")' devtools/)
+ manual edits for all three exceptions

Differential Revision: https://phabricator.services.mozilla.com/D156936
2022-09-20 12:52:27 +00:00
Alexandre Poirot 0f32f335e3 Bug 1789201 - [devtools] Expose Services as a global to all DevTools modules. r=perftest-reviewers,nchevobbe,julienw,AlexandruIonescu
This will help transition to ES Modules as this symbol is exposed to them.

$ sed -ie "/require(.Services.)/d" $(git grep -l 'require("Services")' devtools/)
$ sed -ie "/loader.lazyRequireGetter(this, .Services./d" $(git grep -l 'loader.lazyRequireGetter(this, "Services"' devtools/)
+ the edition of builtin-modules.js + eslintrc.js
+ manual eslint fixes
+ removal of devtools-services in the debugger, except for jest tests

Differential Revision: https://phabricator.services.mozilla.com/D156401
2022-09-09 07:22:51 +00:00
Mark Banner 3387a89bc7 Bug 1786197 - Turn on ESLint rule for prefer-boolean-length-check for devtools. r=jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D155167
2022-08-26 13:39:34 +00:00
Alexandre Poirot 3a35fe95e9 Bug 1772146 - [devtools] Automatically destroy the DevToolsServer once the last connection drops. r=jdescottes
Do that except when keepAlive attribute is set to true for server
listening for many incoming client connections.
This is the case when starting server via --start-debugger-server
or when starting the server from the mobile browser.

Differential Revision: https://phabricator.services.mozilla.com/D147876
2022-06-09 09:16:01 +00:00
Bogdan Szekely 991b7cba85 Backed out changeset 8fc8b400ab24 (bug 1772146) for causing xpcshell failures on test_register_actor.js CLOSED TREE 2022-06-08 14:12:05 +03:00
Alexandre Poirot 27ce15da69 Bug 1772146 - [devtools] Automatically destroy the DevToolsServer once the last connection drops. r=jdescottes
Do that except when keepAlive attribute is set to true for server
listening for many incoming client connections.
This is the case when starting server via --start-debugger-server
or when starting the server from the mobile browser.

Differential Revision: https://phabricator.services.mozilla.com/D147876
2022-06-08 10:19:14 +00:00
Alexandre Poirot a4e410fa27 Bug 1771088 - [devtools] Move the server destruction code to DevToolsServer. r=jdescottes
This helps simplify DevToolsFrameChild and avoid registering and not leaking a connectionchange listener.

This also help always nullify this.loader in DevToolsFrameChild.
For some reason, the first time didDestroy is called, there is still another connection registered in the server.

Differential Revision: https://phabricator.services.mozilla.com/D147683
2022-06-01 14:38:35 +00:00
Alexandre Poirot 52c1d9120a Bug 1732120 - [devtools] Remove FrameTargetActor in favor of WindowGlobalTargetActor. r=nchevobbe,devtools-backward-compat-reviewers
This intermediate actor is no longer useful for a while.
(Since we dropped the LocalTabProxy. I think since we introduced the TabDescriptor?)

I updated actor-hierarchy.md significantly as it was quite outdated!
We would probably benefit having a section dedicated to the WatcherActor.

Differential Revision: https://phabricator.services.mozilla.com/D126373
2021-09-27 12:16:12 +00:00
Alexandre Poirot d9b268ed28 Bug 1731551 - [devtools] Avoid leaking DevToolsFrame JSWindowActor on each reload. r=nchevobbe
Each time the related WindowGlobal is destroyed, the related target actor and connection will be destroyed.
But the destruction of the previous actor/connection happens *after* the creation of the new.
So that hasConnection() is always true on reload. On toolbox closing it should become false.

Regardless, we should always unregister the connectionchange.
The server may be destroyed by the very last actor/connection to be destroyed.
We might want to move this code directly into DevToolsServer, that may be clearer...
But that may break non-watcher setup, so better do that once we only support the watcher codepath.

Differential Revision: https://phabricator.services.mozilla.com/D126085
2021-09-22 10:50:40 +00:00
Nicolas Chevobbe 43d79f90f2 Bug 1722801 - [devtools] Get all connections before closing them in DevToolsServer.destroy. r=jdescottes.
When running test_webconsole-node-grip.html with server side target switching,
the test was failing as accessing this._connections[connID] was returning a
null object.
From some quick investigation, it looks like the object was nullified after
a first connection was closed.
Retrieving all the connection objects before looping closing them seems to
fix the issue.

Differential Revision: https://phabricator.services.mozilla.com/D121165
2021-07-29 14:39:55 +00:00
Nicolas Chevobbe d4218f1fe9 Bug 1716703 - [devtools] Rename TestActor to HighlighterTestActor. r=jdescottes.
Renaming the actor makes it more explicit that it should
only be used for highlighter-related assertions.
We take this opportunity to rename all the 'testActor' instances
in tests to 'highlighterTestFront' which better represents
what the object is.
While doing this work, I was able to cleanup a few function definition
where the testActor parameter wasn't needed.

Differential Revision: https://phabricator.services.mozilla.com/D117978
2021-06-17 10:03:03 +00:00
Alexandre Poirot 3c896a792e Bug 1699497 - [devtools] Fix races when connecting to the same browser element twice in parallel. r=jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D108974
2021-03-22 20:39:09 +00:00
Nicolas Chevobbe 6d9408f05e Bug 1633712 - [devtools] Create WorkerTargets as soon as possible. r=ochameau,devtools-backward-compat-reviewers.
This patch adds support for dedicated worker targets in the Watcher actor.
Shared and Service workers are not handled yet.

In a similar manner to what we already have for frame targets, we add a worker-helper
file that will communicate with a JsWindowActor pair spawned on each document,
that will  manage workers (DevToolsWorkerParent/DevToolsWorkerChild).

For a given document, the DevToolsWorkerChild will enumerate the existing workers
related to it, as well as add an event listener to be notified when workers are
being registered and unregistered, and communicate that back to the DevToolsWorkerParent
on the main thread, so worker targets creation and destruction are notified by
the Watcher actor (via target-available-form and target-destroyed-form events).

When a worker is created, the DevToolsWorkerChild for the document the worker
was spawned from will create a WorkerTargetActor, that will live in the worker
thread (using worker-connector.js), passing it resources the Watcher is currently
listening for. It will also handle communication between the main thread and the
worker thread, when the watcher listen to new resources (or stop watching resources).

A WorkerTargetFront is created so the client can be notified about available
resources (via the resource-available-form event, emitted from the worker target).

Tests are added in the next patches of this queue.

Differential Revision: https://phabricator.services.mozilla.com/D85399
2020-10-26 12:53:43 +00:00
Julian Descottes 66896df4f8 Bug 1671676 - [devtools] Remove setupInChild from DevTools codebase r=ochameau
Depends on D93820

This is no longer used, except in one test which will be cleaned up in the next changeset.

Differential Revision: https://phabricator.services.mozilla.com/D93821
2020-10-20 20:48:35 +00:00
Razvan Maries aa8f4e17e1 Backed out 5 changesets (bug 1671676, bug 1671609) for Lint failure on frame.js. CLOSED TREE
Backed out changeset aba7c7caae10 (bug 1671676)
Backed out changeset 68449199cb9a (bug 1671676)
Backed out changeset 107e0c2f141a (bug 1671609)
Backed out changeset 02bc34c28501 (bug 1671609)
Backed out changeset 5efd9f6968ed (bug 1671609)
2020-10-20 19:59:11 +03:00
Julian Descottes 520c977ed5 Bug 1671676 - [devtools] Remove setupInChild from DevTools codebase r=ochameau
Depends on D93820

This is no longer used, except in one test which will be cleaned up in the next changeset.

Differential Revision: https://phabricator.services.mozilla.com/D93821
2020-10-19 19:34:25 +00:00
Csoregi Natalia 6024ac4c9c Backed out 4 changesets (bug 1633712) for leaks. CLOSED TREE
Backed out changeset 03553b300b86 (bug 1633712)
Backed out changeset 19c8ea0b43df (bug 1633712)
Backed out changeset 6eaa4d12b58c (bug 1633712)
Backed out changeset 10f97f47c883 (bug 1633712)
2020-10-15 09:36:36 +03:00
Nicolas Chevobbe 2ebc5767e4 Bug 1633712 - [devtools] Create WorkerTargets as soon as possible. r=ochameau,devtools-backward-compat-reviewers.
This patch adds support for dedicated worker targets in the Watcher actor.
Shared and Service workers are not handled yet.

In a similar manner to what we already have for frame targets, we add a worker-helper
file that will communicate with a JsWindowActor pair spawned on each document,
that will  manage workers (DevToolsWorkerParent/DevToolsWorkerChild).

For a given document, the DevToolsWorkerChild will enumerate the existing workers
related to it, as well as add an event listener to be notified when workers are
being registered and unregistered, and communicate that back to the DevToolsWorkerParent
on the main thread, so worker targets creation and destruction are notified by
the Watcher actor (via target-available-form and target-destroyed-form events).

When a worker is created, the DevToolsWorkerChild for the document the worker
was spawned from will create a WorkerTargetActor, that will live in the worker
thread (using worker-connector.js), passing it resources the Watcher is currently
listening for. It will also handle communication between the main thread and the
worker thread, when the watcher listen to new resources (or stop watching resources).

A WorkerTargetFront is created so the client can be notified about available
resources (via the resource-available-form event, emitted from the worker target).

Tests are added in the next patches of this queue.

Differential Revision: https://phabricator.services.mozilla.com/D85399
2020-10-15 05:17:52 +00:00
Alexandre Poirot 123ea13e79 Bug 1620243 - Watch console messages resources from the server side. r=nchevobbe,jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D77441
2020-06-09 18:22:45 +00:00
Julian Descottes 176d49f960 Bug 1620194 - Stop registering test actor dynamically r=ochameau
Differential Revision: https://phabricator.services.mozilla.com/D65564
2020-03-18 09:17:17 +00:00
Alexandre Poirot 2199c34392 Bug 1614793 - Rename DebuggerServerConnection to DevToolsServerConnection. r=jdescottes
Most of this was already done in bug 1614791, but we still have
to rename the file and change the require path.

Differential Revision: https://phabricator.services.mozilla.com/D63189
2020-02-18 15:28:49 +00:00
Alexandre Poirot 35634f4f44 Bug 1614792 - Rename DebuggerClient to DevToolsClient. r=jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D62495
2020-02-17 13:39:25 +00:00
Alexandre Poirot 1ea1a546f1 Bug 1614791 - Rename DebuggerServer to DevToolsServer. r=jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D61363
2020-02-17 10:28:24 +00:00