When any exception happens from the DevToolsProcess's JSProcessActor,
the stacktrace is lost when the exception reaches the parent process.
Manually transfer the exception payload between processes
so that RDP server can send the full stack to the client.
Using callbacks was losing async stack trace, so I moved super.sendQuery
into an inline async function to be able to use await and preserve async
stacks in case of errors.
Differential Revision: https://phabricator.services.mozilla.com/D298390
Bump version to the released version number.
Document publishing with access token.
Allow publishing with changes outside of reps folder.
Differential Revision: https://phabricator.services.mozilla.com/D289758
The profiler frontend needs this in order to filter down to a specified time
range. Unfortunately we can't cheaply filter the shapes table as that would require
reading every entry in the buffer, but I would expect the shapes table to be
substantially less sensitive.
Differential Revision: https://phabricator.services.mozilla.com/D285340
Move SearchInFileBar into devtools/client/shared/components as FileSearchBar, and
add a Debugger-side FileSearch wrapper that wires editor/search helpers and
selectors/actions without debugger-specific imports in the shared component.
Differential Revision: https://phabricator.services.mozilla.com/D278736
Adds two new glean events recorded when the devtools toolbox shows an error panel,
which marks the end of the session for users (from that state the only possible action
is to close the toolbox).
Those errors can occur because of a frontend/react issue in a devtools react
component. This is logged as Glean.devtoolsMain.toolboxComponentError.
In this case the data collected is: the error name, the devtools react component stack
and the error stack.
They can also occur after a server error, which prevents the proper initialization
of the toolbox. This is logged as Glean.devtoolsMain.toolboxServerError.
In this case the data collected is: the error name, the frontend error stack,
the server error stack, the type of the RDP packet where the server error occurred
and the id of the devtools server actor targeted by this packet.
The goal in both case was to restrict the data only to items which can only contain
information purely related to devtools' codebase and not anything that could tangentially
contain user data.
A test is added to cover the Glean.devtoolsMain.toolboxComponentError.
A test for the toolboxServerError would require a way to force a toolbox initialization failure
which is not possible at the moment.
Differential Revision: https://phabricator.services.mozilla.com/D283249
None of these styles are actually used in the profiler (nor in jsonviewer).
Let's do this stopgap solution until we better organize files within Reps.
Differential Revision: https://phabricator.services.mozilla.com/D282012
Locations with line=0 normally indicate that we have no line information for the location.
In this case, it is useless to query the sourcemap service from the Frame component.
Additionally check if column is 0 or 1 to be more confident that this is a default location.
Differential Revision: https://phabricator.services.mozilla.com/D281033
Since we're now avoiding unnecessary work, we were missing events in the
openInspectorSidebarTab test helper.
To fix this, we make ToolSidebar#select return a Promise that resolves once
the select is done (or directly if the panel was already selected).
Callsites of ToolSidebar#select are updated accordingly.
We also add initialized promises to both the BoxModel and LayoutView so we
can wait on those instead of waiting for specific events.
We stop emitting the `grid-panel-updated` event as it's not listened for anymore.
Differential Revision: https://phabricator.services.mozilla.com/D278942
We used to compute the pseudo element name (e.g. `::before`, `::marker`, …) in a
few places, both on the server and the client.
This patch does it directly from `getNodeDisplayName`, which is called for assigning
the NodeActorForm displayName.
We also use `getNodeDisplayName` in `getBindingElementAndPseudo` to avoid duplicating
code.
On the client we now use displayName in the few places we used to re-construct
the pseudo element text in (markup view, breadcrumb, rules view, …)
We also no longer pass "individual" pseudo element booleans (e.g. `isAfterPseudoElement`)
in the NodeActor form, but a more generic `isPseudoElement` one so it's easier
to handle future pseudo element (e.g. `::view-transition`).
And we take this as an opportunity to remove the utility functions that we were
using to build those properties, and instead switch to look into `Node.implementedPseudoElement`
to detect when we do handle pseudo elements.
Differential Revision: https://phabricator.services.mozilla.com/D271002
We used to compute the pseudo element name (e.g. `::before`, `::marker`, …) in a
few places, both on the server and the client.
This patch does it directly from `getNodeDisplayName`, which is called for assigning
the NodeActorForm displayName.
We also use `getNodeDisplayName` in `getBindingElementAndPseudo` to avoid duplicating
code.
On the client we now use displayName in the few places we used to re-construct
the pseudo element text in (markup view, breadcrumb, rules view, …)
We also no longer pass "individual" pseudo element booleans (e.g. `isAfterPseudoElement`)
in the NodeActor form, but a more generic `isPseudoElement` one so it's easier
to handle future pseudo element (e.g. `::view-transition`).
And we take this as an opportunity to remove the utility functions that we were
using to build those properties, and instead switch to look into `Node.implementedPseudoElement`
to detect when we do handle pseudo elements.
Differential Revision: https://phabricator.services.mozilla.com/D271002