Bug 1545190 - Allow table in host and row in shadow. r=Jamie

Differential Revision: https://phabricator.services.mozilla.com/D27993

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Eitan Isaacson 2019-04-18 22:52:06 +00:00
parent 96cc526deb
commit cb33ea8e16
2 changed files with 28 additions and 5 deletions

View File

@ -1395,14 +1395,19 @@ nsAccessibilityService::CreateAccessibleByFrameType(nsIFrame* aFrame,
table = aContext->Parent(); table = aContext->Parent();
if (table) { if (table) {
nsIContent* parentContent = aContent->GetParent(); nsIContent* parentContent = aContent->GetParentOrHostNode()->AsContent();
nsIFrame* parentFrame = parentContent->GetPrimaryFrame(); nsIFrame* parentFrame = nullptr;
if (!parentFrame->IsTableWrapperFrame()) { if (parentContent) {
parentContent = parentContent->GetParent();
parentFrame = parentContent->GetPrimaryFrame(); parentFrame = parentContent->GetPrimaryFrame();
if (!parentFrame || !parentFrame->IsTableWrapperFrame()) {
parentContent = parentContent->GetParentOrHostNode()->AsContent();
if (parentContent) {
parentFrame = parentContent->GetPrimaryFrame();
}
}
} }
if (parentFrame->IsTableWrapperFrame() && if (parentFrame && parentFrame->IsTableWrapperFrame() &&
table->GetContent() == parentContent) { table->GetContent() == parentContent) {
newAcc = new HTMLTableRowAccessible(aContent, document); newAcc = new HTMLTableRowAccessible(aContent, document);
} }

View File

@ -24,6 +24,16 @@
], ],
}); });
// Shadow root boundary between table and row
testElm("table", {
role: ROLE_TABLE,
children: [
{
role: ROLE_ROW,
},
],
});
SimpleTest.finish(); SimpleTest.finish();
} }
@ -33,6 +43,8 @@
</head> </head>
<body> <body>
<div role="group" id="component"></div> <div role="group" id="component"></div>
<div id="table" role="table" style="display: table;"></div>
<script> <script>
var component = document.getElementById("component"); var component = document.getElementById("component");
var shadow = component.attachShadow({mode: "open"}); var shadow = component.attachShadow({mode: "open"});
@ -46,5 +58,11 @@
shadow.appendChild(button); shadow.appendChild(button);
shadow.appendChild(a); shadow.appendChild(a);
var table = document.getElementById("table");
shadow = table.attachShadow({mode: "open"});
shadow.innerHTML = "<div style='display: table-row'>" +
"<div style='display: table-cell'>hi</div>" +
"</div>";
</script> </script>
</body> </body>