Граф коммитов

1752 Коммитов

Автор SHA1 Сообщение Дата
James Teh 0c667fd10a Bug 1910803: When checking if frames are on different lines in a11y, check if the frames are in different line lists before comparing their LineIterators. r=morgan
For example, one of the frames could be in the block's main in-flow line list and the other could be in an overflow list.
When this happens, it's not valid to compare LineIterators, so we must compare the line lists first.

Differential Revision: https://phabricator.services.mozilla.com/D218613
2024-08-07 22:51:58 +00:00
Otto Länd d148733a9d Bug 1905211: apply code formatting via Lando
# ignore-this-changeset
2024-08-05 02:58:07 +00:00
James Teh b453f2a8d5 Bug 1905211 part 10: Expose target text as an a11y text attribute. r=morgan
This is now simply a matter of leveraging the work in the previous patches to support the new selection type and map it to the correct attribute.
There isn't an IAccessible2 or ATK attribute for this yet.
We use mark:true, based on <mark> and role="mark" which is used for a semantic highlight.
I've discussed this with Google, NV Access and Vispero and they all seem to be happy with this.

Differential Revision: https://phabricator.services.mozilla.com/D217071
2024-08-05 02:54:38 +00:00
James Teh 38e692da86 Bug 1905211 part 7: Notify accessibility about ranges that are added or removed from selections. r=smaug,morgan
nsISelectionListener isn't sufficient because it only notifies that the selection has changed.
A11y needs to know specifically which ranges were added or removed.
Previously, we handled this specifically for spelling errors in mozInlineSpellChecker.
That code has been removed and replaced with a more general approach.

Since we now have these notifications, rather than using nsISelectionListener just to fire events, we now use these notifications for that as well.
This avoids the need to add additional nsISelectionListeners, which would get messy particularly for custom highlights where there can be an arbitrary number of selections at any given time.

Differential Revision: https://phabricator.services.mozilla.com/D217068
2024-08-05 02:54:37 +00:00
James Teh f3241d83cf Bug 1905211 part 6: Adjust names and comments to reflect that this code can now be used for more than spelling errors. r=morgan
There should be no functional change here.

Differential Revision: https://phabricator.services.mozilla.com/D217067
2024-08-05 02:54:37 +00:00
James Teh 8548fd59ea Bug 1905211 part 5: Generalise the a11y spelling error code to support multiple selection types. r=morgan
Previously, this code was specifically tied to the spell check selection.
Actually adding more selection types will come in subsequent patches.

Differential Revision: https://phabricator.services.mozilla.com/D217066
2024-08-05 02:54:36 +00:00
James Teh 146a1d8e33 Bug 1905211 part 4: Use TextOffsetAttribute for spelling errors. r=morgan
An array of ints is fine for spelling errors, but we need to support multiple attributes like this.
We could use an array of ints for each attribute and search each one, though that would require more work in the parent process.
Also, custom highlights can have multiple selections for a single highlight type.
This would be rather messy with int arrays, especially where multiple selections span beyond the Accessible.

Differential Revision: https://phabricator.services.mozilla.com/D217065
2024-08-05 02:54:36 +00:00
James Teh 853bc7d6f2 Bug 1905211 part 3: Introduce TextOffsetAttribute struct and support it as a serialisable attribute value. r=morgan
See the code comments for details.
We will soon use this for spelling errors, etc.

Differential Revision: https://phabricator.services.mozilla.com/D217064
2024-08-05 02:54:36 +00:00
James Teh 84a6fe08c4 Bug 1905211 part 2: Use AbstractRange instead of nsRange for a11y spelling error code. r=morgan
This doesn't matter for spelling errors.
However, we will soon generalise this code for use with other attributes like this.
In particular, custom highlights require us to use AbstractRange.
While we aren't supporting custom highlights in this bug, it is more effective to do this as part of this major refactor rather than doing another refactor later.

Differential Revision: https://phabricator.services.mozilla.com/D217063
2024-08-05 02:54:35 +00:00
Sylvestre Ledru 45030f6970 Bug 1519636 - Reformat recent changes to the Google coding style r=emilio,necko-reviewers,geckoview-reviewers,application-update-reviewers,media-playback-reviewers,devtools-reviewers,anti-tracking-reviewers,profiler-reviewers,win-reviewers,migration-reviewers,padenot,mconley,nchevobbe,kershaw,gstoll,mstange,bytesized,m_kato
This new version of clang 17 also slightly changed the formatting.

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D215914
2024-07-17 11:15:31 +00:00
James Teh 154b408813 Bug 1905021: Don't incorrectly treat the start of a node inside a contentEditable as the end of a line. r=nlapre
Previously, we assumed that CaretAssociationHint::Before always meant the caret was at the insertion point at the end of a line.
However, it can also mean that the caret is before the start of a node in the middle of a line.
To fix this, we need to check for line and paragraph boundaries.
See the code comments for details.

I moved this functionality completely out of HyperTextAccessible and into TextLeafPoint.
First, it was easiest to do these checks with private functions already available to TextLeafPoint.
Second, this ideally belongs in TextLeafPoint anyway; its existence in HyperTextAccessible was vestigial.

Differential Revision: https://phabricator.services.mozilla.com/D215089
2024-07-01 06:24:13 +00:00
acseh e74b86533c Backed out changeset a5ff95602119 (bug 1905021) as requested for causing accessibility crashes related to selection a=backout 2024-07-01 00:35:00 +03:00
James Teh 08e5d9edbe Bug 1905021: Don't incorrectly treat the start of a node inside a contentEditable as the end of a line. r=nlapre
Previously, we assumed that CaretAssociationHint::Before always meant the caret was at the insertion point at the end of a line.
However, it can also mean that the caret is before the start of a node in the middle of a line.
To fix this, we need to check for line and paragraph boundaries.
See the code comments for details.

I moved this functionality completely out of HyperTextAccessible and into TextLeafPoint.
First, it was easiest to do these checks with private functions already available to TextLeafPoint.
Second, this ideally belongs in TextLeafPoint anyway; its existence in HyperTextAccessible was vestigial.

Differential Revision: https://phabricator.services.mozilla.com/D215089
2024-06-28 23:30:08 +00:00
James Teh 89e51400b5 Bug 1901457 part 3: Add a way to get text selection as TextLeafRanges. r=nlapre
Differential Revision: https://phabricator.services.mozilla.com/D214343
2024-06-26 10:15:44 +00:00
James Teh d8a12f0303 Bug 1901457 part 2: Refactor TextLeafPoint caret retrieval so that the end of line insertion point can be stored without being tied to the current caret position. r=nlapre
Previously, TextLeafPoint::GetCaret() returned a placeholder representation of the caret.
ActualizeCaret() was then used to get the real caret position, optionally adjusting for the line end depending on the caller's needs.
This causes problems when we need to store the TextLeafPoint information in a UIA text range object because the only way to indicate the line end insertion point is to use the GetCaret() placeholder, but that also means the stored position changes if the caret moves.
For example, if you disabled NVDA's "caret moves review cursor" setting and then moved the caret, the review cursor should stay at the old position, but it didn't previously.

To fix this:

1. TextLeafPoint now has a new mIsEndOfLineInsertionPoint flag which is set to true by GetCaret() if appropriate.
2. GetCaret() sets mAcc and mOffset immediately, rather than needing to call ActualizeCaret() later.
3. TextLeafPoint methods still need to adjust the point to correctly handle the line end insertion point in some cases, but that is now handled by the private TextLeafPoint::AdjustEndOfLine method.
4. FindBoundary now correctly returns the previous character/cluster when requested for this end of line insertion point. Strictly speaking, this bug always existed, but no existing callers ever triggered it.

Differential Revision: https://phabricator.services.mozilla.com/D214342
2024-06-26 10:15:43 +00:00
James Teh 9b513e46b8 Bug 1901457 part 1: When a caret is at the end of a line, have TextLeafPoint::FindBoundary return no character for BOUNDARY_CLUSTER. r=nlapre
We already did this for BOUNDARY_CHAR, but i neglected to update this for cluster in bug 855184.
Without this, FindBoundary with BOUNDARY_CLUSTER on a caret TextLeafPoint when the caret is at the end of a line would return the last cluster instead of no character.

Differential Revision: https://phabricator.services.mozilla.com/D214341
2024-06-26 10:15:43 +00:00
Nathan LaPre 9162c8ef57 Bug 1903713: Avoid static nsTHashSet constructor via instance method, r=Jamie
This revision avoids static construction of the nsTHashSet by hiding the set
behind an instance method.

Differential Revision: https://phabricator.services.mozilla.com/D214664
2024-06-24 22:52:21 +00:00
Masayuki Nakano d835b38b9f Bug 1675847 - part 5: Make `contextmenu` event dispatchers use `WidgetPointerEvent` or `PointerEvent` r=smaug,pip-reviewers,devtools-reviewers,nchevobbe,mconley
`eContextMenu` event may be fired from `widget`.  Therefore, different from
`ePointerClick` and `ePointerAuxClick`, they may cross the process boundary,
may be handled by APZ and may be dispatched into the DOM after a delay.
Therefore, this patch is complicated than the previous patch.  This adds
* New IPC message handlers for sending/receiving a `WidgetPointerEvent`
* New `DelayedPointerEvent` class and templated `MouseInput::ToWidgetEvent`
* `PresShell::EventHandler` handles `eContextMenu` as same as `WidgetMouseEvent`

Differential Revision: https://phabricator.services.mozilla.com/D213003
2024-06-14 00:18:48 +00:00
Morgan Rae Reschenberg 8c415c1069 Bug 1901853: Update <dd> and <dl> roles to match spec for VO r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D213280
2024-06-13 19:47:05 +00:00
James Teh c73ce972ef Bug 1813976: Support RemoteAccessible::Language on non-HyperText Accessibles. r=morgan
1. HyperTextAccessibles already cache language and RemoteAccessible::Language uses this.
2. Previously, we didn't cache language for a non-text, non-HyperText Accessible at all. This includes images and HTML radio buttons. Now we cache it as a top level attribute in this case and return it in RemoteAccessible::Language.
3. We previously cached language for a text (leaf) Accessible where the language differed from its parent, but we never used this in RemoteAccessible::Language, only when calculating text attributes. Now we use it in RemoteAccessible::Language as well.
4. Where a text (leaf) Accessible's language is the same as its parent, RemoteAccessible::Language now gets this from the parent.

Differential Revision: https://phabricator.services.mozilla.com/D212503
2024-06-05 23:51:11 +00:00
James Teh 3b3a1815ea Bug 855184 part 1: Add BOUNDARY_CLUSTER so a11y can query grapheme clusters, AKA user-perceived characters. r=eeejay
Most OS APIs want a cluster when they ask for a "character", except ATK.
Rather than altering BOUNDARY_CHAR, I added a new BOUNDARY_CLUSTER.
Aside from being less risky and causing less churn, there are cases internally where we want to move a TextLeafPoint by character; e.g. to explicitly move to the next/previous Accessible or to move to the next/previous character in an abstract way without worrying about Accessible boundaries.
Calculating clusters is more expensive, so it doesn't make sense to move by cluster in those cases.

Differential Revision: https://phabricator.services.mozilla.com/D212517
2024-06-04 20:36:42 +00:00
Ting-Yu Lin 8016adbafa Bug 1896516 Part 8 - Remove nsIScrollableFrame usages under accessible/. r=layout-reviewers,emilio
Differential Revision: https://phabricator.services.mozilla.com/D211495
2024-05-30 06:32:20 +00:00
Ting-Yu Lin 6306934820 Bug 1896516 Part 7 - Remove PresShell::GetRootScrollFrameAsScrollable(). r=layout-reviewers,emilio
`PresShell::GetRootScrollFrameAsScrollable()` is equivalent to
`PresShell::GetRootScrollContainerFrame()`.

In ScrollContainerFrame.h, `DecideScrollableLayer()` has two versions, one has
four parameters, and the other has five parameters with the fifth parameter
`aDirtyRectHasBeenOverriden` having a default value `nullptr`. When we switch
the caller from `nsIScrollableFrame` to `ScrollContainerFrame`, we need to
remove the default value for the fifth parameter to avoid ambiguity.

Differential Revision: https://phabricator.services.mozilla.com/D211494
2024-05-30 06:32:20 +00:00
Sebastian Hengst ccb101be8f Backed out 15 changesets (bug 1896516) for causing scrolling crashes on macOS. a=backout
Backed out changeset fd6904338812 (bug 1896516)
Backed out changeset 2977ff81a23e (bug 1896516)
Backed out changeset c8a6b0e526d6 (bug 1896516)
Backed out changeset 3c06f22da72b (bug 1896516)
Backed out changeset f63b0c4335fe (bug 1896516)
Backed out changeset 6f7ab8adfa6e (bug 1896516)
Backed out changeset 997c9249dbed (bug 1896516)
Backed out changeset c964fccd5180 (bug 1896516)
Backed out changeset 7b481b747b7a (bug 1896516)
Backed out changeset 42e1bbe0ecb6 (bug 1896516)
Backed out changeset 717dac08b607 (bug 1896516)
Backed out changeset 2f0817331dbe (bug 1896516)
Backed out changeset b765169a7a8f (bug 1896516)
Backed out changeset a2d37b98273c (bug 1896516)
Backed out changeset ea9ecb543e66 (bug 1896516)
2024-05-29 11:22:52 +02:00
Ting-Yu Lin 83578c4adb Bug 1896516 Part 8 - Remove nsIScrollableFrame usages under accessible/. r=layout-reviewers,emilio
Differential Revision: https://phabricator.services.mozilla.com/D211495
2024-05-28 04:46:19 +00:00
Ting-Yu Lin 9ab65dbb68 Bug 1896516 Part 7 - Remove PresShell::GetRootScrollFrameAsScrollable(). r=layout-reviewers,emilio
`PresShell::GetRootScrollFrameAsScrollable()` is equivalent to
`PresShell::GetRootScrollContainerFrame()`.

In ScrollContainerFrame.h, `DecideScrollableLayer()` has two versions, one has
four parameters, and the other has five parameters with the fifth parameter
`aDirtyRectHasBeenOverriden` having a default value `nullptr`. When we switch
the caller from `nsIScrollableFrame` to `ScrollContainerFrame`, we need to
remove the default value for the fifth parameter to avoid ambiguity.

Differential Revision: https://phabricator.services.mozilla.com/D211494
2024-05-28 04:46:19 +00:00
James Teh ad246a46f8 Bug 1897597 part 2: Don't treat bidi split continuations as line breaks. r=morgan
Continuations occur when text wraps onto a new line (fluid continuations), but they also occur when the text direction changes (non-fluid continuations).
Previously, TextLeafRange assumed that all continuations were line breaks.
Now, we explicitly treat fluid continuations as line breaks.
It's also possible for a non-fluid continuation to be on a different line if the text direction changes between the end of the previous line and the start of another.
In that case, we must use a line iterator to check whether they are on different lines.

Differential Revision: https://phabricator.services.mozilla.com/D210893
2024-05-27 06:21:04 +00:00
James Teh b8d61523d1 Bug 1897597 part 1: Split TextLeafRange code to check whether frames are on different lines into a separate function. r=morgan
There should be no functional change here.
However, we're going to need to reuse this elsewhere in the next patch.

Differential Revision: https://phabricator.services.mozilla.com/D210986
2024-05-27 06:21:03 +00:00
Emilio Cobos Álvarez e1bbbb144c Bug 1896599 - Remove event-from-input support. r=Jamie,devtools-reviewers,eeejay,nchevobbe
As per the comments it isn't supported with cache-the-world on, it's
barely documented if at all, and a test for it seems to be failing
without me being able to reproduce it at least (tried on both windows
and Linux).

I don't think it's worth digging too much more into it. My guess is a
reentrant / differently timed a11y event caused by my scheduling
changes, or so, which would override sEventTargetNode or the other
static bool.

The test has ~always failed on macOS too...

Differential Revision: https://phabricator.services.mozilla.com/D210872
2024-05-23 12:09:21 +00:00
James Teh 095a80c647 Bug 1897349: Don't update CSS pseudo-element TextLeafAccessibles if there is CSS content alt text. r=eeejay
When we create a TextLeafAccessible for a CSS pseudo-element, we already use the alt text if present.
However, it seems layout sometimes re-renders the text of pseudo-elements.
Previously, a11y would update the text in this case like it would for any other TextLeafAccessible, thus overwriting the alt text with the text rendered by layout.
To fix this, we now skip updating text if CSS alt text is present.

Differential Revision: https://phabricator.services.mozilla.com/D211139
2024-05-22 22:14:33 +00:00
Nathan LaPre 44b945e448 Bug 1898082: Clean up comments in nsTextEquivUtils, r=Jamie
This revision updates outdated comments in nsTextEquivUtils that refer to
previous names for steps of the Accessible Name and Description Computation
specification. It updates the comments to the new, named computation steps.
Additionally, this revision cleans up and adds other comments to make reading
the code a bit easier.

Differential Revision: https://phabricator.services.mozilla.com/D211110
2024-05-22 17:19:30 +00:00
Morgan Rae Reschenberg 62ce834ce8 Bug 1895408: Add support for exposing critical, supoptimal, optimal meter values via AXValueDescription r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D209615
2024-05-21 22:11:05 +00:00
Nathan LaPre 6e696c39b1 Bug 1878355: Restrict ARIA IDREF, node consultation in acc name traversals, r=Jamie
The Acc Name spec requires that UAs should only follow aria-labelledby and
aria-describedby IDREFs "if [...] the current node is not already part of an
ongoing aria-labelledby or aria-describedby traversal." It also requires
that "[e]ach node in the subtree is consulted only once." This revision
implements these rules and updates relevant tests, including removal of WPT
expected-fail designations. The concept of sInitiatorAcc has been expanded - we
now track all referenced accessibles. We also track whether we're in an
aria-labelledby or aria-describedby traversal.

Differential Revision: https://phabricator.services.mozilla.com/D209617
2024-05-20 20:16:36 +00:00
James Teh b2b99f4e80 Bug 1896047 part 6: Support the CSS attr() function in CssAltContent. r=eeejay
As well as plain strings, alt text items can get their text from an attribute on the Element.
We need to include the values of those attributes when we compute alt text.
In addition, we must watch for changes to these attributes and update the accessibility tree or fire events as necessary.

Differential Revision: https://phabricator.services.mozilla.com/D210018
2024-05-17 00:24:16 +00:00
James Teh 6782d3d9fd Bug 1896047 part 5: Support CSS alt text for text content. r=eeejay
CSS alt text makes most sense for an image.
However, even when the content property specifies text, you can still specify alt text!
To support this, this patch does two things:

1. Uses the alt text for the TextLeafAccessible instead of the primary text.
2. Tweaks nsTextEquivUtils to use the alt text when gathering text from a subtree.

As with the last patch, changing the CSS content replaces the pseudo-element, which in turn replaces the Accessible with a new one, so we don't need any additional code to handle updates.

Differential Revision: https://phabricator.services.mozilla.com/D210017
2024-05-17 00:24:16 +00:00
James Teh 845cf6ca31 Bug 1896047 part 4: Create an ImageAccessible for a pseudo-element image if there is CSS alt text. r=eeejay
Previously, a11y did get notified about CSS images, but we chose not to create Accessibles for them.
This patch allows us to create an ImageAccessible for a CSS image if it has alt text.
Since there is now an Accessible, the previous patch will then mean that Accessible::Name will return the CSS alt text.
Changing the CSS content replaces the pseudo-element, which in turn replaces the Accessible with a new one, so we don't need any additional code to handle updates.

Differential Revision: https://phabricator.services.mozilla.com/D210016
2024-05-17 00:24:15 +00:00
James Teh 1b49a39c03 Bug 1896047 part 2: Introduce CssAltContent class to query alternative text specified in the CSS content property. r=eeejay
This allows us to check for alt text and also to output all of it to a string.
For now, this only supports plain strings, but this will be extended in a subsequent patch.

Differential Revision: https://phabricator.services.mozilla.com/D210014
2024-05-17 00:24:14 +00:00
James Teh a157ee3a80 Bug 1896047 part 1: Enclose TreeWalker implementation in a namespace block. r=eeejay
Without this, a new source file introduced in a subsequent patch causes the compiler to become confused about which TreeWalker we mean: a11y::TreeWalker or dom::TreeWalker.
I don't really understand why this starts happening, but I'm guessing it is related to our unified builds.

Differential Revision: https://phabricator.services.mozilla.com/D210013
2024-05-17 00:24:14 +00:00
Ting-Yu Lin edb8e4ddd5 Bug 1824877 Part 3 - Change ScrollContainerFrame's type from Scroll to ScrollContainer. r=dholbert
This effectively changes the `IsScrollFrame()` helper to
`IsScrollContainerFrame()`.

Differential Revision: https://phabricator.services.mozilla.com/D210357
2024-05-15 17:50:49 +00:00
Emilio Cobos Álvarez 57df8917ac Bug 1895870 - Simplify refresh driver observer set-up. r=smaug
There's no call to AddRefreshObserver(FlushType::Layout), so we don't
need to track layout flushes. The only reason we need
mLayoutFlushObservers is so that reflows triggered from the style flush
get processed. But at that point, we can just flush layout directly.

There's no really good distinction between style flushes and layout
flushes with container queries anyways, so this makes the code simpler
to reason about.

Differential Revision: https://phabricator.services.mozilla.com/D209924
2024-05-14 08:12:03 +00:00
James Teh b44b91602f Bug 1887790 part 5: Fire UIA LiveRegionChanged events. r=nlapre
Differential Revision: https://phabricator.services.mozilla.com/D209661
2024-05-13 09:16:46 +00:00
James Teh 5d74e412f4 Bug 1887790 part 2: Implement the UIA LiveSetting property. r=nlapre
Differential Revision: https://phabricator.services.mozilla.com/D209658
2024-05-13 09:16:45 +00:00
James Teh af0fad06a4 Bug 1887790 part 1: Remove nsAccUtils::IsARIALive. r=nlapre
This isn't used any more and only works for LocalAccessible.

Differential Revision: https://phabricator.services.mozilla.com/D209657
2024-05-13 09:16:45 +00:00
Emilio Cobos Álvarez 3b42787268 Bug 1895208 - Refactor IsFocusable checks to take flags rather than bool arguments. r=smaug
This doesn't change behavior on its own, but it's likely we want to make
the tab focusability more complicated in bug 1895184, and this will make
changes to this area less painful.

Differential Revision: https://phabricator.services.mozilla.com/D209525
2024-05-06 21:54:37 +00:00
James Teh 07708fd3ff Bug 1893096: When a <td> gets an implicit role of gridcell, map ARIA states appropriately. r=morgan
We return the implicit role in ARIATransformRole, but that doesn't change the role map entry.
However, ApplyARIAState uses the role map entry to figure out what states are relevant.
To fix this, ApplyARIAState now checks for this case and gets the correct role map entry before applying states.

Differential Revision: https://phabricator.services.mozilla.com/D208855
2024-05-03 05:31:25 +00:00
Nathan LaPre 9d751c3283 Bug 1878356: Remove nbsp trimming from acc names, r=Jamie
This revision reverts the changes that trimmed non-breaking spaces from the
start and end of accessible names. The web platform group has decided that
those tests weren't valid as-is; the correct behavior is not to trim those
characters. This revision also removes expected-fail designations from
affected tests.

Differential Revision: https://phabricator.services.mozilla.com/D208687
2024-04-30 00:35:45 +00:00
Nathan LaPre eb1c2ab82d Bug 1877811: Maybe create SVG accessible in display:contents contexts, r=Jamie
Since SVG elements aren't in a markup map, Gecko doesn't check for them when
searching markup maps while determining whether to create an accessible in
display:contents contexts. This revision addresses the problem by factoring out
the SVG creation code and using it in two places - newly in the dislay:contents
code. This revision also removes expected failures from relevant web platform
tests.

Differential Revision: https://phabricator.services.mozilla.com/D207943
2024-04-23 02:42:59 +00:00
Thomas Wisniewski 8b3a691117 Bug 1892349 - add doc-pageheader and doc-pagefooter ARIA DPUB roles, and have all DPUB roles return the expected computed rule; r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D207946
2024-04-19 04:23:25 +00:00
James Teh ef39891ee4 Bug 1888649: Tweak the assertion when we can't get the parent DocAccessible in CreateDocOrRootAccessible to allow background extension pages. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D207497
2024-04-17 22:53:27 +00:00
Nathan LaPre 71fd3eb9cb Bug 1849160 - Part 1: Implement rowgroup role, r=Jamie
This revision implements the ARIA rowgroup role in Gecko. Previously, Gecko was
using roles::GROUPING for multiple types of groups and disambiguating them
in various places. This revision unwinds that while maintaining present
functionality.

Differential Revision: https://phabricator.services.mozilla.com/D205671
2024-04-10 17:22:12 +00:00