commit d61558f581f35261dee00d26a1fe2ac56f212148
parent 1f3f9493085b4561507947376fd17afb00e4fc33
Author: Alexandru Marc <amarc@mozilla.com>
Date: Tue, 4 Nov 2025 22:12:20 +0200
Revert "Bug 1998229 - Push relations cache when dependend IDs change ID. r=morgan." for causing ba failures @ browser_relations_general
This reverts commit a8d63cecdddfc8246f394d2f33ffa3a9c7483c4e.
Diffstat:
3 files changed, 15 insertions(+), 52 deletions(-)
diff --git a/accessible/generic/DocAccessible.cpp b/accessible/generic/DocAccessible.cpp
@@ -444,7 +444,7 @@ void DocAccessible::QueueCacheUpdate(LocalAccessible* aAcc, uint64_t aNewDomain,
}
void DocAccessible::QueueCacheUpdateForDependentRelations(
- LocalAccessible* aAcc, const nsAttrValue* aOldId) {
+ LocalAccessible* aAcc) {
if (!mIPCDoc || !aAcc || !aAcc->IsInDocument() || aAcc->IsDefunct()) {
return;
}
@@ -466,24 +466,6 @@ void DocAccessible::QueueCacheUpdateForDependentRelations(
QueueCacheUpdate(relatedAcc, CacheDomain::Relations);
}
- if (aOldId) {
- // If we have an old ID, we need to update any accessibles that depended on
- // that ID as well.
- nsAutoString id;
- aOldId->ToString(id);
- if (!id.IsEmpty()) {
- auto* providers = GetRelProviders(el, id);
- if (providers) {
- for (auto& provider : *providers) {
- if (LocalAccessible* oldRelatedAcc =
- GetAccessible(provider->mContent)) {
- QueueCacheUpdate(oldRelatedAcc, CacheDomain::Relations);
- }
- }
- }
- }
- }
-
if (const nsIFrame* anchorFrame = nsCoreUtils::GetAnchorForPositionedFrame(
mPresShell, aAcc->GetFrame())) {
// If this accessible is anchored, retrieve the anchor and update its
@@ -963,7 +945,7 @@ void DocAccessible::AttributeChanged(dom::Element* aElement,
RelocateARIAOwnedIfNeeded(elm);
ARIAActiveDescendantIDMaybeMoved(accessible);
QueueCacheUpdate(accessible, CacheDomain::DOMNodeIDAndClass);
- QueueCacheUpdateForDependentRelations(accessible, aOldValue);
+ QueueCacheUpdateForDependentRelations(accessible);
}
// The activedescendant universal property redirects accessible focus events
diff --git a/accessible/generic/DocAccessible.h b/accessible/generic/DocAccessible.h
@@ -129,8 +129,7 @@ class DocAccessible : public HyperTextAccessible,
* We call this when we observe an ID mutation or when an acc is bound
* to its document.
*/
- void QueueCacheUpdateForDependentRelations(
- LocalAccessible* aAcc, const nsAttrValue* aOldId = nullptr);
+ void QueueCacheUpdateForDependentRelations(LocalAccessible* aAcc);
/**
* Returns true if the instance has shutdown.
diff --git a/accessible/tests/browser/relations/head.js b/accessible/tests/browser/relations/head.js
@@ -159,32 +159,22 @@ async function testRelated(
},
{
desc: "Set attribute",
- attrs: [{ id: "host", key: attr, value: "dependant1" }],
+ attrs: [{ key: attr, value: "dependant1" }],
expected: [host, null, dependant1],
},
{
desc: "Change attribute",
- attrs: [{ id: "host", key: attr, value: "dependant2" }],
+ attrs: [{ key: attr, value: "dependant2" }],
expected: [null, host, dependant2],
},
{
desc: "Change attribute to multiple targets",
- attrs: [{ id: "host", key: attr, value: "dependant1 dependant2" }],
- expected: [host, host, [dependant1, dependant2]],
- },
- {
- desc: "Change 'dependent2' id to 'invalid'",
- attrs: [{ id: "dependant2", key: "id", value: "invalid" }],
- expected: [host, host, [dependant1]],
- },
- {
- desc: "Change 'invalid' id back to 'dependent2'",
- attrs: [{ id: "invalid", key: "id", value: "dependant2" }],
+ attrs: [{ key: attr, value: "dependant1 dependant2" }],
expected: [host, host, [dependant1, dependant2]],
},
{
desc: "Remove attribute",
- attrs: [{ id: "host", key: attr }],
+ attrs: [{ key: attr }],
expected: [null, null, null],
},
];
@@ -194,32 +184,24 @@ async function testRelated(
tests = tests.concat([
{
desc: "Set reflected attribute",
- reflectedattr: [
- { id: "host", key: reflectedAttrName, value: ["dependant1"] },
- ],
+ reflectedattr: [{ key: reflectedAttrName, value: ["dependant1"] }],
expected: [host, null, dependant1],
},
{
desc: "Change reflected attribute",
- reflectedattr: [
- { id: "host", key: reflectedAttrName, value: ["dependant2"] },
- ],
+ reflectedattr: [{ key: reflectedAttrName, value: ["dependant2"] }],
expected: [null, host, dependant2],
},
{
desc: "Change reflected attribute to multiple targets",
reflectedattr: [
- {
- id: "host",
- key: reflectedAttrName,
- value: ["dependant2", "dependant1"],
- },
+ { key: reflectedAttrName, value: ["dependant2", "dependant1"] },
],
expected: [host, host, [dependant1, dependant2]],
},
{
desc: "Remove reflected attribute",
- reflectedattr: [{ id: "host", key: reflectedAttrName, value: null }],
+ reflectedattr: [{ key: reflectedAttrName, value: null }],
expected: [null, null, null],
},
]);
@@ -229,12 +211,12 @@ async function testRelated(
info(desc);
if (attrs) {
- for (let { id, key, value } of attrs) {
- await invokeSetAttribute(browser, id, key, value);
+ for (let { key, value } of attrs) {
+ await invokeSetAttribute(browser, "host", key, value);
}
} else if (reflectedattr) {
- for (let { id, key, value } of reflectedattr) {
- await invokeSetReflectedElementsAttribute(browser, id, key, value);
+ for (let { key, value } of reflectedattr) {
+ await invokeSetReflectedElementsAttribute(browser, "host", key, value);
}
}