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

8321 Коммитов

Автор SHA1 Сообщение Дата
Eitan Isaacson 553616aa05 Bug 1641002 - Introduce MOXAccessible protocol and MOXAccessibleBase. r=morgan
This sets up the possibility of moving most non-gecko things to a base class, and
start a protocol to add for all the subclasses to implement as needed.

Differential Revision: https://phabricator.services.mozilla.com/D76920
2020-05-27 17:24:44 +00:00
Emilio Cobos Álvarez 54fd961a29 Bug 1641245 - Make string comparators not virtual. r=froydnj,necko-reviewers,geckoview-reviewers,jgilbert,agi,valentin
There's no use case for stateful comparators, so they can be just plain
function pointers.

This is used in some hot places like CSS selector matching.

Differential Revision: https://phabricator.services.mozilla.com/D77084
2020-05-27 18:11:12 +00:00
Razvan Maries e44db87b99 Backed out changeset b4c58d9afd4b (bug 1624909) for build bustages on Pivot.h. CLOSED TREE 2020-05-27 21:04:58 +03:00
Morgan Reschenberg 812a214eeb Bug 1624909: Create and maintain radio siblings array for position information. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D72751
2020-05-27 17:51:30 +00:00
Morgan Reschenberg 6b03f5994e Bug 1632252: Replace constructor with AccOrProxy, adjust native getter. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D75354
2020-05-27 15:50:47 +00:00
James Teh 5abc128c45 Bug 1640553 part 3: AccessibleHandler: Use the row/column header ids in the payload to avoid cross-process calls. r=eeejay
1. When we unmarshal a row/column header, cache it so we can get it by id later.
2. get_rowHeaderCells and get_columnHeaderCells use the header ids in the payload.
    If the headers are in the cache (as per 1), return them to the client.
    Otherwise, fall back to a cross-process call, which might happen if we haven't encountered the header yet.

Differential Revision: https://phabricator.services.mozilla.com/D76667
2020-05-26 01:10:22 +00:00
James Teh fe12e1e987 Bug 1640553 part 2: Include row/column header cell ids in the payload for AccessibleHandler. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D76666
2020-05-26 03:20:07 +00:00
James Teh 61ed1074ea Bug 1640553 part 1: Add the ability for AccessibleHandler to cache accessibles by id. r=eeejay
This cache is cleared when other AccessibleHandler caches are invalidated; i.e. when an event is fired.

Differential Revision: https://phabricator.services.mozilla.com/D76665
2020-05-26 01:10:26 +00:00
Noemi Erli fe1f281e9e Backed out 3 changesets (bug 1640553) for causing Windows build bustages CLOSED TREE
Backed out changeset 25dd5eeb676f (bug 1640553)
Backed out changeset 4e0cd8a3d83c (bug 1640553)
Backed out changeset 6658e0ae7e35 (bug 1640553)
2020-05-26 03:50:11 +03:00
James Teh f3893a240b Bug 1640553 part 3: AccessibleHandler: Use the row/column header ids in the payload to avoid cross-process calls. r=eeejay
1. When we unmarshal a row/column header, cache it so we can get it by id later.
2. get_rowHeaderCells and get_columnHeaderCells use the header ids in the payload.
    If the headers are in the cache (as per 1), return them to the client.
    Otherwise, fall back to a cross-process call, which might happen if we haven't encountered the header yet.

Differential Revision: https://phabricator.services.mozilla.com/D76667
2020-05-25 14:43:06 +00:00
James Teh c664bdb2f9 Bug 1640553 part 2: Include row/column header cell ids in the payload for AccessibleHandler. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D76666
2020-05-25 14:41:42 +00:00
James Teh 32802da1f1 Bug 1640553 part 1: Add the ability for AccessibleHandler to cache accessibles by id. r=eeejay
This cache is cleared when other AccessibleHandler caches are invalidated; i.e. when an event is fired.

Differential Revision: https://phabricator.services.mozilla.com/D76665
2020-05-25 14:35:09 +00:00
James Teh 7dafc35406 Bug 1638238: Cache previous column header for each cell to make TableCellAccessible::ColHeaders faster. r=eeejay
Previously, to get the column headers for a cell when there weren't explicit headers, we walked over all previous cells in the column looking for headers.
For large tables with thousands of rows, this was very expensive, particularly when Windows screen readers rendered virtual buffers, fetching headers for all cells.

To speed this up, we now lazily cache the previous column header for each cell.
We even cache whether there is no previous header, since that is quite common and we don't want to pointlessly walk in that case.
Subsequent cells utilise the cached values (if any) for prior cells.

We don't store the cache on individual TableCellAccessibles because that would require us to walk all cells to invalidate the cache, even if few or no cells had cached values.
Instead, we store the cache as a hash table on the TableAccessible.
This way, we can just clear the cache whenever a column header is added to the tree.

We invalidate the cache whenever a column header is bound to its parent.
We don't need to invalidate the cache for removals because we instead just ignore defunct Accessibles in the cache.

Differential Revision: https://phabricator.services.mozilla.com/D76106
2020-05-25 14:15:57 +00:00
Emilio Cobos Álvarez 89958b377a Bug 1640605 - Remove IsInAnonymousSubtree / IsRootOfAnonymousSubtree. r=edgar
In favor of the NativeAnonymous versions which they forward to.

Done automatically with:

  rg -l 'IsInAnonymousSubtree' | xargs sed -i 's/IsInAnonymousSubtree/IsInNativeAnonymousSubtree/g'

And removing the function definitions afterwards.

Differential Revision: https://phabricator.services.mozilla.com/D76681
2020-05-25 11:43:51 +00:00
Sylvestre Ledru 615c83d723 Bug 1519636 - Reformat recent changes to the Google coding style r=andi
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D76451
2020-05-25 07:42:38 +00:00
Bogdan Tara 6bd3bb7800 Backed out changeset d9a39c63e40e (bug 1624909) for Pivot.h related bustages CLOSED TREE 2020-05-22 02:58:12 +03:00
Morgan Reschenberg 7a58efe041 Bug 1624909: Create and maintain radio siblings array for position information. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D72751
2020-05-21 23:36:13 +00:00
James Teh be8c555522 Bug 1409084: Map inputs with a list attribute to role EDITCOMBOBOX. r=eeejay
Previously, we mapped these to ENTRY.
This is incorrect according to the HTML AAM spec and causes problems for JAWS.

Differential Revision: https://phabricator.services.mozilla.com/D76066
2020-05-20 23:58:22 +00:00
Eitan Isaacson d623bd478b Bug 1638147 - Introduce tests for MathML accessibility support on mac. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D75425
2020-05-20 23:53:46 +00:00
Eitan Isaacson 1a6f602dff Bug 1639623 - Support AXPress on radio buttons and remove action description. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D76175
2020-05-20 23:48:30 +00:00
Yura Zenevich 5b6445cb0e Bug 1639399 - expose uniqueID property on the xpcAccessible. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D76072
2020-05-20 00:11:20 +00:00
James Teh 5af2a7d076 Bug 1639108: Use the end offset for e10s IAccessibleText::newText instead of the length. r=eeejay
Previously, we were incorrectly using the length.

Differential Revision: https://phabricator.services.mozilla.com/D75897
2020-05-19 16:30:20 +00:00
Coroiu Cristina 239a24caab Bug 1630208 - disable browser_test_zoom_text.js on linux 64 fission for frequent failures r=jmaher
Differential Revision: https://phabricator.services.mozilla.com/D75705
2020-05-17 19:28:28 +00:00
Emilio Cobos Álvarez c12d8705fe Bug 1638703 - Flush layout explicitly in some a11y non-e10s tests. r=Jamie
These tests insert a <browser> into the DOM via tabbrowser, and
immediately try to get a hold to the underlying document right after.

However the a11y tree is constructed after frame construction, and with
bug 1584935 there's no longer a guarantee that it gets done in time
without these explicit flushes.

Note that I couldn't reproduce these failures locally, so take the
diagnostic with a grain of salt, but I believe it's accurate and that
this is the right fix.

Differential Revision: https://phabricator.services.mozilla.com/D75715
2020-05-17 22:08:47 +00:00
Eitan Isaacson 37b62ce349 Bug 1625192 - Introduce test for select dropdown. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D75136
2020-05-15 21:27:57 +00:00
Eitan Isaacson 96db37abd6 Bug 1625192 - Support select element and its dropdown menu. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D75135
2020-05-15 21:31:08 +00:00
Aaron Klotz da67dfa6bb Bug 1637452: Part 9 - Fix JNI includes in accessible/android; r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D75372
2020-05-15 17:04:36 +00:00
Emilio Cobos Álvarez b9c1bf761c Bug 312971 - Unprefix -moz-read-write / -moz-read-only. r=edgar
And remove some duplicated tests from WPT.

Differential Revision: https://phabricator.services.mozilla.com/D75231
2020-05-14 16:46:08 +00:00
James Teh d09d8b85c6 Bug 1572852: a11y::Logging::LogDocShellTree: Make it clear that this is in-process DocShell tree info. r=yzen
For an OOP iframe, the logged parent will be null and the logged root won't be the real top level document.
This is just the way things are and this might still be useful info sometimes, so we still log it, but make it clear in the log message that it's about the in-process tree.

Differential Revision: https://phabricator.services.mozilla.com/D74587
2020-05-11 14:38:53 +00:00
Marco Zehe bc8f0b63cb Bug 1635538 - Correct the AXRole for image maps, r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D75030
2020-05-13 20:07:42 +00:00
Marco Zehe 7215ba00a1 Bug 1635527 - Correct AXRole for status bar, r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D75028
2020-05-13 20:06:51 +00:00
James Teh d24d857a51 Bug 1628582: Set DocAccessibleParent::mDocProxyStream on the child document, not the parent document. r=yzen
DocAccessibleParent::AddChildDoc sends a COM proxy for the embedded document to the embedder process hosting the iframe.
This gets returned as the child of the embedder OuterDocAccessible.
Whenever we send a proxy to a content process, we must hold a PreservedStreamPtr in the parent process.
Previously, we set mDocProxyStream on the parent (embedder) document.
However, if a document had multiple OOP iframes, this meant we  ended up losing the PreservedStreamPtr for all but the last added child OOP document.
We now set mDocProxyStream on the child document instead, since there can only be one embedder OuterDocAccessible per child document.

Differential Revision: https://phabricator.services.mozilla.com/D74584
2020-05-11 14:41:57 +00:00
Eitan Isaacson c1c0b3551c Bug 1625184 - Map dialogs and alert dialogs correctly in Mac. r=MarcoZ
Differential Revision: https://phabricator.services.mozilla.com/D74957
2020-05-13 05:59:23 +00:00
James Teh 535261ca3d Bug 1637474 part 2: Disconnect accSelection IEnumVARIANT and IAccessibleRelation objects when their associated Accessible is shut down. r=MarcoZ
Differential Revision: https://phabricator.services.mozilla.com/D75000
2020-05-13 05:55:02 +00:00
James Teh ca670d92d5 Bug 1637474 part 1: Provide a way to associate COM objects with an AccessibleWrap so they will be disconnected from remote clients when the Accessible shuts down. r=MarcoZ
To improve performance for cross-process COM, we disable COM garbage collection in content processes for calls from our parent process.
However, this means we don't receive Release calls from in-process a11y clients.
For an Accessible, we get around this by explicitly disconnecting remote clients when the Accessible shuts down.
This doesn't cover COM objects which aren't interfaces of an Accessible; i.e. where the object has a different IUnknown to the Accessible.
This patch adds AccessibleWrap::AssociateCOMObjectForDisconnection to allow these objects to be tracked.
Tracked objects are then disconnected when the Accessible shuts down.

Differential Revision: https://phabricator.services.mozilla.com/D74999
2020-05-13 05:52:42 +00:00
Eitan Isaacson c5398f4399 Bug 1625196 - Support select[multiple] and role=listbox/option. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D72485
2020-05-12 23:28:34 +00:00
Eitan Isaacson 4b897ca7d9 Bug 1625196 - Add attribute setting methods to nsIAccessibleMacInterface. r=morgan
This is needed since selection is done by setting attributes.

Differential Revision: https://phabricator.services.mozilla.com/D72483
2020-05-12 23:28:34 +00:00
Eitan Isaacson c14ec1babc Bug 1625196 - Prune proxy accessibles with nsAccUtils::MustPrune(). r=morgan
Platform accessibles from proxies were not getting pruned. Also, there is no need
to walk up ancestors to find a pruning container since all pruning containers have direct
leaf children.

Differential Revision: https://phabricator.services.mozilla.com/D72482
2020-05-12 18:39:06 +00:00
Eitan Isaacson f395ad8878 Bug 1635517 - Ignore all invisible XUL elements. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D74433
2020-05-12 17:26:34 +00:00
Eitan Isaacson ac48c6ea9a Bug 1635517 - Filter ignored mac accessible objects from platform tree. r=morgan
Also, allow parent accessibles to ignore certain children.

Differential Revision: https://phabricator.services.mozilla.com/D74432
2020-05-12 19:06:02 +00:00
Eitan Isaacson 567a8af15c Bug 1635517 - Update deprecated accessibilityIsIgnored to isAccessibilityElement. r=spohl
Differential Revision: https://phabricator.services.mozilla.com/D74431
2020-05-12 17:39:18 +00:00
Marco Zehe 6c331c5c53 Bug 1635483 - Avoid unnecessary IPC calls when calculating subroles for landmarks, r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D74008
2020-05-11 17:51:12 +00:00
Eitan Isaacson 11ab196725 Bug 1634619 - Back out focusable state changes on overflow events. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D74487
2020-05-11 00:21:21 +00:00
James Teh 09a25365d2 Bug 1572860: Remove the ability for an outer document to override live region markup in an inner iframe document. r=MarcoZ
This is something that was implemented a long time ago, but it isn't covered in any spec, other browsers don't implement it and I don't know of any usage in the wild.
This doesn't work with OOP iframes, since what we're doing here requires the documents to be in the same process.
Given it isn't used or specified, the simplest solution is to just remove the behaviour altogether.

Differential Revision: https://phabricator.services.mozilla.com/D74628
2020-05-11 11:13:43 +00:00
James Teh 9f69f88101 Bug 1628415 part 3: Remove XULListboxAccessible::Value. r=MarcoZ
This depends on richlistitem's nsIDOMXULSelectControlItemElement::label implementation, which does the wrong thing in several cases.
We could make this use a11y name computation, but I can't find any other list box implementation that exposes accessible value on the list box itself, so I don't see any reason to keep this.

Differential Revision: https://phabricator.services.mozilla.com/D74372
2020-05-08 04:28:11 +00:00
James Teh b02d77311a Bug 1628415 part 2: Correct comments regarding XUL control Accessible name computation. r=MarcoZ
This is not strictly related to this bug, but I'm touching the surrounding code and I've been confused by this on several occasions.
The previous comments suggested that NameFromAssociatedXULLabel (which uses XULLabelIterator) looks at child labels.
This is incorrect: XULLabelIterator only looks at <label control="id">.
The inclusion of child labels in the name comes from GetNameFromSubtree, which is called elsewhere.

Differential Revision: https://phabricator.services.mozilla.com/D74371
2020-05-08 04:27:00 +00:00
James Teh ba3de78b7e Bug 1628415 part 1: Remove use of nsIDOMXULSelectControlItemElement::label in Accessible. r=MarcoZ
This was only used for richlistitems, but the richlistitem implementation of this property did the wrong thing in several cases.
The a11y engine's label computation code generally does a better job.
Where the label does need to be overridden in specific cases, we should use ARIA instead.

Differential Revision: https://phabricator.services.mozilla.com/D74370
2020-05-08 04:24:42 +00:00
Morgan Reschenberg 22bf5cdb58 Bug 1624954: Add support for AXPopupValue, modify AXHasPopup to boolean. r=eeejay
Differential Revision: https://phabricator.services.mozilla.com/D73912
2020-05-07 18:07:34 +00:00
Ricky Stewart 1395fb03f0 Bug 1634737 - GeneratedFile() template should yell at you if you try to set py2=True r=glandium
As of bug 1621451 this argument was ignored, but it just silently runs your code with `python3` if you pass it anyway. Ensure this doesn't happen any more, and protect against any other unexpected arguments as well.

Differential Revision: https://phabricator.services.mozilla.com/D73485
2020-05-05 15:53:37 +00:00
Ricky Stewart 933b3522b8 Bug 1633156 - Don't emit cached table files from ply r=glandium
`ply`, [by design](https://github.com/dabeaz/ply/issues/79), does not produce reproducible table files; hence bug 1633156. (Note that this was *always* true, but only became a problem once we switched to Python 3, which has more unpredictable dict iteration order than Python 2.7, at least prior to [3.7](https://docs.python.org/3/whatsnew/3.7.html#summary-release-highlights).)

In any other circumstance I would consider submitting a patch to `ply` to fix this, but as of the [in-progress version 4.0 of the library](https://github.com/dabeaz/ply/blob/master/CHANGES), it doesn't even emit this cached data any more, and indeed the [latest version of the code](1fac9fed64/ply) doesn't even call `open()` at all except to do logging or to read the text data to be parsed from `stdin`. So if we were going to pin our future on `ply` and upgrade to later versions of the library in the future, we would have to live in a world where `ply` doesn't generate cached table files for us anyway.

Emitting the cached table files so later build steps can consume them is an "optimization", but it's not clear exactly how much actual value that optimization provides overall. Quoth the `CHANGES` file from that repository:

```
PLY no longer writes cached table files.  Honestly, the use of
the cached files made more sense when I was developing PLY on
my 200Mhz PC in 2001. It's not as much as an issue now. For small
to medium sized grammars, PLY should be almost instantaneous.
```

In practice, I have found this to be true; namely, `./mach build pre-export export` takes just about as long on my machine after this patch as it did before, and in a try push I performed, there's no noticeable performance regression from applying this patch. In local testing I also found that generating the LALR tables in calls to `yacc()` takes about 0.01s on my machine generally, and we generate these tables a couple dozen times total over the course of the `export` tier now. This isn't *nothing*, but in my opinion it's also not nearly long enough where it would be a concern given how long `export` already takes.

That `CHANGES` file also stresses that if caching this data is important, we have the option of doing so via `pickle`. If and when we decide that re-enabling this optimization is valuable for us, we should take control of this process and perform the generation in such a way that we can guarantee reproducibility.

Differential Revision: https://phabricator.services.mozilla.com/D73484
2020-05-07 00:39:28 +00:00