Re: Firefox 56+ : IAccessible.accNavigate(NAVRELATION_EMBEDS) fails with 0x80004005 (E_FAIL)
James Teh <[email protected]> Wed, 29 Nov 2017 18:08:19 +1000
| Newsgroups | gmane.comp.mozilla.accessibility |
|---|---|
| Message-ID | <[email protected]> |
Deleting the pref should be fine if that's the only thing you did. That does lead me to wonder why your results were different yesterday, though. Perhaps there was some confusion regarding the difference with multiple tabs? I'll investigate multiple tabs some time soon. I thought I'd already investigated this and wasn't able to reproduce, but I'll do some more isolated testing. Sent from a mobile device > On 29 Nov 2017, at 5:41 pm, Sylvain Werdefroy <[email protected]> wrote: > > Tests above where run with: > browser.tabs.remote.force-enable=true > > After deleting this pref, result is the same. > > How to be sure I'm using a clean profile? (I'll try later today after uninstalling Firefox & Firefox Developer Edition and reinstall only the last one) > >> On Wed, Nov 29, 2017 at 8:32 AM, James Teh <[email protected]> wrote: >> Were you setting the pref to force enable remote accessibility or to disable it? Those prefs are no longer necessary. Multi-process accessibility is now enabled by default. It'd be good if you can re-run these tests with a clean profile and no prefs changed. >> >> >> Sent from a mobile device >> >>> On 29 Nov 2017, at 5:25 pm, Sylvain Werdefroy <[email protected]> wrote: >>> >>> Hi Jamie, >>> >>> Thanks for the test case! >>> >>> First of all: as my Firefox 58 was freshly reinstalled on my computer, the browser.tabs.remote.force-enable was not configured, that's why the test I ran yesterday failed... sorry for that. >>> >>> Now here are the results: >>> >>> Open Firefox and load example.com in the 1st tab: >>> Window 0003086A >>> accNavigate result -2147467259 >>> accNavigate result 0 >>> >>> Test passed! >>> >>> But now try to open a 2nd tab, load example.com in this tab, close the 1st one, run the test case: >>> Window 0003086A >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> >>> It seems to be a problem with multiple tabs... for example this test case always fails: >>> >>> Open Firefox, open a 2nd tab, example.com in this tab, close the 1st one, run the test case: >>> Window 000E08BE >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> >>> And this one fails randomly: >>> >>> Open Firefox, open a 2nd tab, example.com in this tab, run the test case: >>> >>> Sometimes it fails: >>> Window 00120890 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> accNavigate result -2147467259 >>> >>> Somtimes it succeeds: >>> Window 00110338 >>> accNavigate result -2147467259 >>> accNavigate result 0 >>> >>> Please note my Firefox version has been upgraded, I now run a 58.0b7. >>> >>> Sylvain >>> >>>> On Wed, Nov 29, 2017 at 3:12 AM, James Teh <[email protected]> wrote: >>>> Hi Sylvain, >>>> >>>> I can't reproduce this in Windows 10 with Firefox 58b6 64 bit. I wrote my own complete test case so we can test with exactly the same code. It'd be great if you could compile the following C++ code. Then, start Firefox, load example.com and run the test case. Here's the code: >>>> >>>> --- >>>> >>>> // embeds.cpp: Test NAVRELATION_EMBEDS. >>>> // Compile with: >>>> // cl /EHsc embeds.cpp user32.lib oleacc.lib ole32.lib oleaut32.lib >>>> >>>> #include <windows.h> >>>> #include <oleacc.h> >>>> #include <iostream> >>>> >>>> using namespace std; >>>> >>>> // Tweak as needed to find the Firefox window. >>>> // This title works if using a Firefox release >>>> // with example.com loaded in the active tab. >>>> const char WINDOW_TITLE[] = "Example Domain - Mozilla Firefox"; >>>> >>>> const long NAVRELATION_EMBEDS = 0x1009; >>>> >>>> int main() >>>> { >>>> CoInitialize(NULL); >>>> HWND window = FindWindow("MozillaWindowClass", WINDOW_TITLE); >>>> cout << "Window " << window << endl; >>>> if (!window) { >>>> cout << "Failed to get window" << endl; >>>> return 1; >>>> } >>>> IAccessible* rootAcc; >>>> HRESULT hr = AccessibleObjectFromWindow(window, OBJID_CLIENT, >>>> IID_IAccessible, (void**)&rootAcc); >>>> if (FAILED(hr)) { >>>> cout << "AccessibleObjectFromWindow failed with " << hr << endl; >>>> return 1; >>>> } >>>> VARIANT child; >>>> child.vt = VT_I4; >>>> child.lVal = CHILDID_SELF; >>>> VARIANT target; >>>> for (int i = 0; i < 5; ++i) { >>>> hr = rootAcc->accNavigate(NAVRELATION_EMBEDS, child, &target); >>>> cout << "accNavigate result " << hr << endl; >>>> if (hr == S_OK) { >>>> target.pdispVal->Release(); >>>> break; >>>> } >>>> Sleep(1000); >>>> } >>>> rootAcc->Release(); >>>> } >>>> >>>> --- >>>> >>>> When I do this, I get the following: >>>> >>>> Window 006F0AFE >>>> accNavigate result -2147467259 >>>> accNavigate result 0 >>>> >>>> So, the first try fails, but the second succeeds. >>>> >>>> Jamie >>>> >>>>> On Wed, Nov 29, 2017 at 2:12 AM, <[email protected]> wrote: >>>>> Hi Jamie, >>>>> >>>>> Thanks for your answer. Unfortunately, this does not fix the problem, including when focusing the Firefox window before calling accNavigate(). >>>>> >>>>> Here is my source code: >>>>> // w is the main Firefox window handle ("MozillaWindowClass") >>>>> hr=AccessibleObjectFromWindow(w,(DWORD)OBJID_CLIENT,IID_IAccessible,(void**)&pAccessible); >>>>> if (FAILED(hr)) { TRACE((TRACE_ERROR,_F_,"AccessibleObjectFromWindow(IID_IAccessible)=0x%08lx",hr)); goto end; } >>>>> >>>>> for (int i=0;i<50;i++) // test every second >>>>> { >>>>> hr=pAccessible->accNavigate(0x1009,vtMe,&vtResult); // NAVRELATION_EMBEDS = 0x1009 >>>>> TRACE((TRACE_DEBUG,_F_,"accNavigate(NAVRELATION_EMBEDS)=0x%08lx",hr)); >>>>> if (hr==S_OK) break; >>>>> Sleep(1000); >>>>> } >>>>> >>>>> And the result is: >>>>> 28/11-16:36:55:949 accNavigate(NAVRELATION_EMBEDS)=0x80004005 >>>>> 28/11-16:36:56:955 accNavigate(NAVRELATION_EMBEDS)=0x80004005 >>>>> 28/11-16:36:57:959 accNavigate(NAVRELATION_EMBEDS)=0x80004005 >>>>> 28/11-16:36:58:965 accNavigate(NAVRELATION_EMBEDS)=0x80004005 >>>>> 28/11-16:36:59:969 accNavigate(NAVRELATION_EMBEDS)=0x80004005 >>>>> ... >>>>> >>>>> My testing environment is Windows 10 (10.0.15063) and Firefox 58.0b6 (64 bits). >>>>> >>>>> Thanks! >>>>> >>>>> Sylvain >>>>> _______________________________________________ >>>>> dev-accessibility mailing list >>>>> [email protected] >>>>> https://lists.mozilla.org/listinfo/dev-accessibility >>>> >>> >