Backed out changeset 52345a440234 (bug 1748450) for causing crashes (Bug 1751268).

This commit is contained in:
Alexandru Michis 2022-01-21 01:47:46 +02:00
parent 5df06ce671
commit 8508eb2c77
3 changed files with 22 additions and 14 deletions

View File

@ -1094,7 +1094,7 @@ void DocAccessible::BindToDocument(LocalAccessible* aAccessible,
}
}
if (mIPCDoc) {
if (StaticPrefs::accessibility_cache_enabled_AtStartup()) {
mInsertedAccessibles.EnsureInserted(aAccessible);
}
}
@ -1414,7 +1414,7 @@ void DocAccessible::ProcessBoundsChanged() {
}
void DocAccessible::SendAccessiblesWillMove() {
if (!mIPCDoc) {
if (!mIPCDoc || !StaticPrefs::accessibility_cache_enabled_AtStartup()) {
return;
}
nsTArray<uint64_t> ids;
@ -2345,7 +2345,7 @@ bool DocAccessible::MoveChild(LocalAccessible* aChild,
if (curParent == aNewParent) {
MOZ_ASSERT(aChild->IndexInParent() != aIdxInParent, "No move case");
curParent->RelocateChild(aIdxInParent, aChild);
if (mIPCDoc) {
if (StaticPrefs::accessibility_cache_enabled_AtStartup()) {
TrackMovedAccessible(aChild);
}
@ -2374,7 +2374,7 @@ bool DocAccessible::MoveChild(LocalAccessible* aChild,
TreeMutation imut(aNewParent);
aNewParent->InsertChildAt(aIdxInParent, aChild);
if (mIPCDoc) {
if (StaticPrefs::accessibility_cache_enabled_AtStartup()) {
TrackMovedAccessible(aChild);
}
imut.AfterInsertion(aChild);

View File

@ -507,9 +507,6 @@ class DocAccessible : public HyperTextAccessibleWrap,
*/
void ProcessBoundsChanged();
/**
* Only works in content process documents.
*/
bool IsAccessibleBeingMoved(LocalAccessible* aAcc) {
return mMovedAccessibles.Contains(aAcc);
}
@ -747,8 +744,8 @@ class DocAccessible : public HyperTextAccessibleWrap,
void SetRoleMapEntryForDoc(dom::Element* aElement);
/**
* This must be called whenever an Accessible is moved in a content process.
* It keeps track of Accessibles moved during this tick.
* This must be called whenever an Accessible is moved if the cache is
* enabled. It keeps track of Accessibles moved during this tick.
*/
void TrackMovedAccessible(LocalAccessible* aAcc);
@ -758,11 +755,11 @@ class DocAccessible : public HyperTextAccessibleWrap,
DocAccessibleChild* mIPCDoc;
nsTHashSet<RefPtr<LocalAccessible>> mMaybeBoundsChanged;
// A set of Accessibles moved during this tick. Only used in content
// processes.
// A set of Accessibles moved during this tick. Only used if the cache is
// enabled.
nsTHashSet<RefPtr<LocalAccessible>> mMovedAccessibles;
// A set of Accessibles inserted during this tick. Only used in content
// processes. This is needed to prevent insertions + moves of the same
// A set of Accessibles inserted during this tick. Only used if the cache is
// enabled. This is needed to prevent insertions + moves of the same
// Accessible in the same tick from being tracked as moves.
nsTHashSet<RefPtr<LocalAccessible>> mInsertedAccessibles;
};

View File

@ -11,6 +11,11 @@ loadScripts(
{ name: "states.js", dir: MOCHITESTS_DIR }
);
const isCacheEnabled = Services.prefs.getBoolPref(
"accessibility.cache.enabled",
false
);
/**
* Test moving Accessibles:
* 1. A moved Accessible keeps the same Accessible.
@ -53,5 +58,11 @@ addAccessibleTask(
// was moved. Ensure it is dead.
ok(isDefunct(heading), "heading is dead");
},
{ chrome: true, topLevel: true, iframe: true, remoteIframe: true }
{
chrome: true,
// Moves cause RemoteAccessible re-creation without the cache enabled.
topLevel: isCacheEnabled,
iframe: isCacheEnabled,
remoteIframe: isCacheEnabled,
}
);