Commit Graph

247 Commits

Author SHA1 Message Date
James Teh
d648744f28 Bug 1837126: Don't set the selection range when HyperTextAccessibleBase::PasteText is called with TEXT_OFFSET_CARET. r=eeejay
If no text is selected, this is the same as passing the caret offset, since the selection range is already where we want it.
However, if text is selected, this allows the caller to replace it, just as it would be when pasting using the keyboard or GUI.
Note that this doesn't break any existing expectations because TEXT_OFFSET_CARET was never supported for this method previously.

This allows us to remove the DeleteText call from Android SessionAccessibility::Paste.
This separate DeleteText call was causing problems because it could result in the deletion and the insertion happening in two separate ticks, resulting in incorrect events.
Now, this should always happen in a single tick.

Differential Revision: https://phabricator.services.mozilla.com/D226108
2024-10-20 22:35:34 +00:00
Eitan Isaacson
949bd3acfe Bug 1915262 - Fire queued live region event from content in MacOS. r=morgan
Introduce a gecko live region changed event and fire it from within content.
This way it gets coalesced in the case of many insertions/deletions.

Also, rely on text insert/delete instead of reorder because there can be cases
where the text in a leaf changes as opposed to a tree mutation.
We get text insert/delete on mutations too, so that should cover it.

Differential Revision: https://phabricator.services.mozilla.com/D224388
2024-10-10 17:36:26 +00:00
Cosmin Sabou
b2778dfb92 Backed out changeset 3cefab965a7c (bug 1915262) for causing accessible related assertion failures on macOS. 2024-10-09 10:43:37 +03:00
Eitan Isaacson
4d81a9a27a Bug 1915262 - Fire queued live region event from content in MacOS. r=morgan
Introduce a gecko live region changed event and fire it from within content.
This way it gets coalesced in the case of many insertions/deletions.

Also, rely on text insert/delete instead of reorder because there can be cases
where the text in a leaf changes as opposed to a tree mutation.
We get text insert/delete on mutations too, so that should cover it.

Differential Revision: https://phabricator.services.mozilla.com/D224388
2024-10-09 05:36:21 +00:00
Nathan LaPre
50578506c1 Bug 1794974: Part 6: Add xpcAccessibilityService::setCacheDomains, r=Jamie
This revision implements a simple way to set cache domains from XPCOM, which is
crucial for testing caching granularity.

Differential Revision: https://phabricator.services.mozilla.com/D220040
2024-09-09 23:02:21 +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
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
Nika Layzell
a48079cd72 Bug 1881863 - Part 1: Standardize on boolean over bool in xpidl, r=xpcom-reviewers,necko-reviewers,valentin,extension-reviewers,application-update-reviewers,media-playback-reviewers,credential-management-reviewers,search-reviewers,anti-tracking-reviewers,places-reviewers,nalexander,emilio,zombie,sgalich,karlt,lina,Standard8
Previously the `boolean` type was also declared using a `bool` typedef in
xpidl, meaning that both were used in various places. This patch standardizes
on the built-in `boolean` type, removing the typedef.

Differential Revision: https://phabricator.services.mozilla.com/D206382
2024-04-04 18:45:21 +00:00
Norisz Fay
9115fe463b Backed out 4 changesets (bug 1849160) for causing gv-junit failure on AccessibilityTest#testSelectable CLOSED TREE
Backed out changeset 0fb937f8c362 (bug 1849160)
Backed out changeset fe5651e406e5 (bug 1849160)
Backed out changeset 8f14ad3ed8b4 (bug 1849160)
Backed out changeset 9a745f454db2 (bug 1849160)
2024-04-02 07:32:11 +03:00
Nathan LaPre
dcf1ffa60a 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-02 02:17:38 +00:00
Nathan LaPre
838eaaadf2 Bug 1656330: Implement grid role, mapping, r=Jamie,devtools-reviewers,nchevobbe
This revision adds a Gecko GRID role, matching the ARIA 'grid' role, and
implements its platform mappings. It then remaps the ARIA 'grid' role to the
Gecko GRID role. Finally, this revision removes the expected-fail for the
relevant formerly-failing web platform test and updates existing tests.

Differential Revision: https://phabricator.services.mozilla.com/D202040
2024-02-21 03:31:55 +00:00
Nathan LaPre
447963adb2 Bug 1732306 - Part 3: Implement time role mappings, r=Jamie
This revision adds role mappings for the 'time' ARIA role by implementing HTML
markup mapping, adding platform mappings, and adding the role info itself. This
revision also enables the previously-failed wpt tests and fixes other tests.

Differential Revision: https://phabricator.services.mozilla.com/D200132
2024-02-08 17:49:42 +00:00
Nathan LaPre
db33b5dc13 Bug 1732306 - Part 2: Implement strong role mappings, r=Jamie
This revision implements mapping for the ARIA 1.2 'strong' role by adding a
markup mapping, a role definition, and platform mappings. This revision also
removes the expected failures in the wpt test suite and fixes other tests.

Differential Revision: https://phabricator.services.mozilla.com/D200131
2024-02-08 17:49:41 +00:00
Nathan LaPre
61034e5b74 Bug 1732306 - Part 1: Implement emphasis role mappings, r=Jamie
This revision implements the mapping for the ARIA 1.2 emphasis role, which was
unsupported in Firefox until now. This change addresses a web platform test
failure. To accomplish this, the revision adds the WAI-defined role, adds a role
enum value, adds platform mappings, and adds a markup role mapping. The change
requires a new static atom for the word "emphasis," also added in this revision.
Finally, this change removes the expected wpt failure and updates other tests.

Differential Revision: https://phabricator.services.mozilla.com/D200130
2024-02-08 17:49:41 +00:00
Iulian Moraru
db55ffffda Backed out 4 changesets (bug 1732306) for causing osx browser-a11y failures on browser_text_basics.js. CLOSED TREE
Backed out changeset 55e194f1c92d (bug 1732306)
Backed out changeset 44270ea2f53c (bug 1732306)
Backed out changeset e063d64d28a6 (bug 1732306)
Backed out changeset 1824083c6fc1 (bug 1732306)
2024-02-08 04:06:38 +02:00
Nathan LaPre
f01fa3c6d9 Bug 1732306 - Part 3: Implement time role mappings, r=Jamie
This revision adds role mappings for the 'time' ARIA role by implementing HTML
markup mapping, adding platform mappings, and adding the role info itself. This
revision also enables the previously-failed wpt tests and fixes other tests.

Differential Revision: https://phabricator.services.mozilla.com/D200132
2024-02-07 19:51:40 +00:00
Nathan LaPre
45b7b34cd0 Bug 1732306 - Part 2: Implement strong role mappings, r=Jamie
This revision implements mapping for the ARIA 1.2 'strong' role by adding a
markup mapping, a role definition, and platform mappings. This revision also
removes the expected failures in the wpt test suite and fixes other tests.

Differential Revision: https://phabricator.services.mozilla.com/D200131
2024-02-07 19:51:39 +00:00
Nathan LaPre
279469706f Bug 1732306 - Part 1: Implement emphasis role mappings, r=Jamie
This revision implements the mapping for the ARIA 1.2 emphasis role, which was
unsupported in Firefox until now. This change addresses a web platform test
failure. To accomplish this, the revision adds the WAI-defined role, adds a role
enum value, adds platform mappings, and adds a markup role mapping. The change
requires a new static atom for the word "emphasis," also added in this revision.
Finally, this change removes the expected wpt failure and updates other tests.

Differential Revision: https://phabricator.services.mozilla.com/D200130
2024-02-07 19:51:39 +00:00
James Teh
f36ae8432b Bug 1862802 part 5: Remove virtual cursor change event. r=eeejay
Depends on D192645

Differential Revision: https://phabricator.services.mozilla.com/D192646
2023-11-29 03:53:20 +00:00
Butkovits Atila
1cb12b49dd Backed out 5 changesets (bug 1862802) for causing multiple failures. CLOSED TREE
Backed out changeset 786805a2cdcc (bug 1862802)
Backed out changeset effe12f2120a (bug 1862802)
Backed out changeset 7488e7ba80c5 (bug 1862802)
Backed out changeset 3d0747ce0174 (bug 1862802)
Backed out changeset d1558d374cef (bug 1862802)
2023-11-29 03:10:17 +02:00
James Teh
44caba5c0c Bug 1862802 part 5: Remove virtual cursor change event. r=eeejay
Depends on D192645

Differential Revision: https://phabricator.services.mozilla.com/D192646
2023-11-28 22:03:21 +00:00
James Teh
0b2de0e6be Bug 1822004: On Android, use RemoteAccessible (CtW) hit testing instead of a DOM event. r=eeejay
This unifies hit testing across all platforms.
It also removes one of the few remaining uses of virtual cursor change events.

Differential Revision: https://phabricator.services.mozilla.com/D192641
2023-11-28 07:37:30 +00:00
James Teh
bd293df36c Bug 1852190 part 2: Reintroduce the IAccessible2 typelib. r=nlapre
We need this so that Python comtypes can generate bindings for IAccessible2.
This is almost identical to what was here before, but it excludes some stuff that was only needed for the COM interceptor.

Differential Revision: https://phabricator.services.mozilla.com/D187745
2023-10-04 23:58:45 +00:00
James Teh
65cbecf6ad Bug 1846660 part 2: Add IAccessibleTextSelectionContainer interface. r=nlapre
This just adds the COM interface to the build system.
It will be implemented in an upcoming patch.

Differential Revision: https://phabricator.services.mozilla.com/D185133
2023-08-04 02:51:42 +00:00
James Teh
96cc6ec069 Bug 1846660 part 1: Remove deprecated IAccessible2_3 implementation and interface. r=nlapre
No clients actually use this due to inherent flaws.

Differential Revision: https://phabricator.services.mozilla.com/D185132
2023-08-04 02:51:42 +00:00
Natalia Csoregi
84729900a3 Backed out 4 changesets (bug 1846660) for causing bustage on ia2AccessibleTextSelectionContainer.h. CLOSED TREE
Backed out changeset c097c6502edc (bug 1846660)
Backed out changeset 9bf0e6ec2653 (bug 1846660)
Backed out changeset eb0515d87ee5 (bug 1846660)
Backed out changeset f12d2f98186b (bug 1846660)
2023-08-04 04:30:18 +03:00
James Teh
b5c3023dfa Bug 1846660 part 2: Add IAccessibleTextSelectionContainer interface. r=nlapre
This just adds the COM interface to the build system.
It will be implemented in an upcoming patch.

Differential Revision: https://phabricator.services.mozilla.com/D185133
2023-08-03 23:00:00 +00:00
James Teh
85a75acb0e Bug 1846660 part 1: Remove deprecated IAccessible2_3 implementation and interface. r=nlapre
No clients actually use this due to inherent flaws.

Differential Revision: https://phabricator.services.mozilla.com/D185132
2023-08-03 23:00:00 +00:00
James Teh
daf109ee7f Bug 412902: Remove unused accessibility events. r=eeejay
This removes the unused AccTableChangeEvent class, as well as the following unused event constants:

- EVENT_ACTIVE_DECENDENT_CHANGED
- EVENT_LOCATION_CHANGE
- EVENT_HELP_CHANGE
- EVENT_DEFACTION_CHANGE
- EVENT_ACTION_CHANGE
- EVENT_ACCELERATOR_CHANGE
- EVENT_FOREGROUND
- EVENT_CAPTURE_START
- EVENT_CAPTURE_END
- EVENT_MOVESIZE_START
- EVENT_MOVESIZE_END
- EVENT_CONTEXTHELP_START
- EVENT_CONTEXTHELP_END
- EVENT_DRAGDROP_END
- EVENT_DIALOG_START
- EVENT_DIALOG_END
- EVENT_MINIMIZE_START
- EVENT_MINIMIZE_END
- EVENT_DOCUMENT_ATTRIBUTES_CHANGED
- EVENT_DOCUMENT_CONTENT_CHANGED
- EVENT_PROPERTY_CHANGED
- EVENT_PAGE_CHANGED
- EVENT_TEXT_CHANGED
- EVENT_TEXT_UPDATED
- EVENT_VISIBLE_DATA_CHANGED
- EVENT_TEXT_COLUMN_CHANGED
- EVENT_SECTION_CHANGED
- EVENT_TABLE_CAPTION_CHANGED
- EVENT_TABLE_MODEL_CHANGED
- EVENT_TABLE_SUMMARY_CHANGED
- EVENT_TABLE_ROW_DESCRIPTION_CHANGED
- EVENT_TABLE_ROW_HEADER_CHANGED
- EVENT_TABLE_ROW_INSERT
- EVENT_TABLE_ROW_DELETE
- EVENT_TABLE_ROW_REORDER
- EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED
- EVENT_TABLE_COLUMN_HEADER_CHANGED
- EVENT_TABLE_COLUMN_INSERT
- EVENT_TABLE_COLUMN_DELETE
- EVENT_TABLE_COLUMN_REORDER
- EVENT_WINDOW_CREATE
- EVENT_WINDOW_DESTROY
- EVENT_WINDOW_RESIZE
- EVENT_HYPERLINK_END_INDEX_CHANGED
- EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED
- EVENT_HYPERLINK_SELECTED_LINK_CHANGED
- EVENT_HYPERTEXT_LINK_ACTIVATED
- EVENT_HYPERTEXT_LINK_SELECTED
- EVENT_HYPERLINK_START_INDEX_CHANGED
- EVENT_HYPERTEXT_CHANGED
- EVENT_HYPERTEXT_NLINKS_CHANGED

Differential Revision: https://phabricator.services.mozilla.com/D183709
2023-07-19 02:56:55 +00:00
James Teh
b90eb82b66 Bug 1843825 part 2: Renumber roles to fill in the gaps left by removed roles. r=eeejay
This was done with the following script:

```
import re

RE_ENUM = re.compile(r'^([^=]*= *)([\d]+)([^=]*\n)$')

def processFile(fn):
  inLines = open(fn, 'rt').readlines()
  outLines = []
  outNum = 0
  for inLine in inLines:
    m = RE_ENUM.match(inLine)
    if m:
      # Group 1 is the part of the line before the number.
      # Group 2 is the number.
      # Group 3 is the rest of the line after the number.
      inNum = int(m.group(2))
      if outNum == 0 and inNum != 0:
        raise ValueError("The first enum value isn't 0: %s" % inLine)
      outLine = m.group(1) + str(outNum) + m.group(3)
      outNum += 1
    else:
      outLine = inLine
    outLines.append(outLine)
  open(fn, 'wt').writelines(outLines)

processFile("accessible/base/Role.h")
processFile("accessible/interfaces/nsIAccessibleRole.idl")
```

Differential Revision: https://phabricator.services.mozilla.com/D183717
2023-07-19 02:51:29 +00:00
James Teh
0cc53ffbc5 Bug 1843825 part 1: Remove unused Gecko a11y roles. r=eeejay
Some of these roles were duplicates, while others were just never used.
This removes the following roles:

- TITLEBAR
- GRIP
- SOUND
- CURSOR
- CARET
- WINDOW
- CHART
- BORDER
- COLUMN
- HELPBALLOON
- CHARACTER
- INDICATOR
- DROPLIST
- DIAL
- HOTKEYFIELD
- EQUATION
- BUTTONDROPDOWNGRID
- CLOCK
- SPLITBUTTON
- IPADDRESS
- ACCEL_LABEL
- ARROW
- COLOR_CHOOSER
- DESKTOP_ICON
- DESKTOP_FRAME
- DIRECTORY_PANE
- FILE_CHOOSER
- FONT_CHOOSER
- GLASS_PANE
- HTML_CONTAINER
- ICON
- LAYERED_PANE
- OPTION_PANE
- POPUP_MENU
- ROOT_PANE
- SCROLL_PANE
- SPLIT_PANE
- TABLE_COLUMN_HEADER
- TABLE_ROW_HEADER
- TEAR_OFF_MENU_ITEM
- TERMINAL
- VIEWPORT
- HEADER
- FOOTER
- RULER
- AUTOCOMPLETE
- EDITBAR
- PAGE
- REDUNDANT_OBJECT
- IME
- CALENDAR
- EMBEDDED_OBJECT

Differential Revision: https://phabricator.services.mozilla.com/D183716
2023-07-19 02:51:29 +00:00
Eitan Isaacson
6998527d19 Bug 1754905 - Match Pivot API in nsIAccessiblePivot. r=Jamie
This patch does several things:
1. Remove virtual cursor doc accessible member.
2. Remove state-keeping nsAccessiblePivot implementation and replace it
   with something that is much more similar to the native Pivot
   interface.
3. Move nsIAccessiblePivot implementation to xpcom and rename it
   xpcAccessiblePivot.
4. Delete mochitests and introduce browser tests.
5. Make new xpcom implementation work on remote accessibles as well.

Differential Revision: https://phabricator.services.mozilla.com/D181813
2023-06-28 21:45:16 +00:00
Iulian Moraru
98478e7490 Backed out changeset f3095da827d9 (bug 1754905) for causing build bustages on DocAccessibleWrap. CLOSED TREE 2023-06-28 03:03:37 +03:00
Eitan Isaacson
556fa1bfbb Bug 1754905 - Match Pivot API in nsIAccessiblePivot. r=Jamie
This patch does several things:
1. Remove virtual cursor doc accessible member.
2. Remove state-keeping nsAccessiblePivot implementation and replace it
   with something that is much more similar to the native Pivot
   interface.
3. Move nsIAccessiblePivot implementation to xpcom and rename it
   xpcAccessiblePivot.
4. Delete mochitests and introduce browser tests.
5. Make new xpcom implementation work on remote accessibles as well.

Differential Revision: https://phabricator.services.mozilla.com/D181813
2023-06-27 16:59:54 +00:00
Butkovits Atila
9ac839ebe2 Backed out changeset 4d92a76cedd0 (bug 1754905) for causing bustages at LocalAccessible. CLOSED TREE 2023-06-27 03:46:47 +03:00
Eitan Isaacson
87391fa922 Bug 1754905 - Match Pivot API in nsIAccessiblePivot. r=Jamie
This patch does several things:
1. Remove virtual cursor doc accessible member.
2. Remove state-keeping nsAccessiblePivot implementation and replace it
   with something that is much more similar to the native Pivot
   interface.
3. Move nsIAccessiblePivot implementation to xpcom and rename it
   xpcAccessiblePivot.
4. Delete mochitests and introduce browser tests.
5. Make new xpcom implementation work on remote accessibles as well.

Differential Revision: https://phabricator.services.mozilla.com/D181813
2023-06-27 00:05:16 +00:00
Stanca Serban
f0967c3305 Backed out changeset 8be4693aecbb (bug 1754905) for causing bustages in xpcAccessiblePivot.h. CLOSED TREE 2023-06-24 03:22:31 +03:00
Eitan Isaacson
f872bcc7cc Bug 1754905 - Match Pivot API in nsIAccessiblePivot. r=Jamie
This patch does several things:
1. Remove virtual cursor doc accessible member.
2. Remove state-keeping nsAccessiblePivot implementation and replace it
   with something that is much more similar to the native Pivot
   interface.
3. Move nsIAccessiblePivot implementation to xpcom and rename it
   xpcAccessiblePivot.
4. Delete mochitests and introduce browser tests.
5. Make new xpcom implementation work on remote accessibles as well.

Differential Revision: https://phabricator.services.mozilla.com/D181813
2023-06-23 23:22:34 +00:00
Eitan Isaacson
4dce76304c Bug 1839515 - Remove pivot text navigation API. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D181576
2023-06-21 21:15:47 +00:00
Norisz Fay
f8505d5db9 Backed out changeset 8178c74a4c65 (bug 1839515) for causing mochitest failures on browser_events_vcchange.js 2023-06-21 22:21:29 +03:00
Eitan Isaacson
da7273bd10 Bug 1839515 - Remove pivot text navigation API. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D181576
2023-06-21 17:55:06 +00:00
James Teh
01d480b80d Bug 1837332: Remove unused HyperTextAccessible::EnclosingRange/VisibleRanges/RangeByChild/RangeAtPoint, TextRange::EmbeddedChildren/Text and xpcAccessibleTextRange::ScrollIntoView. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D180301
2023-06-14 00:43:11 +00:00
James Teh
bd9bd8733b Bug 1835967: Remove TableAccessibleBase::Select/UnselectCol/Row. r=nlapre
Differential Revision: https://phabricator.services.mozilla.com/D179513
2023-06-07 01:40:25 +00:00
James Teh
6f49fe6b0c Bug 1828295 part 3: Add tests for GetCaretRect. r=morgan
This required exposing GetCaretRect via XPCOM.

Differential Revision: https://phabricator.services.mozilla.com/D179346
2023-05-31 10:04:18 +00:00
Natalia Csoregi
6f5c0c586c Backed out 3 changesets (bug 1828295) for causing failures on browser_caret_rect.js. CLOSED TREE
Backed out changeset 52b9bf7e6344 (bug 1828295)
Backed out changeset 6e6ee5fe337f (bug 1828295)
Backed out changeset 4e8ff9c439ef (bug 1828295)
2023-05-31 08:44:34 +03:00
James Teh
c342e57201 Bug 1828295 part 3: Add tests for GetCaretRect. r=morgan
This required exposing GetCaretRect via XPCOM.

Differential Revision: https://phabricator.services.mozilla.com/D179346
2023-05-31 03:43:29 +00:00
James Teh
6cf954e1ce Bug 1821969 part 1: Remove Mac table layout guess cache. r=morgan
Now that we always have the core parent process cache, this is no longer necessary.
This also removes EVENT_TABLE_STYLING_CHANGED, which was only used to keep the Mac cache up to date.

Differential Revision: https://phabricator.services.mozilla.com/D178425
2023-05-24 10:50:45 +00:00
James Teh
a9118fe9f2 Bug 1833301: Remove unused LocalAccessible::Help. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D178137
2023-05-23 11:11:35 +00:00
James Teh
cd328c4093 Bug 1821963 part 3: Remove various components supporting the old accessibility architecture based on content process COM proxies. r=nlapre,nalexander
This includes AccessibleHandler, HandlerProvider, IGeckoCustom and the IAccessible2 COM proxy dll.
Even with the new architecture, we still use IAccessible2, but we no longer need a COM proxy because we aren't using COM across processes ourselves.
If clients want to use IAccessible2 across processes, they're responsible for registering a COM proxy themselves as with all other IAccessible2 applications.
Alternatively, they can rely on the IAccessible2 COM proxy which is included with Windows 10 and later.

Differential Revision: https://phabricator.services.mozilla.com/D177963
2023-05-22 20:19:45 +00:00
Narcis Beleuzu
ed1139f199 Backed out 6 changesets (bug 1821963) for build bustages. CLOSED TREE
Backed out changeset a92c62e304f0 (bug 1821963)
Backed out changeset da6cba0b0dd4 (bug 1821963)
Backed out changeset 4ed7ca0eb04a (bug 1821963)
Backed out changeset f2fba0ef15d9 (bug 1821963)
Backed out changeset 706e46fc2688 (bug 1821963)
Backed out changeset 6de2b9548dc6 (bug 1821963)
2023-05-22 14:05:20 +03:00