author | Trevor Saunders <tbsaunde@tbsaunde.org> |
Mon, 08 Jun 2015 13:06:27 -0400 | |
changeset 248343 | 4670d8b5090efcdba3e7009cc1a2a7e769f433ae |
parent 248342 | e8f6d1500adb3c757f2cef1b558f30c1d6621a82 |
child 248344 | 84dd29ab2ac6acc84ad53e34bc02a1599fa3fb0c |
push id | 28893 |
push user | kwierso@gmail.com |
push date | Fri, 12 Jun 2015 00:02:58 +0000 |
treeherder | autoland@8cf9d3e497f9 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | lsocks, davidb |
bugs | 1107337 |
milestone | 41.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/accessible/ipc/DocAccessibleChild.cpp +++ b/accessible/ipc/DocAccessibleChild.cpp @@ -1633,16 +1633,31 @@ DocAccessibleChild::RecvIndexOfEmbeddedC if (!parent || !child) return true; *aChildIdx = parent->GetIndexOfEmbeddedChild(child); return true; } bool +DocAccessibleChild::RecvEmbeddedChildAt(const uint64_t& aID, + const uint32_t& aIdx, + uint64_t* aChildID) +{ + *aChildID = 0; + + Accessible* acc = IdToAccessible(aID); + if (!acc) + return true; + + *aChildID = reinterpret_cast<uintptr_t>(acc->GetEmbeddedChildAt(aIdx)); + return true; +} + +bool DocAccessibleChild::RecvChildAtPoint(const uint64_t& aID, const int32_t& aX, const int32_t& aY, const uint32_t& aWhich, uint64_t* aChild, bool* aOk) { *aChild = 0;
--- a/accessible/ipc/DocAccessibleChild.h +++ b/accessible/ipc/DocAccessibleChild.h @@ -403,16 +403,19 @@ public: double* aStep) override; virtual bool RecvTakeFocus(const uint64_t& aID) override; virtual bool RecvIndexOfEmbeddedChild(const uint64_t& aID, const uint64_t& aChildID, uint32_t* aChildIdx) override final; + virtual bool RecvEmbeddedChildAt(const uint64_t& aID, const uint32_t& aIdx, + uint64_t* aChildID) override final; + virtual bool RecvChildAtPoint(const uint64_t& aID, const int32_t& aX, const int32_t& aY, const uint32_t& aWhich, uint64_t* aChild, bool* aOk) override; virtual bool RecvBounds(const uint64_t& aID, nsIntRect* aRect) override;
--- a/accessible/ipc/PDocAccessible.ipdl +++ b/accessible/ipc/PDocAccessible.ipdl @@ -213,16 +213,18 @@ child: prio(high) sync SetCurValue(uint64_t aID, double aValue) returns(bool aRetVal); prio(high) sync MinValue(uint64_t aID) returns(double aValue); prio(high) sync MaxValue(uint64_t aID) returns(double aValue); prio(high) sync Step(uint64_t aID) returns(double aStep); prio(high) sync TakeFocus(uint64_t aID); prio(high) sync IndexOfEmbeddedChild(uint64_t aID, uint64_t aChildID) returns(uint32_t childIdx); + prio(high) sync EmbeddedChildAt(uint64_t aID, uint32_t aChildIdx) + returns(uint64_t aChild); prio(high) sync ChildAtPoint(uint64_t aID, int32_t aX, int32_t aY, uint32_t aWhich) returns(uint64_t aChild, bool aOk); prio(high) sync Bounds(uint64_t aID) returns(nsIntRect aRect); prio(high) sync Language(uint64_t aID) returns(nsString aLocale); prio(high) sync DocType(uint64_t aID) returns(nsString aType); prio(high) sync URL(uint64_t aID) returns(nsString aURL); prio(high) sync MimeType(uint64_t aID) returns(nsString aMime);
--- a/accessible/ipc/ProxyAccessible.cpp +++ b/accessible/ipc/ProxyAccessible.cpp @@ -912,16 +912,24 @@ ProxyAccessible::IndexOfEmbeddedChild(co { uint64_t childID = aChild->mID; uint32_t childIdx; unused << mDoc->SendIndexOfEmbeddedChild(mID, childID, &childIdx); return childIdx; } ProxyAccessible* +ProxyAccessible::EmbeddedChildAt(size_t aChildIdx) +{ + uint64_t childID; + unused << mDoc->SendEmbeddedChildAt(mID, aChildIdx, &childID); + return mDoc->GetAccessible(childID); +} + +ProxyAccessible* ProxyAccessible::ChildAtPoint(int32_t aX, int32_t aY, Accessible::EWhichChildAtPoint aWhichChild) { uint64_t childID = 0; bool ok = false; unused << mDoc->SendChildAtPoint(mID, aX, aY, static_cast<uint32_t>(aWhichChild), &childID, &ok);
--- a/accessible/ipc/ProxyAccessible.h +++ b/accessible/ipc/ProxyAccessible.h @@ -44,16 +44,17 @@ public: { mChildren.InsertElementAt(aIdx, aChild); } uint32_t ChildrenCount() const { return mChildren.Length(); } ProxyAccessible* ChildAt(uint32_t aIdx) const { return mChildren[aIdx]; } // XXX evaluate if this is fast enough. size_t IndexInParent() const { return Parent()->mChildren.IndexOf(this); } int32_t IndexOfEmbeddedChild(const ProxyAccessible*); + ProxyAccessible* EmbeddedChildAt(size_t aChildIdx); bool MustPruneChildren() const; void Shutdown(); void SetChildDoc(DocAccessibleParent*); /** * Remove The given child.