Loading accessible/android/SessionAccessibility.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,8 @@ void SessionAccessibility::Init() { Settings::Init(); } bool SessionAccessibility::IsCacheEnabled() { return a11y::IsCacheActive(); } void SessionAccessibility::GetNodeInfo(int32_t aID, mozilla::jni::Object::Param aNodeInfo) { MOZ_ASSERT(AndroidBridge::IsJavaUiThread()); Loading Loading @@ -142,6 +144,7 @@ void SessionAccessibility::GetNodeInfo(int32_t aID, int SessionAccessibility::GetNodeClassName(int32_t aID) { MOZ_ASSERT(AndroidBridge::IsJavaUiThread()); MOZ_ASSERT(IsCacheEnabled(), "Cache is enabled"); ReleasableMonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor()); int32_t classNameEnum = java::SessionAccessibility::CLASSNAME_VIEW; RefPtr<SessionAccessibility> self(this); Loading Loading @@ -177,6 +180,7 @@ void SessionAccessibility::Click(int32_t aID) { bool SessionAccessibility::Pivot(int32_t aID, int32_t aGranularity, bool aForward, bool aInclusive) { MOZ_ASSERT(IsCacheEnabled(), "Cache is enabled"); MOZ_ASSERT(AndroidBridge::IsJavaUiThread()); MonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor()); RefPtr<SessionAccessibility> self(this); Loading accessible/android/SessionAccessibility.h +1 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ class SessionAccessibility final // Native implementations using Base::AttachNative; using Base::DisposeNative; bool IsCacheEnabled(); void GetNodeInfo(int32_t aID, mozilla::jni::Object::Param aNodeInfo); int GetNodeClassName(int32_t aID); void SetText(int32_t aID, jni::String::Param aText); Loading accessible/base/AccIterator.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include "mozilla/a11y/DocAccessibleParent.h" #include "mozilla/dom/DocumentOrShadowRoot.h" #include "mozilla/dom/HTMLLabelElement.h" #include "nsAccessibilityService.h" using namespace mozilla; using namespace mozilla::a11y; Loading Loading @@ -350,6 +351,12 @@ LocalAccessible* XULTreeItemIterator::Next() { // RemoteAccIterator //////////////////////////////////////////////////////////////////////////////// RemoteAccIterator::RemoteAccIterator(nsTArray<uint64_t>&& aIds, DocAccessibleParent* aDoc) : mOwnedIds(std::move(aIds)), mIds(mOwnedIds), mDoc(aDoc), mIndex(0) { MOZ_ASSERT(!a11y::IsCacheActive()); } Accessible* RemoteAccIterator::Next() { while (mIndex < mIds.Length()) { uint64_t id = mIds[mIndex++]; Loading accessible/base/AccIterator.h +9 −0 Original line number Diff line number Diff line Loading @@ -312,11 +312,20 @@ class RemoteAccIterator : public AccIterable { RemoteAccIterator(const nsTArray<uint64_t>& aIds, DocAccessibleParent* aDoc) : mIds(aIds), mDoc(aDoc), mIndex(0) {} /** * Construct with an array moved from somewhere else. In this case, this * RemoteAccIterator takes ownership of the array. This should be used, for * example, when using sync IPC to retrieve relations. */ RemoteAccIterator(nsTArray<uint64_t>&& aIds, DocAccessibleParent* aDoc); virtual ~RemoteAccIterator() = default; virtual Accessible* Next() override; private: // Used when ownership of the array is transferred to this instance. nsTArray<uint64_t> mOwnedIds; const nsTArray<uint64_t>& mIds; DocAccessibleParent* mDoc; uint32_t mIndex; Loading accessible/base/EventQueue.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include "nsEventShell.h" #include "DocAccessible.h" #include "DocAccessibleChild.h" #include "nsAccessibilityService.h" #include "nsTextEquivUtils.h" #ifdef A11Y_LOG # include "Logging.h" Loading Loading @@ -351,7 +352,7 @@ void EventQueue::ProcessEventQueue() { if (!target || target->IsDefunct()) continue; // Collect select changes if (IPCAccessibilityActive()) { if (IPCAccessibilityActive() && a11y::IsCacheActive()) { if ((event->mEventRule == AccEvent::eDoNotEmit && (eventType == nsIAccessibleEvent::EVENT_SELECTION_ADD || eventType == nsIAccessibleEvent::EVENT_SELECTION_REMOVE || Loading Loading @@ -416,7 +417,7 @@ void EventQueue::ProcessEventQueue() { if (!mDocument) return; } if (mDocument && IPCAccessibilityActive() && if (mDocument && IPCAccessibilityActive() && a11y::IsCacheActive() && (!selectedIDs.IsEmpty() || !unselectedIDs.IsEmpty())) { DocAccessibleChild* ipcDoc = mDocument->IPCDoc(); ipcDoc->SendSelectedAccessiblesChanged(selectedIDs, unselectedIDs); Loading Loading
accessible/android/SessionAccessibility.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,8 @@ void SessionAccessibility::Init() { Settings::Init(); } bool SessionAccessibility::IsCacheEnabled() { return a11y::IsCacheActive(); } void SessionAccessibility::GetNodeInfo(int32_t aID, mozilla::jni::Object::Param aNodeInfo) { MOZ_ASSERT(AndroidBridge::IsJavaUiThread()); Loading Loading @@ -142,6 +144,7 @@ void SessionAccessibility::GetNodeInfo(int32_t aID, int SessionAccessibility::GetNodeClassName(int32_t aID) { MOZ_ASSERT(AndroidBridge::IsJavaUiThread()); MOZ_ASSERT(IsCacheEnabled(), "Cache is enabled"); ReleasableMonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor()); int32_t classNameEnum = java::SessionAccessibility::CLASSNAME_VIEW; RefPtr<SessionAccessibility> self(this); Loading Loading @@ -177,6 +180,7 @@ void SessionAccessibility::Click(int32_t aID) { bool SessionAccessibility::Pivot(int32_t aID, int32_t aGranularity, bool aForward, bool aInclusive) { MOZ_ASSERT(IsCacheEnabled(), "Cache is enabled"); MOZ_ASSERT(AndroidBridge::IsJavaUiThread()); MonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor()); RefPtr<SessionAccessibility> self(this); Loading
accessible/android/SessionAccessibility.h +1 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ class SessionAccessibility final // Native implementations using Base::AttachNative; using Base::DisposeNative; bool IsCacheEnabled(); void GetNodeInfo(int32_t aID, mozilla::jni::Object::Param aNodeInfo); int GetNodeClassName(int32_t aID); void SetText(int32_t aID, jni::String::Param aText); Loading
accessible/base/AccIterator.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include "mozilla/a11y/DocAccessibleParent.h" #include "mozilla/dom/DocumentOrShadowRoot.h" #include "mozilla/dom/HTMLLabelElement.h" #include "nsAccessibilityService.h" using namespace mozilla; using namespace mozilla::a11y; Loading Loading @@ -350,6 +351,12 @@ LocalAccessible* XULTreeItemIterator::Next() { // RemoteAccIterator //////////////////////////////////////////////////////////////////////////////// RemoteAccIterator::RemoteAccIterator(nsTArray<uint64_t>&& aIds, DocAccessibleParent* aDoc) : mOwnedIds(std::move(aIds)), mIds(mOwnedIds), mDoc(aDoc), mIndex(0) { MOZ_ASSERT(!a11y::IsCacheActive()); } Accessible* RemoteAccIterator::Next() { while (mIndex < mIds.Length()) { uint64_t id = mIds[mIndex++]; Loading
accessible/base/AccIterator.h +9 −0 Original line number Diff line number Diff line Loading @@ -312,11 +312,20 @@ class RemoteAccIterator : public AccIterable { RemoteAccIterator(const nsTArray<uint64_t>& aIds, DocAccessibleParent* aDoc) : mIds(aIds), mDoc(aDoc), mIndex(0) {} /** * Construct with an array moved from somewhere else. In this case, this * RemoteAccIterator takes ownership of the array. This should be used, for * example, when using sync IPC to retrieve relations. */ RemoteAccIterator(nsTArray<uint64_t>&& aIds, DocAccessibleParent* aDoc); virtual ~RemoteAccIterator() = default; virtual Accessible* Next() override; private: // Used when ownership of the array is transferred to this instance. nsTArray<uint64_t> mOwnedIds; const nsTArray<uint64_t>& mIds; DocAccessibleParent* mDoc; uint32_t mIndex; Loading
accessible/base/EventQueue.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include "nsEventShell.h" #include "DocAccessible.h" #include "DocAccessibleChild.h" #include "nsAccessibilityService.h" #include "nsTextEquivUtils.h" #ifdef A11Y_LOG # include "Logging.h" Loading Loading @@ -351,7 +352,7 @@ void EventQueue::ProcessEventQueue() { if (!target || target->IsDefunct()) continue; // Collect select changes if (IPCAccessibilityActive()) { if (IPCAccessibilityActive() && a11y::IsCacheActive()) { if ((event->mEventRule == AccEvent::eDoNotEmit && (eventType == nsIAccessibleEvent::EVENT_SELECTION_ADD || eventType == nsIAccessibleEvent::EVENT_SELECTION_REMOVE || Loading Loading @@ -416,7 +417,7 @@ void EventQueue::ProcessEventQueue() { if (!mDocument) return; } if (mDocument && IPCAccessibilityActive() && if (mDocument && IPCAccessibilityActive() && a11y::IsCacheActive() && (!selectedIDs.IsEmpty() || !unselectedIDs.IsEmpty())) { DocAccessibleChild* ipcDoc = mDocument->IPCDoc(); ipcDoc->SendSelectedAccessiblesChanged(selectedIDs, unselectedIDs); Loading