Bug 1862802 part 5: Remove virtual cursor change event. r=eeejay

Depends on D192645

Differential Revision: https://phabricator.services.mozilla.com/D192646
This commit is contained in:
James Teh 2023-11-29 03:53:20 +00:00
parent 603681f423
commit f36ae8432b
19 changed files with 8 additions and 223 deletions

View file

@ -121,26 +121,6 @@ Accessible* AccessibleWrap::DoPivot(Accessible* aAccessible,
return nullptr; return nullptr;
} }
bool AccessibleWrap::PivotTo(int32_t aGranularity, bool aForward,
bool aInclusive) {
Accessible* result = DoPivot(this, aGranularity, aForward, aInclusive);
if (result) {
MOZ_ASSERT(result->IsLocal());
// Dispatch a virtual cursor change event that will be turned into an
// android accessibility focused changed event in the parent.
PivotMoveReason reason = aForward ? nsIAccessiblePivot::REASON_NEXT
: nsIAccessiblePivot::REASON_PREV;
LocalAccessible* localResult = result->AsLocal();
RefPtr<AccEvent> event = new AccVCChangeEvent(
localResult->Document(), this, localResult, reason, eFromUserInput);
nsEventShell::FireEvent(event);
return true;
}
return false;
}
Accessible* AccessibleWrap::ExploreByTouch(Accessible* aAccessible, float aX, Accessible* AccessibleWrap::ExploreByTouch(Accessible* aAccessible, float aX,
float aY) { float aY) {
Accessible* root; Accessible* root;

View file

@ -27,9 +27,6 @@ class AccessibleWrap : public LocalAccessible {
virtual bool DoAction(uint8_t aIndex) const override; virtual bool DoAction(uint8_t aIndex) const override;
MOZ_CAN_RUN_SCRIPT_BOUNDARY
virtual bool PivotTo(int32_t aGranularity, bool aForward, bool aInclusive);
static Accessible* ExploreByTouch(Accessible* aAccessible, float aX, static Accessible* ExploreByTouch(Accessible* aAccessible, float aX,
float aY); float aY);

View file

@ -193,24 +193,6 @@ void a11y::PlatformShowHideEvent(Accessible* aTarget, Accessible* aParent,
void a11y::PlatformSelectionEvent(Accessible*, Accessible*, uint32_t) {} void a11y::PlatformSelectionEvent(Accessible*, Accessible*, uint32_t) {}
void a11y::PlatformVirtualCursorChangeEvent(Accessible* aTarget,
Accessible* aOldPosition,
Accessible* aNewPosition,
int16_t aReason, bool aFromUser) {
if (!aNewPosition || !aFromUser) {
return;
}
RefPtr<SessionAccessibility> sessionAcc =
SessionAccessibility::GetInstanceFor(aTarget);
if (!sessionAcc) {
return;
}
sessionAcc->SendAccessibilityFocusedEvent(aNewPosition);
}
void a11y::PlatformScrollingEvent(Accessible* aTarget, uint32_t aEventType, void a11y::PlatformScrollingEvent(Accessible* aTarget, uint32_t aEventType,
uint32_t aScrollX, uint32_t aScrollY, uint32_t aScrollX, uint32_t aScrollY,
uint32_t aMaxScrollX, uint32_t aMaxScrollY) { uint32_t aMaxScrollX, uint32_t aMaxScrollY) {

View file

@ -161,21 +161,6 @@ AccSelChangeEvent::AccSelChangeEvent(LocalAccessible* aWidget,
} }
} }
////////////////////////////////////////////////////////////////////////////////
// AccVCChangeEvent
////////////////////////////////////////////////////////////////////////////////
AccVCChangeEvent::AccVCChangeEvent(LocalAccessible* aAccessible,
LocalAccessible* aOldAccessible,
LocalAccessible* aNewAccessible,
int16_t aReason,
EIsFromUserInput aIsFromUserInput)
: AccEvent(::nsIAccessibleEvent::EVENT_VIRTUALCURSOR_CHANGED, aAccessible,
aIsFromUserInput),
mOldAccessible(aOldAccessible),
mNewAccessible(aNewAccessible),
mReason(aReason) {}
already_AddRefed<nsIAccessibleEvent> a11y::MakeXPCEvent(AccEvent* aEvent) { already_AddRefed<nsIAccessibleEvent> a11y::MakeXPCEvent(AccEvent* aEvent) {
DocAccessible* doc = aEvent->Document(); DocAccessible* doc = aEvent->Document();
LocalAccessible* acc = aEvent->GetAccessible(); LocalAccessible* acc = aEvent->GetAccessible();
@ -240,15 +225,6 @@ already_AddRefed<nsIAccessibleEvent> a11y::MakeXPCEvent(AccEvent* aEvent) {
return xpEvent.forget(); return xpEvent.forget();
} }
if (eventGroup & (1 << AccEvent::eVirtualCursorChangeEvent)) {
AccVCChangeEvent* vcc = downcast_accEvent(aEvent);
xpEvent = new xpcAccVirtualCursorChangeEvent(
type, ToXPC(acc), ToXPCDocument(doc), node, fromUser,
ToXPC(vcc->OldAccessible()), ToXPC(vcc->NewAccessible()),
vcc->Reason());
return xpEvent.forget();
}
if (eventGroup & (1 << AccEvent::eObjectAttrChangedEvent)) { if (eventGroup & (1 << AccEvent::eObjectAttrChangedEvent)) {
AccObjectAttrChangedEvent* oac = downcast_accEvent(aEvent); AccObjectAttrChangedEvent* oac = downcast_accEvent(aEvent);
nsString attribute; nsString attribute;

View file

@ -102,7 +102,6 @@ class AccEvent {
eCaretMoveEvent, eCaretMoveEvent,
eTextSelChangeEvent, eTextSelChangeEvent,
eSelectionChangeEvent, eSelectionChangeEvent,
eVirtualCursorChangeEvent,
eObjectAttrChangedEvent, eObjectAttrChangedEvent,
eScrollingEvent, eScrollingEvent,
eAnnouncementEvent, eAnnouncementEvent,
@ -441,35 +440,6 @@ class AccSelChangeEvent : public AccEvent {
friend class EventQueue; friend class EventQueue;
}; };
/**
* Accessible virtual cursor change event.
*/
class AccVCChangeEvent : public AccEvent {
public:
AccVCChangeEvent(LocalAccessible* aAccessible,
LocalAccessible* aOldAccessible,
LocalAccessible* aNewAccessible, int16_t aReason,
EIsFromUserInput aIsFromUserInput = eFromUserInput);
virtual ~AccVCChangeEvent() {}
// AccEvent
static const EventGroup kEventGroup = eVirtualCursorChangeEvent;
virtual unsigned int GetEventGroups() const override {
return AccEvent::GetEventGroups() | (1U << eVirtualCursorChangeEvent);
}
// AccVCChangeEvent
LocalAccessible* OldAccessible() const { return mOldAccessible; }
LocalAccessible* NewAccessible() const { return mNewAccessible; }
int32_t Reason() const { return mReason; }
private:
RefPtr<LocalAccessible> mOldAccessible;
RefPtr<LocalAccessible> mNewAccessible;
int16_t mReason;
};
/** /**
* Accessible object attribute changed event. * Accessible object attribute changed event.
*/ */

View file

@ -110,11 +110,6 @@ void PlatformSelectionEvent(Accessible* aTarget, Accessible* aWidget,
uint32_t aType); uint32_t aType);
#if defined(ANDROID) #if defined(ANDROID)
void PlatformVirtualCursorChangeEvent(Accessible* aTarget,
Accessible* aOldPosition,
Accessible* aNewPosition, int16_t aReason,
bool aFromUser);
void PlatformScrollingEvent(Accessible* aTarget, uint32_t aEventType, void PlatformScrollingEvent(Accessible* aTarget, uint32_t aEventType,
uint32_t aScrollX, uint32_t aScrollY, uint32_t aScrollX, uint32_t aScrollY,
uint32_t aMaxScrollX, uint32_t aMaxScrollY); uint32_t aMaxScrollX, uint32_t aMaxScrollY);

View file

@ -1006,7 +1006,7 @@ already_AddRefed<DOMStringList> nsAccessibilityService::GetStringStates(
void nsAccessibilityService::GetStringEventType(uint32_t aEventType, void nsAccessibilityService::GetStringEventType(uint32_t aEventType,
nsAString& aString) { nsAString& aString) {
NS_ASSERTION( static_assert(
nsIAccessibleEvent::EVENT_LAST_ENTRY == ArrayLength(kEventTypeNames), nsIAccessibleEvent::EVENT_LAST_ENTRY == ArrayLength(kEventTypeNames),
"nsIAccessibleEvent constants are out of sync to kEventTypeNames"); "nsIAccessibleEvent constants are out of sync to kEventTypeNames");

View file

@ -481,7 +481,6 @@ static const char kEventTypeNames[][40] = {
"window minimize", // EVENT_WINDOW_MINIMIZE "window minimize", // EVENT_WINDOW_MINIMIZE
"window restore", // EVENT_WINDOW_RESTORE "window restore", // EVENT_WINDOW_RESTORE
"object attribute changed", // EVENT_OBJECT_ATTRIBUTE_CHANGED "object attribute changed", // EVENT_OBJECT_ATTRIBUTE_CHANGED
"virtual cursor changed", // EVENT_VIRTUALCURSOR_CHANGED
"text value change", // EVENT_TEXT_VALUE_CHANGE "text value change", // EVENT_TEXT_VALUE_CHANGE
"scrolling", // EVENT_SCROLLING "scrolling", // EVENT_SCROLLING
"announcement", // EVENT_ANNOUNCEMENT "announcement", // EVENT_ANNOUNCEMENT

View file

@ -936,16 +936,6 @@ nsresult LocalAccessible::HandleAccEvent(AccEvent* aEvent) {
aEvent->GetEventType()); aEvent->GetEventType());
break; break;
} }
case nsIAccessibleEvent::EVENT_VIRTUALCURSOR_CHANGED: {
AccVCChangeEvent* vcEvent = downcast_accEvent(aEvent);
LocalAccessible* position = vcEvent->NewAccessible();
LocalAccessible* oldPosition = vcEvent->OldAccessible();
ipcDoc->SendVirtualCursorChangeEvent(
id, oldPosition ? oldPosition->ID() : 0,
position ? position->ID() : 0, vcEvent->Reason(),
vcEvent->IsFromUserInput());
break;
}
case nsIAccessibleEvent::EVENT_FOCUS: case nsIAccessibleEvent::EVENT_FOCUS:
ipcDoc->SendFocusEvent(id); ipcDoc->SendFocusEvent(id);
break; break;
@ -1061,15 +1051,6 @@ nsresult LocalAccessible::HandleAccEvent(AccEvent* aEvent) {
aEvent->GetEventType()); aEvent->GetEventType());
break; break;
} }
case nsIAccessibleEvent::EVENT_VIRTUALCURSOR_CHANGED: {
#ifdef ANDROID
AccVCChangeEvent* vcEvent = downcast_accEvent(aEvent);
PlatformVirtualCursorChangeEvent(
target, vcEvent->OldAccessible(), vcEvent->NewAccessible(),
vcEvent->Reason(), vcEvent->IsFromUserInput());
#endif
break;
}
case nsIAccessibleEvent::EVENT_FOCUS: { case nsIAccessibleEvent::EVENT_FOCUS: {
LayoutDeviceIntRect rect; LayoutDeviceIntRect rect;
// The caret rect is only used on Windows, so just pass an empty rect on // The caret rect is only used on Windows, so just pass an empty rect on

View file

@ -40,7 +40,6 @@ XPIDL_SOURCES += [
"nsIAccessibleTextSelectionChangeEvent.idl", "nsIAccessibleTextSelectionChangeEvent.idl",
"nsIAccessibleTypes.idl", "nsIAccessibleTypes.idl",
"nsIAccessibleValue.idl", "nsIAccessibleValue.idl",
"nsIAccessibleVirtualCursorChangeEvent.idl",
] ]
XPIDL_MODULE = "accessibility" XPIDL_MODULE = "accessibility"

View file

@ -182,46 +182,41 @@ interface nsIAccessibleEvent : nsISupports
*/ */
const unsigned long EVENT_OBJECT_ATTRIBUTE_CHANGED = 0x0022; const unsigned long EVENT_OBJECT_ATTRIBUTE_CHANGED = 0x0022;
/**
* A cursorable's virtual cursor has changed.
*/
const unsigned long EVENT_VIRTUALCURSOR_CHANGED = 0x0023;
/** /**
* An object's text Value has changed. * An object's text Value has changed.
*/ */
const unsigned long EVENT_TEXT_VALUE_CHANGE = 0x0024; const unsigned long EVENT_TEXT_VALUE_CHANGE = 0x0023;
/** /**
* An accessible's viewport is scrolling. * An accessible's viewport is scrolling.
*/ */
const unsigned long EVENT_SCROLLING = 0x0025; const unsigned long EVENT_SCROLLING = 0x0024;
/** /**
* An accessible is making an explicit announcement. * An accessible is making an explicit announcement.
*/ */
const unsigned long EVENT_ANNOUNCEMENT = 0x0026; const unsigned long EVENT_ANNOUNCEMENT = 0x0025;
/** /**
* A live region has been introduced. Mac only. * A live region has been introduced. Mac only.
*/ */
const unsigned long EVENT_LIVE_REGION_ADDED = 0x0027; const unsigned long EVENT_LIVE_REGION_ADDED = 0x0026;
/** /**
* A live region has been removed (aria-live attribute changed). Mac Only. * A live region has been removed (aria-live attribute changed). Mac Only.
*/ */
const unsigned long EVENT_LIVE_REGION_REMOVED = 0x0028; const unsigned long EVENT_LIVE_REGION_REMOVED = 0x0027;
/** /**
* A reorder event that has been coalesced into a mutation * A reorder event that has been coalesced into a mutation
* of an ancestor's subtree. * of an ancestor's subtree.
*/ */
const unsigned long EVENT_INNER_REORDER = 0x0029; const unsigned long EVENT_INNER_REORDER = 0x0028;
/** /**
* Help make sure event map does not get out-of-line. * Help make sure event map does not get out-of-line.
*/ */
const unsigned long EVENT_LAST_ENTRY = 0x002A; const unsigned long EVENT_LAST_ENTRY = 0x0029;
/** /**
* The type of event, based on the enumerated event values * The type of event, based on the enumerated event values

View file

@ -20,13 +20,6 @@ interface nsIAccessibleTraversalRule;
[scriptable, uuid(81fe5144-059b-42db-bd3a-f6ce3158d5e9)] [scriptable, uuid(81fe5144-059b-42db-bd3a-f6ce3158d5e9)]
interface nsIAccessiblePivot : nsISupports interface nsIAccessiblePivot : nsISupports
{ {
// XXX: These are here for the VC changed event that has yet to go away.
const PivotMoveReason REASON_NONE = 0;
const PivotMoveReason REASON_NEXT = 1;
const PivotMoveReason REASON_PREV = 2;
const PivotMoveReason REASON_FIRST = 3;
const PivotMoveReason REASON_LAST = 4;
/** /**
* Move pivot to next object, from current position or given anchor, * Move pivot to next object, from current position or given anchor,
* complying to given traversal rule. * complying to given traversal rule.

View file

@ -1,29 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsIAccessibleEvent.idl"
/*
* An interface for virtual cursor changed events.
* Passes previous cursor position and text offsets.
*/
[scriptable, builtinclass, uuid(a58693b1-009e-4cc9-ae93-9c7d8f85cfdf)]
interface nsIAccessibleVirtualCursorChangeEvent : nsIAccessibleEvent
{
/**
* Previous object pointed at by virtual cursor, null if none.
*/
readonly attribute nsIAccessible oldAccessible;
/**
* New object pointed at by virtual cursor, null if none.
*/
readonly attribute nsIAccessible newAccessible;
/**
* Reason for virtual cursor move.
*/
readonly attribute short reason;
};

View file

@ -546,45 +546,6 @@ mozilla::ipc::IPCResult DocAccessibleParent::RecvSelectionEvent(
return IPC_OK(); return IPC_OK();
} }
mozilla::ipc::IPCResult DocAccessibleParent::RecvVirtualCursorChangeEvent(
const uint64_t& aID, const uint64_t& aOldPositionID,
const uint64_t& aNewPositionID, const int16_t& aReason,
const bool& aFromUser) {
ACQUIRE_ANDROID_LOCK
if (mShutdown) {
return IPC_OK();
}
RemoteAccessible* target = GetAccessible(aID);
RemoteAccessible* oldPosition = GetAccessible(aOldPositionID);
RemoteAccessible* newPosition = GetAccessible(aNewPositionID);
if (!target) {
NS_ERROR("no proxy for event!");
return IPC_OK();
}
#if defined(ANDROID)
PlatformVirtualCursorChangeEvent(target, oldPosition, newPosition, aReason,
aFromUser);
#endif
if (!nsCoreUtils::AccEventObserversExist()) {
return IPC_OK();
}
xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this);
RefPtr<xpcAccVirtualCursorChangeEvent> event =
new xpcAccVirtualCursorChangeEvent(
nsIAccessibleEvent::EVENT_VIRTUALCURSOR_CHANGED,
GetXPCAccessible(target), doc, nullptr, aFromUser,
GetXPCAccessible(oldPosition), GetXPCAccessible(newPosition),
aReason);
nsCoreUtils::DispatchAccEvent(std::move(event));
return IPC_OK();
}
mozilla::ipc::IPCResult DocAccessibleParent::RecvScrollingEvent( mozilla::ipc::IPCResult DocAccessibleParent::RecvScrollingEvent(
const uint64_t& aID, const uint64_t& aType, const uint32_t& aScrollX, const uint64_t& aID, const uint64_t& aType, const uint32_t& aScrollX,
const uint32_t& aScrollY, const uint32_t& aMaxScrollX, const uint32_t& aScrollY, const uint32_t& aMaxScrollX,

View file

@ -125,11 +125,6 @@ class DocAccessibleParent : public RemoteAccessible,
const uint64_t& aID, const uint64_t& aWidgetID, const uint64_t& aID, const uint64_t& aWidgetID,
const uint32_t& aType) override; const uint32_t& aType) override;
virtual mozilla::ipc::IPCResult RecvVirtualCursorChangeEvent(
const uint64_t& aID, const uint64_t& aOldPositionID,
const uint64_t& aNewPositionID, const int16_t& aReason,
const bool& aFromUser) override;
virtual mozilla::ipc::IPCResult RecvScrollingEvent( virtual mozilla::ipc::IPCResult RecvScrollingEvent(
const uint64_t& aID, const uint64_t& aType, const uint32_t& aScrollX, const uint64_t& aID, const uint64_t& aType, const uint32_t& aScrollX,
const uint32_t& aScrollY, const uint32_t& aMaxScrollX, const uint32_t& aScrollY, const uint32_t& aMaxScrollX,

View file

@ -70,11 +70,6 @@ parent:
async SelectionEvent(uint64_t aID, uint64_t aWidgetID, uint32_t aType); async SelectionEvent(uint64_t aID, uint64_t aWidgetID, uint32_t aType);
async RoleChangedEvent(role aRole, uint8_t aRoleMapEntryIndex); async RoleChangedEvent(role aRole, uint8_t aRoleMapEntryIndex);
async FocusEvent(uint64_t aID, LayoutDeviceIntRect aCaretRect); async FocusEvent(uint64_t aID, LayoutDeviceIntRect aCaretRect);
async VirtualCursorChangeEvent(uint64_t aID,
uint64_t aOldPosition,
uint64_t aPosition,
int16_t aReason,
bool aFromUservcEvent);
async ScrollingEvent(uint64_t aID, uint64_t aType, async ScrollingEvent(uint64_t aID, uint64_t aType,
uint32_t aScrollX, uint32_t aScrollY, uint32_t aScrollX, uint32_t aScrollY,
uint32_t aMaxScrollX, uint32_t aMaxScrollY); uint32_t aMaxScrollX, uint32_t aMaxScrollY);

View file

@ -24,8 +24,6 @@ const nsIAccessibleScrollingEvent = Ci.nsIAccessibleScrollingEvent;
const nsIAccessibleTextChangeEvent = Ci.nsIAccessibleTextChangeEvent; const nsIAccessibleTextChangeEvent = Ci.nsIAccessibleTextChangeEvent;
const nsIAccessibleTextSelectionChangeEvent = const nsIAccessibleTextSelectionChangeEvent =
Ci.nsIAccessibleTextSelectionChangeEvent; Ci.nsIAccessibleTextSelectionChangeEvent;
const nsIAccessibleVirtualCursorChangeEvent =
Ci.nsIAccessibleVirtualCursorChangeEvent;
const nsIAccessibleObjectAttributeChangedEvent = const nsIAccessibleObjectAttributeChangedEvent =
Ci.nsIAccessibleObjectAttributeChangedEvent; Ci.nsIAccessibleObjectAttributeChangedEvent;
const nsIAccessibleAnnouncementEvent = Ci.nsIAccessibleAnnouncementEvent; const nsIAccessibleAnnouncementEvent = Ci.nsIAccessibleAnnouncementEvent;

View file

@ -47,7 +47,6 @@ static const uint32_t gWinEventMap[] = {
kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_WINDOW_MINIMIZE kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_WINDOW_MINIMIZE
kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_WINDOW_RESTORE kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_WINDOW_RESTORE
IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED, // nsIAccessibleEvent::EVENT_OBJECT_ATTRIBUTE_CHANGED IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED, // nsIAccessibleEvent::EVENT_OBJECT_ATTRIBUTE_CHANGED
kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_VIRTUALCURSOR_CHANGED
EVENT_OBJECT_VALUECHANGE, // nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE EVENT_OBJECT_VALUECHANGE, // nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE
kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_SCROLLING kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_SCROLLING
kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_ANNOUNCEMENT kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_ANNOUNCEMENT

View file

@ -15,7 +15,6 @@ simple_events = [
'CaretMoveEvent', 'CaretMoveEvent',
'ObjectAttributeChangedEvent', 'ObjectAttributeChangedEvent',
'TableChangeEvent', 'TableChangeEvent',
'VirtualCursorChangeEvent',
'ScrollingEvent', 'ScrollingEvent',
'AnnouncementEvent' 'AnnouncementEvent'
] ]