зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1415960 - Use flattened tree parent when returning GetContainerAccessible. r=Jamie
This fixes an inconsistency where CacheChildrenInSubtree uses the flattened tree via DOM child iterators, but ProcessInvalidationList uses GetContainerAccessible that doesn't currently use the flattened tree. Differential Revision: https://phabricator.services.mozilla.com/D108980
This commit is contained in:
Родитель
dcef02cab1
Коммит
30b42bba1c
|
@ -1362,6 +1362,11 @@ LocalAccessible* DocAccessible::GetAccessibleOrContainer(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LocalAccessible* DocAccessible::GetContainerAccessible(nsINode* aNode) const {
|
||||||
|
return aNode ? GetAccessibleOrContainer(aNode->GetFlattenedTreeParentNode())
|
||||||
|
: nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
LocalAccessible* DocAccessible::GetAccessibleOrDescendant(
|
LocalAccessible* DocAccessible::GetAccessibleOrDescendant(
|
||||||
nsINode* aNode) const {
|
nsINode* aNode) const {
|
||||||
LocalAccessible* acc = GetAccessible(aNode);
|
LocalAccessible* acc = GetAccessible(aNode);
|
||||||
|
|
|
@ -277,9 +277,7 @@ class DocAccessible : public HyperTextAccessibleWrap,
|
||||||
/**
|
/**
|
||||||
* Return a container accessible for the given DOM node.
|
* Return a container accessible for the given DOM node.
|
||||||
*/
|
*/
|
||||||
LocalAccessible* GetContainerAccessible(nsINode* aNode) const {
|
LocalAccessible* GetContainerAccessible(nsINode* aNode) const;
|
||||||
return aNode ? GetAccessibleOrContainer(aNode->GetParentNode()) : nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return an accessible for the given node if any, or an immediate accessible
|
* Return an accessible for the given node if any, or an immediate accessible
|
||||||
|
|
|
@ -168,7 +168,18 @@
|
||||||
(container, host) => {
|
(container, host) => {
|
||||||
host.shadowRoot.getElementById("slot").remove();
|
host.shadowRoot.getElementById("slot").remove();
|
||||||
}, { SECTION: [{ SECTION: [{ name: "green"} ] }] });
|
}, { SECTION: [{ SECTION: [{ name: "green"} ] }] });
|
||||||
|
}
|
||||||
|
|
||||||
|
function shadowProcessInvalidation() {
|
||||||
|
testAccessibleTree("shadowProcessInvalidation",
|
||||||
|
{ SECTION: [{
|
||||||
|
SECTION: [{
|
||||||
|
SECTION: [{ TEXT_LEAF: { name: "Hello "} },
|
||||||
|
{ TEXT: [{ TEXT_LEAF: { name: "World"} }] },
|
||||||
|
{ PUSHBUTTON: { name: "World"} }]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function doTest() {
|
async function doTest() {
|
||||||
|
@ -202,6 +213,8 @@
|
||||||
|
|
||||||
await shadowReassignDynamic_4();
|
await shadowReassignDynamic_4();
|
||||||
|
|
||||||
|
shadowProcessInvalidation();
|
||||||
|
|
||||||
SimpleTest.finish();
|
SimpleTest.finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,6 +475,20 @@
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="shadowProcessInvalidation">
|
||||||
|
<template class="shadowtree">
|
||||||
|
<div id="shadowdiv">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<section class="host">Hello <span id="c">World</span><button aria-labelledby="c"></button></section>
|
||||||
|
<script>
|
||||||
|
document.querySelector("#shadowProcessInvalidation > .host")
|
||||||
|
.attachShadow({ mode: "open" })
|
||||||
|
.appendChild(document.querySelector("#shadowProcessInvalidation > .shadowtree").content.cloneNode(true));
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="eventdump"></div>
|
<div id="eventdump"></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче