Bug 1531346 - Check for cyclical relationship with aria-activedescendant. r=MarcoZ
authorEitan Isaacson <eitan@monotonous.org>
Fri, 08 Mar 2019 07:55:13 +0000
changeset 521005 546397372dd75a335d91268a5b5b539f17f266d9
parent 520995 3cddc7cd4da5fcd26b93becb55a028621ab68f64
child 521006 5734a9a9153133cd366f75742cc958ce205a8b5d
push id10862
push userffxbld-merge
push dateMon, 11 Mar 2019 13:01:11 +0000
treeherdermozilla-beta@a2e7f5c935da [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMarcoZ
bugs1531346
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1531346 - Check for cyclical relationship with aria-activedescendant. r=MarcoZ Differential Revision: https://phabricator.services.mozilla.com/D22633
accessible/generic/Accessible.cpp
--- a/accessible/generic/Accessible.cpp
+++ b/accessible/generic/Accessible.cpp
@@ -2409,16 +2409,22 @@ Accessible* Accessible::CurrentItem() co
   // with the aria-activedescendant attribute.
   nsAutoString id;
   if (HasOwnContent() && mContent->IsElement() &&
       mContent->AsElement()->GetAttr(kNameSpaceID_None,
                                      nsGkAtoms::aria_activedescendant, id)) {
     dom::Document* DOMDoc = mContent->OwnerDoc();
     dom::Element* activeDescendantElm = DOMDoc->GetElementById(id);
     if (activeDescendantElm) {
+      if (nsContentUtils::ContentIsDescendantOf(mContent,
+                                                activeDescendantElm)) {
+        // Don't want a cyclical descendant relationship. That would be bad.
+        return nullptr;
+      }
+
       DocAccessible* document = Document();
       if (document) return document->GetAccessible(activeDescendantElm);
     }
   }
   return nullptr;
 }
 
 void Accessible::SetCurrentItem(const Accessible* aItem) {