mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out 5 changesets (bug 1172516, bug 1172525, bug 1172523) for e10s test_selectioncarets2.py failures.
Backed out changeset 65d9144969e4 (bug 1172516) Backed out changeset 3368f2dc0ee6 (bug 1172523) Backed out changeset d6096f9659f7 (bug 1172523) Backed out changeset cda3d99ef134 (bug 1172523) Backed out changeset a411d320bdba (bug 1172525) CLOSED TREE
This commit is contained in:
parent
32f5183846
commit
0d2ab00411
@ -34,7 +34,7 @@
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
MaiAtkObject::EAvailableAtkSignals MaiAtkObject::gAvailableAtkSignals =
|
||||
AccessibleWrap::EAvailableAtkSignals AccessibleWrap::gAvailableAtkSignals =
|
||||
eUnknown;
|
||||
|
||||
//defined in ApplicationAccessibleWrap.cpp
|
||||
@ -1165,18 +1165,7 @@ AccessibleWrap::HandleAccEvent(AccEvent* aEvent)
|
||||
|
||||
case nsIAccessibleEvent::EVENT_TEXT_REMOVED:
|
||||
case nsIAccessibleEvent::EVENT_TEXT_INSERTED:
|
||||
{
|
||||
AccTextChangeEvent* event = downcast_accEvent(aEvent);
|
||||
NS_ENSURE_TRUE(event, NS_ERROR_FAILURE);
|
||||
|
||||
MAI_ATK_OBJECT(atkObj)-> FireTextChangeEvent(event->ModifiedText(),
|
||||
event->GetStartOffset(),
|
||||
event->GetLength(),
|
||||
event->IsTextInserted(),
|
||||
event->IsFromUserInput());
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
return FireAtkTextChangedEvent(aEvent, atkObj);
|
||||
|
||||
case nsIAccessibleEvent::EVENT_FOCUS:
|
||||
{
|
||||
@ -1462,15 +1451,6 @@ MaiAtkObject::FireStateChangeEvent(uint64_t aState, bool aEnabled)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
a11y::ProxyTextChangeEvent(ProxyAccessible* aTarget, const nsString& aStr,
|
||||
int32_t aStart, uint32_t aLen, bool aIsInsert,
|
||||
bool aFromUser)
|
||||
{
|
||||
MaiAtkObject* atkObj = MAI_ATK_OBJECT(GetWrapperFor(aTarget));
|
||||
atkObj->FireTextChangeEvent(aStr, aStart, aLen, aIsInsert, aFromUser);
|
||||
}
|
||||
|
||||
#define OLD_TEXT_INSERTED "text_changed::insert"
|
||||
#define OLD_TEXT_REMOVED "text_changed::delete"
|
||||
static const char* oldTextChangeStrings[2][2] = {
|
||||
@ -1486,14 +1466,21 @@ static const char* textChangedStrings[2][2] = {
|
||||
{ TEXT_REMOVED, TEXT_INSERTED}
|
||||
};
|
||||
|
||||
void
|
||||
MaiAtkObject::FireTextChangeEvent(const nsString& aStr, int32_t aStart,
|
||||
uint32_t aLen, bool aIsInsert,
|
||||
bool aFromUser)
|
||||
nsresult
|
||||
AccessibleWrap::FireAtkTextChangedEvent(AccEvent* aEvent,
|
||||
AtkObject* aObject)
|
||||
{
|
||||
AccTextChangeEvent* event = downcast_accEvent(aEvent);
|
||||
NS_ENSURE_TRUE(event, NS_ERROR_FAILURE);
|
||||
|
||||
int32_t start = event->GetStartOffset();
|
||||
uint32_t length = event->GetLength();
|
||||
bool isInserted = event->IsTextInserted();
|
||||
bool isFromUserInput = aEvent->IsFromUserInput();
|
||||
|
||||
if (gAvailableAtkSignals == eUnknown)
|
||||
gAvailableAtkSignals =
|
||||
g_signal_lookup("text-insert", G_OBJECT_TYPE(this)) ?
|
||||
g_signal_lookup("text-insert", G_OBJECT_TYPE(aObject)) ?
|
||||
eHaveNewAtkTextSignals : eNoNewAtkSignals;
|
||||
|
||||
if (gAvailableAtkSignals == eNoNewAtkSignals) {
|
||||
@ -1501,14 +1488,18 @@ MaiAtkObject::FireTextChangeEvent(const nsString& aStr, int32_t aStart,
|
||||
// stop supporting old atk since it doesn't really work anyway
|
||||
// see bug 619002
|
||||
const char* signal_name =
|
||||
oldTextChangeStrings[aFromUser][aIsInsert];
|
||||
g_signal_emit_by_name(this, signal_name, aStart, aLen);
|
||||
oldTextChangeStrings[isFromUserInput][isInserted];
|
||||
g_signal_emit_by_name(aObject, signal_name, start, length);
|
||||
} else {
|
||||
nsAutoString text;
|
||||
event->GetModifiedText(text);
|
||||
const char* signal_name =
|
||||
textChangedStrings[aFromUser][aIsInsert];
|
||||
g_signal_emit_by_name(this, signal_name, aStart, aLen,
|
||||
NS_ConvertUTF16toUTF8(aStr).get());
|
||||
textChangedStrings[isFromUserInput][isInserted];
|
||||
g_signal_emit_by_name(aObject, signal_name, start, length,
|
||||
NS_ConvertUTF16toUTF8(text).get());
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#define ADD_EVENT "children_changed::add"
|
||||
|
@ -79,6 +79,20 @@ protected:
|
||||
AtkObject *mAtkObject;
|
||||
|
||||
private:
|
||||
|
||||
/*
|
||||
* do we have text-remove and text-insert signals if not we need to use
|
||||
* text-changed see AccessibleWrap::FireAtkTextChangedEvent() and
|
||||
* bug 619002
|
||||
*/
|
||||
enum EAvailableAtkSignals {
|
||||
eUnknown,
|
||||
eHaveNewAtkTextSignals,
|
||||
eNoNewAtkSignals
|
||||
};
|
||||
|
||||
static EAvailableAtkSignals gAvailableAtkSignals;
|
||||
|
||||
uint16_t CreateMaiInterfaces();
|
||||
};
|
||||
|
||||
|
@ -81,26 +81,6 @@ struct MaiAtkObject
|
||||
* Notify atk of a state change on this AtkObject.
|
||||
*/
|
||||
void FireStateChangeEvent(uint64_t aState, bool aEnabled);
|
||||
|
||||
/*
|
||||
* Notify ATK of a text change within this ATK object.
|
||||
*/
|
||||
void FireTextChangeEvent(const nsString& aStr, int32_t aStart, uint32_t aLen,
|
||||
bool aIsInsert, bool aIsFromUser);
|
||||
|
||||
private:
|
||||
/*
|
||||
* do we have text-remove and text-insert signals if not we need to use
|
||||
* text-changed see AccessibleWrap::FireAtkTextChangedEvent() and
|
||||
* bug 619002
|
||||
*/
|
||||
enum EAvailableAtkSignals {
|
||||
eUnknown,
|
||||
eHaveNewAtkTextSignals,
|
||||
eNoNewAtkSignals
|
||||
};
|
||||
|
||||
static EAvailableAtkSignals gAvailableAtkSignals;
|
||||
};
|
||||
|
||||
#endif /* __NS_MAI_H__ */
|
||||
|
@ -194,7 +194,6 @@ public:
|
||||
bool IsTextInserted() const { return mIsInserted; }
|
||||
void GetModifiedText(nsAString& aModifiedText)
|
||||
{ aModifiedText = mModifiedText; }
|
||||
const nsString& ModifiedText() const { return mModifiedText; }
|
||||
|
||||
private:
|
||||
int32_t mStart;
|
||||
|
@ -480,6 +480,44 @@ EventQueue::CreateTextChangeEventFor(AccMutationEvent* aEvent)
|
||||
aEvent->mIsFromUserInput ? eFromUserInput : eNoUserInput);
|
||||
}
|
||||
|
||||
void
|
||||
EventQueue::SendIPCEvent(AccEvent* aEvent) const
|
||||
{
|
||||
DocAccessibleChild* ipcDoc = mDocument->IPCDoc();
|
||||
uint64_t id = aEvent->GetAccessible()->IsDoc() ? 0 :
|
||||
reinterpret_cast<uintptr_t>(aEvent->GetAccessible());
|
||||
|
||||
switch(aEvent->GetEventType()) {
|
||||
case nsIAccessibleEvent::EVENT_SHOW:
|
||||
ipcDoc->ShowEvent(downcast_accEvent(aEvent));
|
||||
break;
|
||||
|
||||
case nsIAccessibleEvent::EVENT_HIDE:
|
||||
ipcDoc->SendHideEvent(id);
|
||||
break;
|
||||
|
||||
case nsIAccessibleEvent::EVENT_REORDER:
|
||||
// reorder events on the application acc aren't necessary to tell the parent
|
||||
// about new top level documents.
|
||||
if (!aEvent->GetAccessible()->IsApplication())
|
||||
ipcDoc->SendEvent(id, aEvent->GetEventType());
|
||||
break;
|
||||
case nsIAccessibleEvent::EVENT_STATE_CHANGE: {
|
||||
AccStateChangeEvent* event = downcast_accEvent(aEvent);
|
||||
ipcDoc->SendStateChangeEvent(id, event->GetState(),
|
||||
event->IsStateEnabled());
|
||||
break;
|
||||
}
|
||||
case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED: {
|
||||
AccCaretMoveEvent* event = downcast_accEvent(aEvent);
|
||||
ipcDoc->SendEvent(id, event->GetCaretOffset());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ipcDoc->SendEvent(id, aEvent->GetEventType());
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// EventQueue: event queue
|
||||
|
||||
@ -556,5 +594,8 @@ EventQueue::ProcessEventQueue()
|
||||
|
||||
if (!mDocument)
|
||||
return;
|
||||
|
||||
if (IPCAccessibilityActive())
|
||||
SendIPCEvent(event);
|
||||
}
|
||||
}
|
||||
|
@ -53,6 +53,11 @@ private:
|
||||
AccSelChangeEvent* aThisEvent,
|
||||
uint32_t aThisIndex);
|
||||
|
||||
/**
|
||||
* Notify the parent process of events being fired by this event queue.
|
||||
*/
|
||||
void SendIPCEvent(AccEvent* aEvent) const;
|
||||
|
||||
/**
|
||||
* Coalesce text change events caused by sibling hide events.
|
||||
*/
|
||||
|
@ -6,8 +6,6 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
class nsString;
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
|
||||
@ -72,9 +70,6 @@ void ProxyEvent(ProxyAccessible* aTarget, uint32_t aEventType);
|
||||
void ProxyStateChangeEvent(ProxyAccessible* aTarget, uint64_t aState,
|
||||
bool aEnabled);
|
||||
void ProxyCaretMoveEvent(ProxyAccessible* aTarget, int32_t aOffset);
|
||||
void ProxyTextChangeEvent(ProxyAccessible* aTarget, const nsString& aStr,
|
||||
int32_t aStart, uint32_t aLen, bool aIsInsert,
|
||||
bool aFromUser);
|
||||
} // namespace a11y
|
||||
} // namespace mozilla
|
||||
|
||||
|
@ -15,7 +15,6 @@
|
||||
#include "ApplicationAccessible.h"
|
||||
#include "nsEventShell.h"
|
||||
#include "nsTextEquivUtils.h"
|
||||
#include "DocAccessibleChild.h"
|
||||
#include "Relation.h"
|
||||
#include "Role.h"
|
||||
#include "RootAccessible.h"
|
||||
@ -834,52 +833,6 @@ Accessible::HandleAccEvent(AccEvent* aEvent)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aEvent);
|
||||
|
||||
if (IPCAccessibilityActive() && Document()) {
|
||||
DocAccessibleChild* ipcDoc = mDoc->IPCDoc();
|
||||
uint64_t id = aEvent->GetAccessible()->IsDoc() ? 0 :
|
||||
reinterpret_cast<uintptr_t>(aEvent->GetAccessible());
|
||||
|
||||
switch(aEvent->GetEventType()) {
|
||||
case nsIAccessibleEvent::EVENT_SHOW:
|
||||
ipcDoc->ShowEvent(downcast_accEvent(aEvent));
|
||||
break;
|
||||
|
||||
case nsIAccessibleEvent::EVENT_HIDE:
|
||||
ipcDoc->SendHideEvent(id);
|
||||
break;
|
||||
|
||||
case nsIAccessibleEvent::EVENT_REORDER:
|
||||
// reorder events on the application acc aren't necessary to tell the parent
|
||||
// about new top level documents.
|
||||
if (!aEvent->GetAccessible()->IsApplication())
|
||||
ipcDoc->SendEvent(id, aEvent->GetEventType());
|
||||
break;
|
||||
case nsIAccessibleEvent::EVENT_STATE_CHANGE: {
|
||||
AccStateChangeEvent* event = downcast_accEvent(aEvent);
|
||||
ipcDoc->SendStateChangeEvent(id, event->GetState(),
|
||||
event->IsStateEnabled());
|
||||
break;
|
||||
}
|
||||
case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED: {
|
||||
AccCaretMoveEvent* event = downcast_accEvent(aEvent);
|
||||
ipcDoc->SendCaretMoveEvent(id, event->GetCaretOffset());
|
||||
break;
|
||||
}
|
||||
case nsIAccessibleEvent::EVENT_TEXT_INSERTED:
|
||||
case nsIAccessibleEvent::EVENT_TEXT_REMOVED: {
|
||||
AccTextChangeEvent* event = downcast_accEvent(aEvent);
|
||||
ipcDoc->SendTextChangeEvent(id, event->ModifiedText(),
|
||||
event->GetStartOffset(),
|
||||
event->GetLength(),
|
||||
event->IsTextInserted(),
|
||||
event->IsFromUserInput());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ipcDoc->SendEvent(id, aEvent->GetEventType());
|
||||
}
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIObserverService> obsService = services::GetObserverService();
|
||||
NS_ENSURE_TRUE(obsService, NS_ERROR_FAILURE);
|
||||
|
||||
|
@ -336,12 +336,6 @@ public:
|
||||
*/
|
||||
void RecreateAccessible(nsIContent* aContent);
|
||||
|
||||
/**
|
||||
* If this document is in a content process return the object responsible for
|
||||
* communicating with the main process for it.
|
||||
*/
|
||||
DocAccessibleChild* IPCDoc() const { return mIPCDoc; }
|
||||
|
||||
protected:
|
||||
virtual ~DocAccessible();
|
||||
|
||||
@ -525,6 +519,12 @@ protected:
|
||||
*/
|
||||
bool IsLoadEventTarget() const;
|
||||
|
||||
/**
|
||||
* If this document is in a content process return the object responsible for
|
||||
* communicating with the main process for it.
|
||||
*/
|
||||
DocAccessibleChild* IPCDoc() const { return mIPCDoc; }
|
||||
|
||||
/*
|
||||
* Set the object responsible for communicating with the main process on
|
||||
* behalf of this document.
|
||||
|
@ -151,23 +151,6 @@ DocAccessibleParent::RecvCaretMoveEvent(const uint64_t& aID, const int32_t& aOff
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleParent::RecvTextChangeEvent(const uint64_t& aID,
|
||||
const nsString& aStr,
|
||||
const int32_t& aStart,
|
||||
const uint32_t& aLen,
|
||||
const bool& aIsInsert,
|
||||
const bool& aFromUser)
|
||||
{
|
||||
ProxyAccessible* target = GetAccessible(aID);
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
ProxyTextChangeEvent(target, aStr, aStart, aLen, aIsInsert, aFromUser);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleParent::RecvBindChildDoc(PDocAccessibleParent* aChildDoc, const uint64_t& aID)
|
||||
{
|
||||
|
@ -51,11 +51,6 @@ public:
|
||||
virtual bool RecvCaretMoveEvent(const uint64_t& aID, const int32_t& aOffset)
|
||||
override final;
|
||||
|
||||
virtual bool RecvTextChangeEvent(const uint64_t& aID, const nsString& aStr,
|
||||
const int32_t& aStart, const uint32_t& aLen,
|
||||
const bool& aIsInsert,
|
||||
const bool& aFromUser) override;
|
||||
|
||||
virtual bool RecvBindChildDoc(PDocAccessibleParent* aChildDoc, const uint64_t& aID) override;
|
||||
void Unbind()
|
||||
{
|
||||
|
@ -59,8 +59,6 @@ parent:
|
||||
HideEvent(uint64_t aRootID);
|
||||
StateChangeEvent(uint64_t aID, uint64_t aState, bool aEnabled);
|
||||
CaretMoveEvent(uint64_t aID, int32_t aOffset);
|
||||
TextChangeEvent(uint64_t aID, nsString aStr, int32_t aStart, uint32_t aLen,
|
||||
bool aIsInsert, bool aFromUser);
|
||||
|
||||
/*
|
||||
* Tell the parent document to bind the existing document as a new child
|
||||
|
@ -83,11 +83,6 @@ ProxyCaretMoveEvent(ProxyAccessible* aTarget, int32_t aOffset)
|
||||
[wrapper selectedTextDidChange];
|
||||
}
|
||||
|
||||
void
|
||||
ProxyTextChangeEvent(ProxyAccessible*, const nsString&, int32_t, uint32_t,
|
||||
bool, bool)
|
||||
{
|
||||
}
|
||||
} // namespace a11y
|
||||
} // namespace mozilla
|
||||
|
||||
|
@ -43,9 +43,3 @@ void
|
||||
a11y::ProxyCaretMoveEvent(ProxyAccessible* aTarget, int32_t aOffset)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
a11y::ProxyTextChangeEvent(ProxyAccessible*, const nsString&, int32_t, uint32_t,
|
||||
bool, bool)
|
||||
{
|
||||
}
|
||||
|
@ -68,9 +68,3 @@ void
|
||||
a11y::ProxyCaretMoveEvent(ProxyAccessible* aTarget, int32_t aOffset)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
a11y::ProxyTextChangeEvent(ProxyAccessible*, const nsString&, int32_t, uint32_t,
|
||||
bool, bool)
|
||||
{
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user