author | Lorien Hu <lorien@lorienhu.com> |
Thu, 16 Jul 2015 17:34:51 -0400 | |
changeset 253398 | 6bacbe6ab496eb63d6ad329069c92c7110ffa7b8 |
parent 253397 | d28c3add8df3697aa2d115a4bfa91a3c2c1ea1b5 |
child 253399 | 728d627656ca061daa04c663025c3d92682391ca |
push id | 29065 |
push user | ryanvm@gmail.com |
push date | Fri, 17 Jul 2015 14:26:32 +0000 |
treeherder | mozilla-central@911935404233 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | tbsaunde |
bugs | 1171995 |
milestone | 42.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 @@ -1648,16 +1648,34 @@ DocAccessibleChild::RecvEmbeddedChildAt( if (!acc) return true; *aChildID = reinterpret_cast<uintptr_t>(acc->GetEmbeddedChildAt(aIdx)); return true; } bool +DocAccessibleChild::RecvFocusedChild(const uint64_t& aID, + uint64_t* aChild, + bool* aOk) +{ + *aChild = 0; + *aOk = false; + Accessible* acc = IdToAccessible(aID); + if (acc) { + Accessible* child = acc->FocusedChild(); + if (child) { + *aChild = reinterpret_cast<uint64_t>(child->UniqueID()); + *aOk = true; + } + } + 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 @@ -406,16 +406,20 @@ public: 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 RecvFocusedChild(const uint64_t& aID, + uint64_t* aChild, + bool* aOk) override; + 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 @@ -217,16 +217,18 @@ child: 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 FocusedChild(uint64_t aID) + returns(uint64_t aChild, bool aOk); 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 @@ -920,16 +920,25 @@ ProxyAccessible* ProxyAccessible::EmbeddedChildAt(size_t aChildIdx) { uint64_t childID; unused << mDoc->SendEmbeddedChildAt(mID, aChildIdx, &childID); return mDoc->GetAccessible(childID); } ProxyAccessible* +ProxyAccessible::FocusedChild() +{ + uint64_t childID = 0; + bool ok = false; + unused << mDoc->SendFocusedChild(mID, &childID, &ok); + return ok ? mDoc->GetAccessible(childID) : nullptr; +} + +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 @@ -272,16 +272,17 @@ public: double CurValue(); bool SetCurValue(double aValue); double MinValue(); double MaxValue(); double Step(); void TakeFocus(); + ProxyAccessible* FocusedChild(); ProxyAccessible* ChildAtPoint(int32_t aX, int32_t aY, Accessible::EWhichChildAtPoint aWhichChild); nsIntRect Bounds(); void Language(nsString& aLocale); void DocType(nsString& aType); void URL(nsString& aURL); void MimeType(nsString aMime);