There were cases that a lot of cmds messages were sent by WebGLChild::FlushPendingCmds() without calling ClientWebGLContext::GetFrontBuffer(). And the IPC messages were waiting to be handled by WebGLParent, since OpenGL handling could take longer. Then there were cases that pending IPC messages were accumulated and it caused out of file descriptor on Linux. The sync IPC could reduce the pending IPC messages if there are a lot of cmds flashes.
async Ping is used for checking if IPC message is congested at WebGLParent. If a count of flushes since last congestion check reaches maybeIPCMessageCongestion, we think that IPC message is congested at WebGLParent. Then send sync SyncPing message to flush pending IPC messages.
Differential Revision: https://phabricator.services.mozilla.com/D181484
The sync IPDL RemoteAccessible::AddToSelection was removed in bug 1811092, but the DocAccessibleChildBase method remained.
This is no longer used, so remove it.
Differential Revision: https://phabricator.services.mozilla.com/D181937
This should avoid potential fuzzing-only issues which would be caused by
the actor being torn down synchronously after a FatalError or KillHard.
Instead, the state is set to error synchronously, blocking all further
message sending/receiving, and the notification is made async, similar
to how it is handled for normal channel errors.
Differential Revision: https://phabricator.services.mozilla.com/D180254
This patch changes KillHard() such that the IPC channel is immediately
shut down with an error after a KillHard() is performed. This is done by
fixing the previously-broken CLOSE_CHANNEL_WITH_ERROR support in
ShutDownProcess, and calling that method after KillHard().
This ensures that after the process has been killed, no further messages
will be delivered and processed, even if they were sent before the
process was killed.
In addition, the assertions and KillHard calls which are disabled for
fuzzing were changed to also shut down the channel, making fuzzing IPC
errors cause the connection to be terminated like it is in production
for these actors.
This change does not impact actors which ignore processing errors.
Differential Revision: https://phabricator.services.mozilla.com/D178383
Because a11y clients only talk to the parent process now, content processes don't need to generate MSAA ids.
They're all generated in the parent process.
Differential Revision: https://phabricator.services.mozilla.com/D177895
This patch changes KillHard() such that the IPC channel is immediately
shut down with an error after a KillHard() is performed. This is done by
fixing the previously-broken CLOSE_CHANNEL_WITH_ERROR support in
ShutDownProcess, and calling that method after KillHard().
This ensures that after the process has been killed, no further messages
will be delivered and processed, even if they were sent before the
process was killed.
In addition, the assertions and KillHard calls which are disabled for
fuzzing were changed to also shut down the channel, making fuzzing IPC
errors cause the connection to be terminated like it is in production
for these actors.
This change does not impact actors which ignore processing errors.
Differential Revision: https://phabricator.services.mozilla.com/D178383
The message wasn't doing anything useful on Mac. Took the opportunity to
correcty expose the AXTitle/AXDescription of headings.
Differential Revision: https://phabricator.services.mozilla.com/D176824
Previously we would both send it as the routing target for the actor as
well as as an implicit actor parameter. This patch keeps the same API
from the caller's point of view, but avoids sending the second reference
to the actor in the Send__delete__ message, which also avoids potential
issues with the second reference being null under fuzzing.
Differential Revision: https://phabricator.services.mozilla.com/D175545
Previously we would both send it as the routing target for the actor as
well as as an implicit actor parameter. This patch keeps the same API
from the caller's point of view, but avoids sending the second reference
to the actor in the Send__delete__ message, which also avoids potential
issues with the second reference being null under fuzzing.
Differential Revision: https://phabricator.services.mozilla.com/D175545
This should make it possible to send data without copying in some
situations.
This requires adding the `rightconst` attribute to the C++ `Type` type
in order to allow specifying `Span<PFoo* const>`, which isn't possible
to specify with a left const. The type is getting very gross with all of
these flags and it's probably worth switching it to be a recursive
type at this point.
Differential Revision: https://phabricator.services.mozilla.com/D173570
This should make it possible to send data without copying in some
situations.
This requires adding the `rightconst` attribute to the C++ `Type` type
in order to allow specifying `Span<PFoo* const>`, which isn't possible
to specify with a left const. The type is getting very gross with all of
these flags and it's probably worth switching it to be a recursive
type at this point.
Differential Revision: https://phabricator.services.mozilla.com/D173570
These are the IPDL compiler changes to make all refcounted types be considered
NotNull by default, building on the changes from bug 1607634.
Existing uses of IPDL refcounted types will be marked as nullable in part 1b.
Differential Revision: https://phabricator.services.mozilla.com/D168888
The code changes required for this will be in part 4b. The code is designed to
be generic as it will also be used for RefCounted types in a future patch. This
replaces the manual checking which was previously done in struct and union
serializers for non-nullable actor members.
Differential Revision: https://phabricator.services.mozilla.com/D168886
Previously, we would always generate a default constructor for IPDL structs
which explicitly initializes every member. This would require members to have
default initializers statically. With the new approach, each member is
individually wrapped with a template parameter which will try to ensure value
initiaization, and the default constructor is implemented with `= default;`.
The default constructor will produce a warning on clang if it is implicitly
deleted, so that warning is also suppressed.
Differential Revision: https://phabricator.services.mozilla.com/D168881
This builds on top of the work in bug 1775062, by using this new signature
everywhere, including IPDL struct members and in/outparams for IPDL messages.
This is done with relatively minimal changes by using two bindings, one of
which is a reference.
Differential Revision: https://phabricator.services.mozilla.com/D168880
This will be useful after part 3 where it will be used as part of implementing
Read based on Maybe for IPDL structs. Without this change, we'd need to copy to
construct an IPDL struct containing a non-default-constructable type.
Differential Revision: https://phabricator.services.mozilla.com/D169268
This combines the multiple fields or variants which were previously used to
track sided types like protocol types into a single field wrapped with a
SideVariant.
This will be used in the next part to avoid the need for default constructors
for actor types allowing the proper types to be used.
Differential Revision: https://phabricator.services.mozilla.com/D168879
These are the IPDL compiler changes to make all refcounted types be considered
NotNull by default, building on the changes from bug 1607634.
Existing uses of IPDL refcounted types will be marked as nullable in part 1b.
Differential Revision: https://phabricator.services.mozilla.com/D168888
The code changes required for this will be in part 4b. The code is designed to
be generic as it will also be used for RefCounted types in a future patch. This
replaces the manual checking which was previously done in struct and union
serializers for non-nullable actor members.
Differential Revision: https://phabricator.services.mozilla.com/D168886
Previously, we would always generate a default constructor for IPDL structs
which explicitly initializes every member. This would require members to have
default initializers statically. With the new approach, each member is
individually wrapped with a template parameter which will try to ensure value
initiaization, and the default constructor is implemented with `= default;`.
The default constructor will produce a warning on clang if it is implicitly
deleted, so that warning is also suppressed.
Differential Revision: https://phabricator.services.mozilla.com/D168881
This builds on top of the work in bug 1775062, by using this new signature
everywhere, including IPDL struct members and in/outparams for IPDL messages.
This is done with relatively minimal changes by using two bindings, one of
which is a reference.
Differential Revision: https://phabricator.services.mozilla.com/D168880