Closed
Bug 1234121
Opened 9 years ago
Closed 3 years ago
Cache active item from child process in parent and remove sync call for FocusedChild
Categories
(Core :: Disability Access APIs, task)
Core
Disability Access APIs
Tracking
()
RESOLVED
FIXED
105 Branch
Tracking | Status | |
---|---|---|
firefox105 | --- | fixed |
People
(Reporter: lsocks, Assigned: morgan)
References
Details
(Whiteboard: [ctw-m3])
Attachments
(4 files, 5 obsolete files)
No description provided.
Reporter | ||
Comment 1•9 years ago
|
||
I need to test this on a platform where focusedChild is actually requested, but do you think this is in the right direction?
Attachment #8700473 -
Flags: feedback?(tbsaunde+mozbugs)
Reporter | ||
Comment 2•9 years ago
|
||
Oops, ignore that printf.
Comment 3•9 years ago
|
||
(In reply to Lorien Hu (:lsocks) from comment #1)
> Created attachment 8700473 [details] [diff] [review]
> focusedchildcache
>
> I need to test this on a platform where focusedChild is actually requested,
> but do you think this is in the right direction?
Well, I'd start by caching what FocusManager::FocusedAccessible() returns. The testsuite should cover that part so you can test it that way.
Comment 4•9 years ago
|
||
Comment on attachment 8700473 [details] [diff] [review]
focusedchildcache
>+FocusManager::FocusedRemoteChild() const
>+{
>+ if (mActiveRemoteItem) {
>+ return mActiveRemoteItem;
>+ }
>+
>+ return nullptr;
that's a overly complicated way of saying return mActiveRemoteItem; However in light of my previous comment you might not want to do this part at all.
>+++ b/accessible/generic/Accessible.cpp
>@@ -859,16 +859,19 @@ Accessible::HandleAccEvent(AccEvent* aEv
>+ case nsIAccessibleEvent::EVENT_FOCUS:
>+ ipcDoc->SendFocusEvent(id);
I don't see the need for this, you can just add some code specific to focus events to DocAccessibleParent::RecvEvent()
> ProxyAccessible::FocusedChild()
> {
>- uint64_t childID = 0;
>- bool ok = false;
>- Unused << mDoc->SendFocusedChild(mID, &childID, &ok);
>- return ok ? mDoc->GetAccessible(childID) : nullptr;
>+ ProxyAccessible* focus = FocusMgr()->FocusedRemoteChild();
>+ if (focus && (focus == this || focus->Parent() == this)) {
>+ printf("Returned focused child %llu\n", focus->mID);
>+ return focus;
>+ }
This doesn't handle the case the proxy is a document with its special handling of this method.
Attachment #8700473 -
Flags: feedback?(tbsaunde+mozbugs)
Reporter | ||
Updated•9 years ago
|
Assignee: nobody → lorien
Reporter | ||
Comment 5•9 years ago
|
||
Attachment #8700473 -
Attachment is obsolete: true
Attachment #8703223 -
Flags: review?(tbsaunde+mozbugs)
Comment 6•9 years ago
|
||
Comment on attachment 8703223 [details] [diff] [review]
remove sync calls for focusedchild
sorry about the lag, I ended up not working over the holidays.
> FocusManager::FocusedAccessible() const
> {
> if (mActiveItem)
> return mActiveItem;
can you get rid of this check?
>- }
>+ return mFocusedAcc;
seems simple enough to make inline
>+FocusManager::FocusedRemoteChild() const
>+{
>+ return mFocusedOrActiveProxy;
same
>+FocusManager::RemoteFocusChanged(ProxyAccessible* aProxy)
>+{
>+ // Either active item or DOM focused proxy, we don't care
>+ // which it is for the child process
>+ mFocusedOrActiveProxy = aProxy;
same
>+ return;
not needed
>@@ -251,16 +259,19 @@ FocusManager::ProcessDOMFocus(nsINode* a
> if (!focusedNode)
> return;
>
> Accessible* DOMFocus =
> document->GetAccessibleEvenIfNotInMapOrContainer(focusedNode);
> if (target != DOMFocus)
> return;
>
>+ // Cache DOM focused accessible
>+ mFocusedAcc = target;
it seems better to do this in ProcessFocusEvent() so the timing is similar to what happens for remote focus events
> RefPtr<Accessible> mActiveItem;
>+ RefPtr<Accessible> mFocusedAcc;
>+ ProxyAccessible* mFocusedOrActiveProxy;
I'd just name it mFocusedProxy we also need to investigate what exactly happens when focus shifts from the child process to the parent, and back.
>+ const ProxyAccessible* FocusedChild()
>+ { return FocusMgr()->FocusedRemoteChild(); }
unused
> ProxyAccessible::FocusedChild()
> {
>- uint64_t childID = 0;
>- bool ok = false;
>- Unused << mDoc->SendFocusedChild(mID, &childID, &ok);
>- return ok ? mDoc->GetAccessible(childID) : nullptr;
>+ ProxyAccessible* focus = FocusMgr()->FocusedRemoteChild();
>+ if (focus && (focus == this || focus->Parent() == this)) {
>+ return focus;
>+ }
>+
>+ return nullptr;
you need to consider the case this is a document
Attachment #8703223 -
Flags: review?(tbsaunde+mozbugs)
Reporter | ||
Comment 7•9 years ago
|
||
Attachment #8703223 -
Attachment is obsolete: true
Attachment #8706186 -
Flags: review?(tbsaunde+mozbugs)
Comment 8•9 years ago
|
||
Comment on attachment 8706186 [details] [diff] [review]
updated focus patch
>@@ -289,16 +288,18 @@ FocusManager::ProcessFocusEvent(AccEvent
> if (target != DOMFocus)
> return;
>
> Accessible* activeItem = target->CurrentItem();
> if (activeItem) {
> mActiveItem = activeItem;
> target = activeItem;
> }
>+
>+ mFocusedAcc = target;
why is this guarded by a check target != mActiveItem?
>+ inline Accessible* FocusedAccessible() const
inline keyword is redundant
>+ { return mFocusedAcc; }
I think that fits on the previous line
>+
>+ /**
>+ * Return remote focused accessible.
>+ */
>+ inline ProxyAccessible* FocusedRemoteChild() const
>+ { return mFocusedProxy; }
same on both counts
> /**
>+ * Called when focused item in child process is changed.
>+ */
>+ // Either active item or DOM focused proxy, we don't care
>+ // which it is for the child process
this comment is weirdly formatted. I'd probably just skip the second part the active item idea feels like its internal to focus tracking not this, and I wonder if we could actually remove mActiveItem now
>+ inline void RemoteFocusChanged(ProxyAccessible* aProxy)
>+ { mFocusedProxy = aProxy; }
remove inline and one line.
> private:
> RefPtr<Accessible> mActiveItem;
>+ RefPtr<Accessible> mFocusedAcc;
>+ ProxyAccessible* mFocusedProxy;
> RefPtr<Accessible> mActiveARIAMenubar;
it kind of seems like mActiveMenuBar and mActiveItem logically belong together, but it hardly matters.
>+ switch(aEventType) {
>+ case nsIAccessibleEvent::EVENT_FOCUS:
>+ FocusMgr()->RemoteFocusChanged(proxy);
>+ break;
>+ }
probably best to have an explicit default
>+ ProxyAccessible* focus = FocusMgr()->FocusedRemoteChild();
>+ if (IsDoc() || (focus && (focus == this || focus->Parent() == this))) {
nit, it'd be easier to read that if it was multiple conditions
Reporter | ||
Comment 9•9 years ago
|
||
Attachment #8706186 -
Attachment is obsolete: true
Attachment #8706186 -
Flags: review?(tbsaunde+mozbugs)
Attachment #8723184 -
Flags: review?(tbsaunde+mozbugs)
Comment 10•9 years ago
|
||
Comment on attachment 8723184 [details] [diff] [review]
updated focus patch 2
Sorry, but thinking about this again I realized you need to add a check to ProxyAccessible::Shutdown() to make sure we don't shutdown a proxy with the focus manager still pointing at it.
>
> // If active item is changed then fire accessible focus event on it, otherwise
> // if there's no an active item then fire focus event to accessible having
> // DOM focus.
>- Accessible* target = FocusedAccessible();
>- if (target)
>+
extra blank line
> Accessible* activeItem = target->CurrentItem();
> if (activeItem) {
> mActiveItem = activeItem;
> target = activeItem;
> }
> }
>
>+ mFocusedAcc = target;
seems like it would be good to make mFocusedProxy null here?
>+ ProxyAccessible* FocusedRemoteChild() const { return mFocusedProxy; }
FocusedRemoteAccessible() makes more sense since its not a child of anything?
Attachment #8723184 -
Flags: review?(tbsaunde+mozbugs)
Reporter | ||
Comment 11•9 years ago
|
||
(In reply to Trevor Saunders (:tbsaunde) from comment #10)
> Comment on attachment 8723184 [details] [diff] [review]
> updated focus patch 2
>
> Sorry, but thinking about this again I realized you need to add a check to
> ProxyAccessible::Shutdown() to make sure we don't shutdown a proxy with the
> focus manager still pointing at it.
Wouldn't it be better to just set the focus manager to point to null? It doesn't seem to quite make sense for focus to stay on something if we've received a hide event for it, and especially not if its parent is getting shutdown.
Reporter | ||
Comment 12•9 years ago
|
||
Attachment #8724633 -
Flags: feedback?(tbsaunde+mozbugs)
Reporter | ||
Updated•9 years ago
|
Attachment #8724633 -
Flags: feedback?(tbsaunde+mozbugs)
Reporter | ||
Comment 13•9 years ago
|
||
Scratch that last patch.
Comment 14•9 years ago
|
||
(In reply to Lorien Hu (:lsocks) from comment #11)
> (In reply to Trevor Saunders (:tbsaunde) from comment #10)
> > Comment on attachment 8723184 [details] [diff] [review]
> > updated focus patch 2
> >
> > Sorry, but thinking about this again I realized you need to add a check to
> > ProxyAccessible::Shutdown() to make sure we don't shutdown a proxy with the
> > focus manager still pointing at it.
>
> Wouldn't it be better to just set the focus manager to point to null? It
> doesn't seem to quite make sense for focus to stay on something if we've
> received a hide event for it, and especially not if its parent is getting
> shutdown.
I guess I wasn't clear, that's what I was saying to do.
Reporter | ||
Comment 15•9 years ago
|
||
Attachment #8723184 -
Attachment is obsolete: true
Attachment #8724843 -
Flags: review?(tbsaunde+mozbugs)
Reporter | ||
Comment 16•9 years ago
|
||
Attachment #8724633 -
Attachment is obsolete: true
Attachment #8724844 -
Flags: review?(tbsaunde+mozbugs)
Comment 17•9 years ago
|
||
Comment on attachment 8724843 [details] [diff] [review]
p1
> FocusManager::IsFocused(const Accessible* aAccessible) const
> {
>+ return aAccessible == mFocusedAcc;
might as well be inline now right?
Attachment #8724843 -
Flags: review?(tbsaunde+mozbugs) → review+
Comment 18•9 years ago
|
||
Comment on attachment 8724844 [details] [diff] [review]
p2
The split of these patches seems wierd, since this one is fixing a bug in the first. I'd think the natural way to do things is first change the focus manager stuff and then have another patch for the proxy stuff, but I guess landing these as one patch is fine.
>+void
>+FocusManager::ResetFocusedAccessible()
>+{
>+ mFocusedAcc = nullptr;
>+ mFocusedProxy = nullptr;
probably wouldn't hurt to make it inline
> mContent = nullptr;
> mDoc = nullptr;
> if (SelectionMgr() && SelectionMgr()->AccessibleWithCaret(nullptr) == this)
> SelectionMgr()->ResetCaretOffset();
>+
>+ if (this == FocusedChild()) {
>+ FocusMgr()->ResetFocusedAccessible();
you should use IsFocused(), and I'm not sure this is needed, but I guess it doesn't hurt.
> if (mChildren.Length() != 1)
> MOZ_CRASH("outer doc doesn't own adoc!");
>
> mChildren[0]->AsDoc()->Unbind();
> }
>
>+ if (this == FocusedChild()) {
>+ FocusMgr()->ResetFocusedAccessible();
I guess you don't have IsFocused() here, but you could just do FocusManager()->FocusedRemoteAccessible() == this
Attachment #8724844 -
Flags: review?(tbsaunde+mozbugs) → review+
Comment 19•9 years ago
|
||
![]() |
||
Comment 20•9 years ago
|
||
Backed out for Marionette-e10s crashes on Linux in test_accessibility.py TestAccessibility.test_click_raises_no_exceptions:
https://hg.mozilla.org/integration/mozilla-inbound/rev/e17e914479ba
https://hg.mozilla.org/integration/mozilla-inbound/rev/0c5141a1d8d9
Push with failures: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=071d44d633eaf4b6981ec86fa87e8c8c538be762
Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=25342200&repo=mozilla-inbound
04:57:28 INFO - TEST-START | test_accessibility.py TestAccessibility.test_click_raises_element_not_accessible
04:57:31 INFO - TEST-PASS | test_accessibility.py TestAccessibility.test_click_raises_element_not_accessible | took 3128ms
04:57:31 INFO - TEST-START | test_accessibility.py TestAccessibility.test_click_raises_no_exceptions
04:57:32 INFO - mozcrash Downloading symbols from: https://queue.taskcluster.net/v1/task/dqy2jcQATwilwBhZ3bSzKw/artifacts/public/build/firefox-48.0a1.en-US.linux-x86_64.crashreporter-symbols.zip
04:57:38 INFO - mozcrash Copy/paste: /builds/slave/test/build/linux64-minidump_stackwalk /tmp/tmpdnWK3U.mozrunner/minidumps/03acc87b-56b7-14ce-0580e070-423db052.dmp /tmp/tmpAjIJEl
04:57:51 INFO - mozcrash Saved minidump as /builds/slave/test/build/blobber_upload_dir/03acc87b-56b7-14ce-0580e070-423db052.dmp
04:57:51 INFO - mozcrash Saved app info as /builds/slave/test/build/blobber_upload_dir/03acc87b-56b7-14ce-0580e070-423db052.extra
04:57:51 ERROR - PROCESS-CRASH | runner.py | application crashed [@ mozilla::a11y::DocAccessibleParent::RecvEvent]
04:57:51 INFO - Crash dump filename: /tmp/tmpdnWK3U.mozrunner/minidumps/03acc87b-56b7-14ce-0580e070-423db052.dmp
04:57:51 INFO - Operating system: Linux
04:57:51 INFO - 0.0.0 Linux 3.2.0-76-generic #111-Ubuntu SMP Tue Jan 13 22:16:09 UTC 2015 x86_64
04:57:51 INFO - CPU: amd64
04:57:51 INFO - family 6 model 62 stepping 4
04:57:51 INFO - 1 CPU
04:57:51 INFO - Crash reason: SIGSEGV
04:57:51 INFO - Crash address: 0x10
04:57:51 INFO - Process uptime: not available
04:57:51 INFO - Thread 0 (crashed)
04:57:51 INFO - 0 libxul.so!mozilla::a11y::DocAccessibleParent::RecvEvent [FocusManager.h:071d44d633ea : 105 + 0x0]
04:57:51 INFO - rax = 0x0000000000000000 rdx = 0x0000000000000000
04:57:51 INFO - rcx = 0x0000000000000078 rbx = 0x00007f5a9c298690
04:57:51 INFO - rsi = 0x0000000000000000 rdi = 0x00007f5a9c298660
04:57:51 INFO - rbp = 0x00007fff435b9ad0 rsp = 0x00007fff435b9a90
04:57:51 INFO - r8 = 0x00007f5a90df882c r9 = 0x0000000000000701
04:57:51 INFO - r10 = 0x00007f5a90df8040 r11 = 0x0000000000000246
04:57:51 INFO - r12 = 0x00007fff435b9b20 r13 = 0x00007f5a9c298660
04:57:51 INFO - r14 = 0x00007fff435b9b38 r15 = 0x00007fff435b9b20
04:57:51 INFO - rip = 0x00007f5ac603c663
04:57:51 INFO - Found by: given as instruction pointer in context
04:57:51 INFO - 1 libxul.so!mozilla::a11y::PDocAccessibleParent::OnMessageReceived [PDocAccessibleParent.cpp:071d44d633ea : 5482 + 0x6]
04:57:51 INFO - rbx = 0x0000000000000000 rbp = 0x00007fff435b9b80
04:57:51 INFO - rsp = 0x00007fff435b9ae0 r12 = 0x00007fff435b9b30
04:57:51 INFO - r13 = 0x00007fff435b9b28 r14 = 0x00007fff435b9b38
04:57:51 INFO - r15 = 0x00007fff435b9b20 rip = 0x00007f5ac4cba05a
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 2 libxul.so!mozilla::dom::PContentParent::OnMessageReceived [PContentParent.cpp:071d44d633ea : 3808 + 0xc]
04:57:51 INFO - rbx = 0x00007fff435b9f00 rbp = 0x00007fff435b9dd0
04:57:51 INFO - rsp = 0x00007fff435b9b90 r12 = 0x00007fff435b9f00
04:57:51 INFO - r13 = 0x0000000000000001 r14 = 0x00007f5a9c2a4000
04:57:51 INFO - r15 = 0x0000000000000006 rip = 0x00007f5ac4c97c69
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 3 libxul.so!mozilla::ipc::MessageChannel::DispatchAsyncMessage [MessageChannel.cpp:071d44d633ea : 1646 + 0x6]
04:57:51 INFO - rbx = 0x00007f5a9c2a4068 rbp = 0x00007fff435b9e10
04:57:51 INFO - rsp = 0x00007fff435b9de0 r12 = 0x00007fff435b9f00
04:57:51 INFO - r13 = 0x0000000000000001 r14 = 0x00007fff435b9e00
04:57:51 INFO - r15 = 0x0000000000000000 rip = 0x00007f5ac4adfffb
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 4 libxul.so!mozilla::ipc::MessageChannel::DispatchMessage [MessageChannel.cpp:071d44d633ea : 1584 + 0xb]
04:57:51 INFO - rbx = 0x00007fff435b9f00 rbp = 0x00007fff435b9ee0
04:57:51 INFO - rsp = 0x00007fff435b9e20 r12 = 0x00007f5a9c2a4068
04:57:51 INFO - r13 = 0x00007fff435b9e30 r14 = 0x00007fff435b9e40
04:57:51 INFO - r15 = 0x00007fff435b9e38 rip = 0x00007f5ac4ae75e8
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 5 libxul.so!mozilla::ipc::MessageChannel::OnMaybeDequeueOne [MessageChannel.cpp:071d44d633ea : 1551 + 0xb]
04:57:51 INFO - rbx = 0x00007fff435b9f00 rbp = 0x00007fff435b9f50
04:57:51 INFO - rsp = 0x00007fff435b9ef0 r12 = 0x00007f5a9c2a4068
04:57:51 INFO - r13 = 0x00007fff435ba001 r14 = 0x0000000000000000
04:57:51 INFO - r15 = 0x00007fff435ba09f rip = 0x00007f5ac4ae93ef
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 6 libxul.so!MessageLoop::RunTask [message_loop.cc:071d44d633ea : 349 + 0x9]
04:57:51 INFO - rbx = 0x00007f5a9178bee0 rbp = 0x00007fff435b9f70
04:57:51 INFO - rsp = 0x00007fff435b9f60 r12 = 0x00007f5ac1406bc0
04:57:51 INFO - r13 = 0x00007fff435ba001 r14 = 0x0000000000000000
04:57:51 INFO - r15 = 0x00007fff435ba09f rip = 0x00007f5ac4ac7ae5
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 7 libxul.so!MessageLoop::DeferOrRunPendingTask [message_loop.cc:071d44d633ea : 357 + 0x5]
04:57:51 INFO - rbx = 0x00007f5ac1406b01 rbp = 0x00007fff435b9f90
04:57:51 INFO - rsp = 0x00007fff435b9f80 r12 = 0x00007fff435b9fa8
04:57:51 INFO - r13 = 0x00007fff435ba001 r14 = 0x0000000000000000
04:57:51 INFO - r15 = 0x00007fff435ba09f rip = 0x00007f5ac4acca1c
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 8 libxul.so!MessageLoop::DoWork [message_loop.cc:071d44d633ea : 444 + 0x5]
04:57:51 INFO - rbx = 0x00007f5ac1406bc0 rbp = 0x00007fff435b9fe0
04:57:51 INFO - rsp = 0x00007fff435b9fa0 r12 = 0x00007fff435b9fa8
04:57:51 INFO - r13 = 0x00007fff435ba001 r14 = 0x0000000000000000
04:57:51 INFO - r15 = 0x00007fff435ba09f rip = 0x00007f5ac4accb33
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 9 libxul.so!mozilla::ipc::DoWorkRunnable::Run [MessagePump.cpp:071d44d633ea : 227 + 0x9]
04:57:51 INFO - rbx = 0x00007f5ac1406bc0 rbp = 0x00007fff435ba000
04:57:51 INFO - rsp = 0x00007fff435b9ff0 r12 = 0x00007fff435ba001
04:57:51 INFO - r13 = 0x00007fff435ba038 r14 = 0x0000000000000000
04:57:51 INFO - r15 = 0x00007fff435ba09f rip = 0x00007f5ac4adbb62
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 10 libxul.so!nsThread::ProcessNextEvent [nsThread.cpp:071d44d633ea : 994 + 0x6]
04:57:51 INFO - rbx = 0x00007f5acf347b70 rbp = 0x00007fff435ba080
04:57:51 INFO - rsp = 0x00007fff435ba010 r12 = 0x00007fff435ba028
04:57:51 INFO - r13 = 0x00007fff435ba038 r14 = 0x0000000000000000
04:57:51 INFO - r15 = 0x00007fff435ba09f rip = 0x00007f5ac481318d
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 11 libxul.so!NS_ProcessNextEvent [nsThreadUtils.cpp:071d44d633ea : 297 + 0xd]
04:57:51 INFO - rbx = 0x0000000000000000 rbp = 0x00007fff435ba0b0
04:57:51 INFO - rsp = 0x00007fff435ba090 r12 = 0x00007f5ac1406bc0
04:57:51 INFO - r13 = 0x00007f5acf347b70 r14 = 0x00007fff435ba401
04:57:51 INFO - r15 = 0x00007f5acf3f3c20 rip = 0x00007f5ac482cc9a
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 12 libxul.so!mozilla::ipc::MessagePump::Run [MessagePump.cpp:071d44d633ea : 98 + 0xa]
04:57:51 INFO - rbx = 0x00007f5acf3f3c00 rbp = 0x00007fff435ba110
04:57:51 INFO - rsp = 0x00007fff435ba0c0 r12 = 0x00007f5ac1406bc0
04:57:51 INFO - r13 = 0x00007f5acf347b70 r14 = 0x00007fff435ba401
04:57:51 INFO - r15 = 0x00007f5acf3f3c20 rip = 0x00007f5ac4adc4a6
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 13 libxul.so!MessageLoop::Run [message_loop.cc:071d44d633ea : 223 + 0x8]
04:57:51 INFO - rbx = 0x00007f5ac1406bc0 rbp = 0x00007fff435ba150
04:57:51 INFO - rsp = 0x00007fff435ba120 r12 = 0x00007f5acf347b70
04:57:51 INFO - r13 = 0x00007fff435ba340 r14 = 0x00007fff435ba4a1
04:57:51 INFO - r15 = 0x00007fff435ba210 rip = 0x00007f5ac4ac7b50
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 14 libxul.so!nsBaseAppShell::Run [nsBaseAppShell.cpp:071d44d633ea : 156 + 0xd]
04:57:51 INFO - rbx = 0x00007f5ab69ad9e0 rbp = 0x00007fff435ba170
04:57:51 INFO - rsp = 0x00007fff435ba160 r12 = 0x00007f5acf347b70
04:57:51 INFO - r13 = 0x00007fff435ba340 r14 = 0x00007fff435ba4a1
04:57:51 INFO - r15 = 0x00007fff435ba210 rip = 0x00007f5ac5b72829
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 15 libxul.so!nsAppStartup::Run [nsAppStartup.cpp:071d44d633ea : 281 + 0x6]
04:57:51 INFO - rbx = 0x00007f5ab6933060 rbp = 0x00007fff435ba190
04:57:51 INFO - rsp = 0x00007fff435ba180 r12 = 0x00007fff435ba220
04:57:51 INFO - r13 = 0x00007fff435ba340 r14 = 0x00007fff435ba4a1
04:57:51 INFO - r15 = 0x00007fff435ba210 rip = 0x00007f5ac6165c01
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 16 libxul.so!XREMain::XRE_mainRun [nsAppRunner.cpp:071d44d633ea : 4340 + 0x6]
04:57:51 INFO - rbx = 0x00007fff435ba250 rbp = 0x00007fff435ba2e0
04:57:51 INFO - rsp = 0x00007fff435ba1a0 r12 = 0x00007fff435ba220
04:57:51 INFO - r13 = 0x00007fff435ba340 r14 = 0x00007fff435ba4a1
04:57:51 INFO - r15 = 0x00007fff435ba210 rip = 0x00007f5ac619c2ec
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 17 libxul.so!XREMain::XRE_main [nsAppRunner.cpp:071d44d633ea : 4437 + 0x5]
04:57:51 INFO - rbx = 0x00007fff435ba340 rbp = 0x00007fff435ba320
04:57:51 INFO - rsp = 0x00007fff435ba2f0 r12 = 0x0000000000000000
04:57:51 INFO - r13 = 0x0000000000000000 r14 = 0x0000000000000005
04:57:51 INFO - r15 = 0x00007f5acf35b480 rip = 0x00007f5ac619c5b0
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 18 libxul.so!XRE_main [nsAppRunner.cpp:071d44d633ea : 4543 + 0x11]
04:57:51 INFO - rbx = 0x00007fff435ba340 rbp = 0x00007fff435ba4d0
04:57:51 INFO - rsp = 0x00007fff435ba330 r12 = 0x0000000000000005
04:57:51 INFO - r13 = 0x00007fff435bb7c8 r14 = 0x00007fff435ba540
04:57:51 INFO - r15 = 0x00007f5acf35b480 rip = 0x00007f5ac619c81d
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 19 firefox!do_main [nsBrowserApp.cpp:071d44d633ea : 220 + 0x6]
04:57:51 INFO - rbx = 0x00007fff435bb7c8 rbp = 0x00007fff435bb570
04:57:51 INFO - rsp = 0x00007fff435ba4e0 r12 = 0x0000000000000005
04:57:51 INFO - r13 = 0x00007fff435ba540 r14 = 0x00007f5acf35b6c0
04:57:51 INFO - r15 = 0x00007f5acf35b480 rip = 0x0000000000405cda
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 20 firefox!main [nsBrowserApp.cpp:071d44d633ea : 360 + 0x15]
04:57:51 INFO - rbx = 0x00007fff435bb7c8 rbp = 0x00007fff435bb6e0
04:57:51 INFO - rsp = 0x00007fff435bb580 r12 = 0x0000000000000005
04:57:51 INFO - r13 = 0x00007fff435bb7f8 r14 = 0x0000000000000000
04:57:51 INFO - r15 = 0x00000032851ef232 rip = 0x00000000004053a5
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 21 libc-2.15.so + 0x2176d
04:57:51 INFO - rbx = 0x0000000000000000 rbp = 0x0000000000000000
04:57:51 INFO - rsp = 0x00007fff435bb6f0 r12 = 0x0000000000405490
04:57:51 INFO - r13 = 0x00007fff435bb7c0 r14 = 0x0000000000000000
04:57:51 INFO - r15 = 0x0000000000000000 rip = 0x00007f5acf5a476d
04:57:51 INFO - Found by: call frame info
04:57:51 INFO - 22 firefox!init [replace_malloc.c:071d44d633ea : 133 + 0x2]
04:57:51 INFO - rsp = 0x00007fff435bb710 rip = 0x00000000004052f7
04:57:51 INFO - Found by: stack scanning
Flags: needinfo?(lorien)
I believe this also caused this Windows debug assertion in m(oth):
https://treeherder.mozilla.org/logviewer.html#?job_id=25350312&repo=mozilla-inbound
Reporter | ||
Comment 22•9 years ago
|
||
Marionette test failures are due to accessibility being enabled only in the child and not the parent, but DocAccessibleParents are still being created in the parent. Still looking into the Windows assertion failures.
Reporter | ||
Updated•9 years ago
|
Flags: needinfo?(lorien)
Comment 23•3 years ago
|
||
Bug 1738051 implements DocAccessibleParent::GetFocusedAcc which can be easily used to implement RemoteAccessibleBase::FocusedChild.
Updated•3 years ago
|
Whiteboard: [ctw-m3]
Comment 24•3 years ago
|
||
Here's what needs to be done here:
- Unify FocusedChild into base Accessible.
- In DocAccessible::FocusedChild, if FocusManager returns null, get the focused BrowserParent -> DocAccessibleParent and use GetFocusedAcc on that.
- Implement DocAccessibleParent::FocusedChild to get the RootAccessible and call FocusedChild on that.
- Implement RemoteAccessibleBase::FocusedChild to use Document()->GetFocusedAcc(). Ensure it is this or a direct child, otherwise return null.
- Unify/remove platform specific/XPCOM code for handling remote focus. For Windows, MsaaAccessible::get_accFocus can be tweaked, while MsaaRootAccessible::get_accFocus can be removed.
Assignee | ||
Updated•3 years ago
|
Assignee: nobody → mreschenberg
Assignee | ||
Comment 25•3 years ago
|
||
Depends on D153798
Updated•3 years ago
|
Attachment #9288881 -
Attachment description: WIP: Bug 1234121: Support unified focused child r?Jamie → Bug 1234121: Support unified focused child r?Jamie
Updated•3 years ago
|
Attachment #9288881 -
Attachment description: Bug 1234121: Support unified focused child r?Jamie → WIP: Bug 1234121: Support unified focused child r?Jamie
Updated•3 years ago
|
Attachment #9288881 -
Attachment description: WIP: Bug 1234121: Support unified focused child r?Jamie → Bug 1234121: Support unified focused child r?Jamie
Updated•3 years ago
|
Attachment #9288881 -
Attachment description: Bug 1234121: Support unified focused child r?Jamie → Bug 1234121: Add GetFrom method to DocAccessibleParent r?Jamie
Assignee | ||
Comment 26•3 years ago
|
||
Depends on D153997
Updated•3 years ago
|
Attachment #9288881 -
Attachment description: Bug 1234121: Add GetFrom method to DocAccessibleParent r?Jamie → Bug 1234121: Support retrieving a DocAccessibleParent from a BrowsingContext r?Jamie
Updated•3 years ago
|
Attachment #9288881 -
Attachment description: Bug 1234121: Support retrieving a DocAccessibleParent from a BrowsingContext r?Jamie → Bug 1234121: Add GetFrom method to DocAccessibleParent r?Jamie
Comment 27•3 years ago
|
||
Pushed by mreschenberg@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/bbdce3552ac6
Add GetFrom method to DocAccessibleParent r=Jamie
https://hg.mozilla.org/integration/autoland/rev/48933d8cec46
Unify FocusedChild() in Accessible base class r=Jamie
Comment 28•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/bbdce3552ac6
https://hg.mozilla.org/mozilla-central/rev/48933d8cec46
Status: NEW → RESOLVED
Closed: 3 years ago
status-firefox105:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → 105 Branch
You need to log in
before you can comment on or make changes to this bug.
Description
•