Bug 1782172: [Part 1] Support creating a Relation with a RemoteAccessible r=Jamie

Differential Revision: https://phabricator.services.mozilla.com/D153795
This commit is contained in:
Morgan Rae Reschenberg 2022-08-15 20:43:54 +00:00
Родитель 679f4cf339
Коммит 439d408a9e
3 изменённых файлов: 12 добавлений и 9 удалений

Просмотреть файл

@ -280,12 +280,15 @@ LocalAccessible* IDRefsIterator::Next() {
// SingleAccIterator
////////////////////////////////////////////////////////////////////////////////
LocalAccessible* SingleAccIterator::Next() {
RefPtr<LocalAccessible> nextAcc;
mAcc.swap(nextAcc);
if (!nextAcc || nextAcc->IsDefunct()) {
Accessible* SingleAccIterator::Next() {
Accessible* nextAcc = mAcc;
mAcc = nullptr;
if (!nextAcc) {
return nullptr;
}
MOZ_ASSERT(!nextAcc->IsLocal() || !nextAcc->AsLocal()->IsDefunct(),
"Iterator references defunct accessible?");
return nextAcc;
}

Просмотреть файл

@ -244,17 +244,17 @@ class IDRefsIterator : public AccIterable {
*/
class SingleAccIterator : public AccIterable {
public:
explicit SingleAccIterator(LocalAccessible* aTarget) : mAcc(aTarget) {}
explicit SingleAccIterator(Accessible* aTarget) : mAcc(aTarget) {}
virtual ~SingleAccIterator() {}
virtual LocalAccessible* Next() override;
virtual Accessible* Next() override;
private:
SingleAccIterator();
SingleAccIterator(const SingleAccIterator&);
SingleAccIterator& operator=(const SingleAccIterator&);
RefPtr<LocalAccessible> mAcc;
Accessible* mAcc;
};
/**

Просмотреть файл

@ -24,7 +24,7 @@ class Relation {
explicit Relation(AccIterable* aIter) : mFirstIter(aIter), mLastIter(aIter) {}
explicit Relation(LocalAccessible* aAcc)
explicit Relation(Accessible* aAcc)
: mFirstIter(nullptr), mLastIter(nullptr) {
AppendTarget(aAcc);
}
@ -59,7 +59,7 @@ class Relation {
/**
* Append the given accessible to the set of related accessibles.
*/
inline void AppendTarget(LocalAccessible* aAcc) {
inline void AppendTarget(Accessible* aAcc) {
if (aAcc) AppendIter(new SingleAccIterator(aAcc));
}