Commit 329d2137 authored by Sandor Molnar's avatar Sandor Molnar
Browse files

Backed out changeset dbb7e27f8464 (bug 1833313) for causing android gv-junit crashes. CLOSED TREE

parent fc2dd4ac
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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());
@@ -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);
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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);
+7 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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++];
+9 −0
Original line number Diff line number Diff line
@@ -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;
+3 −2
Original line number Diff line number Diff line
@@ -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"
@@ -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 ||
@@ -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