Closed
Bug 1809761
Opened 2 years ago
Closed 2 years ago
[CTW] Incorrect text bounds when interleaving block- and inline-frame accessibles
Categories
(Core :: Disability Access APIs, defect)
Core
Disability Access APIs
Tracking
()
RESOLVED
FIXED
113 Branch
Tracking | Status | |
---|---|---|
firefox113 | --- | fixed |
People
(Reporter: morgan, Assigned: morgan)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
Bug 1809761: Introduce text bounds test for interleaving block- and inline-frame accessibles r?Jamie
(deleted),
text/x-phabricator-request
|
Details |
Summary of potentially-relevant matrix discussion:
- The frame tree for the example below has a one block frame root with a unique inline frame parent for each text leaf (the code element becomes several frames)
- The accessible we generate for the code element has only one frame (the primary frame, whatever that is)
- We use
TransformRect
to compute the offset between subtree-spanning continuations -- transforming the continuation to the hypertext's frame. The hypertext's frame (in this instance) is not necessarily an ancestor of the continuation's frame, since the primary frame for the code element is only the parent to one (the first?) text leaf.
Here's a test case:
/**
* Test character bounds in an intervening inline element with non-br line breaks
*/
addAccessibleTask(
`
<style>
@font-face {
font-family: Ahem;
src: url(${CURRENT_CONTENT_DIR}e10s/fonts/Ahem.sjs);
}
pre {
font: 20px/20px Ahem;
}
</style>
<pre><code id="t" role="group">XX
XXX
XX
X</pre>`,
async function(browser, docAcc) {
await testChar(docAcc, browser, "t", 0);
await testChar(docAcc, browser, "t", 3);
await testChar(docAcc, browser, "t", 7);
await testChar(docAcc, browser, "t", 10);
},
{
chrome: true,
topLevel: !isWinNoCache,
iframe: !isWinNoCache,
}
);
Assignee | ||
Updated•2 years ago
|
Blocks: a11y-ctw-text
Updated•2 years ago
|
Severity: -- → S3
Comment 1•2 years ago
|
||
I'm wondering whether we can fix this by calling TransformRect with the continuation frame and the primary text frame rather than the ancestor frame. That is:
// ... No need for nearestAccAncestorFrame
if (prevTextFrame->GetParent() != currTextFrame->GetParent()) {
contRect = frameRect;
nsLayoutUtils::TransformRect(currTextFrame, frame, contRect);
}
Comment 2•2 years ago
|
||
As with bug 1809695, this is broken in the parent process (LocalAccessible) as well. I think we may have a JS test harness bug here rather than a C++ bounds bug.
Assignee | ||
Comment 3•2 years ago
|
||
Updated•2 years ago
|
Assignee: nobody → mreschenberg
Status: NEW → ASSIGNED
Comment 4•2 years ago
|
||
There's a r+ patch which didn't land and no activity in this bug for 2 weeks.
:morgan, could you have a look please?
If you still have some work to do, you can add an action "Plan Changes" in Phabricator.
For more information, please visit auto_nag documentation.
Flags: needinfo?(mreschenberg)
Flags: needinfo?(jteh)
Updated•2 years ago
|
Flags: needinfo?(jteh)
Assignee | ||
Updated•2 years ago
|
Flags: needinfo?(mreschenberg)
Pushed by mreschenberg@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8ab29a76ed86
Introduce text bounds test for interleaving block- and inline-frame accessibles r=Jamie
Comment 6•2 years ago
|
||
bugherder |
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
status-firefox113:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → 113 Branch
You need to log in
before you can comment on or make changes to this bug.
Description
•