forked from mirrors/gecko-dev
Bug 1483911 - Defer scrolling events until after ipc doc construction. r=Jamie
This commit is contained in:
parent
e4f79e2a19
commit
57a25953a0
2 changed files with 53 additions and 0 deletions
|
|
@ -273,6 +273,26 @@ DocAccessibleChild::SendRoleChangedEvent(const a11y::role& aRole)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleChild::SendScrollingEvent(const uint64_t& aID,
|
||||
const uint64_t& aType,
|
||||
const uint32_t& aScrollX,
|
||||
const uint32_t& aScrollY,
|
||||
const uint32_t& aMaxScrollX,
|
||||
const uint32_t& aMaxScrollY)
|
||||
{
|
||||
if (IsConstructedInParentProcess()) {
|
||||
return PDocAccessibleChild::SendScrollingEvent(aID, aType,
|
||||
aScrollX, aScrollY,
|
||||
aMaxScrollX, aMaxScrollY);
|
||||
}
|
||||
|
||||
PushDeferredEvent(MakeUnique<SerializedScrolling>(this, aID, aType,
|
||||
aScrollX, aScrollY,
|
||||
aMaxScrollX, aMaxScrollY));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleChild::ConstructChildDocInParentProcess(
|
||||
DocAccessibleChild* aNewChildDoc,
|
||||
|
|
|
|||
|
|
@ -58,6 +58,10 @@ public:
|
|||
bool SendSelectionEvent(const uint64_t& aID, const uint64_t& aWidgetID,
|
||||
const uint32_t& aType);
|
||||
bool SendRoleChangedEvent(const a11y::role& aRole);
|
||||
bool SendScrollingEvent(const uint64_t& aID, const uint64_t& aType,
|
||||
const uint32_t& aScrollX, const uint32_t& aScrollY,
|
||||
const uint32_t& aMaxScrollX,
|
||||
const uint32_t& aMaxScrollY);
|
||||
|
||||
bool ConstructChildDocInParentProcess(DocAccessibleChild* aNewChildDoc,
|
||||
uint64_t aUniqueID, uint32_t aMsaaID);
|
||||
|
|
@ -269,6 +273,35 @@ private:
|
|||
a11y::role mRole;
|
||||
};
|
||||
|
||||
struct SerializedScrolling final : public DeferredEvent
|
||||
{
|
||||
explicit SerializedScrolling(DocAccessibleChild* aTarget,
|
||||
uint64_t aID, uint64_t aType,
|
||||
uint32_t aScrollX, uint32_t aScrollY,
|
||||
uint32_t aMaxScrollX, uint32_t aMaxScrollY)
|
||||
: DeferredEvent(aTarget)
|
||||
, mID(aID)
|
||||
, mType(aType)
|
||||
, mScrollX(aScrollX)
|
||||
, mScrollY(aScrollY)
|
||||
, mMaxScrollX(aMaxScrollX)
|
||||
, mMaxScrollY(aMaxScrollY)
|
||||
{}
|
||||
|
||||
void Dispatch(DocAccessibleChild* aIPCDoc) override
|
||||
{
|
||||
Unused << aIPCDoc->SendScrollingEvent(mID, mType, mScrollX, mScrollY,
|
||||
mMaxScrollX, mMaxScrollY);
|
||||
}
|
||||
|
||||
uint64_t mID;
|
||||
uint64_t mType;
|
||||
uint32_t mScrollX;
|
||||
uint32_t mScrollY;
|
||||
uint32_t mMaxScrollX;
|
||||
uint32_t mMaxScrollY;
|
||||
};
|
||||
|
||||
struct SerializedEvent final : public DeferredEvent
|
||||
{
|
||||
SerializedEvent(DocAccessibleChild* aTarget, uint64_t aID, uint32_t aType)
|
||||
|
|
|
|||
Loading…
Reference in a new issue