Граф коммитов

78 Коммитов

Автор SHA1 Сообщение Дата
Aaron Klotz 4978c3cc95 Bug 1322532: Platform a11y changes to enable handler-based live regions; r=tbsaunde
MozReview-Commit-ID: nNPvBy3ZGO

--HG--
extra : rebase_source : 8c9f9e7a07e1e2268d922574273a3d65919513a7
2017-04-13 20:35:32 -06:00
Aaron Klotz 6302f1af4a Bug 1322532: Add sync text event to PDocAccessible; r=tbsaunde, r=billm
MozReview-Commit-ID: AFZMYghoOHe

--HG--
extra : rebase_source : 2364cf4a5ecaaceda151e16df170aebb77ae55e9
2017-04-13 17:08:42 -06:00
Aaron Klotz c06b376e9a Bug 1322532: Move a11y retrieval of native window handle to DocAccessibleChild; r=yzen
MozReview-Commit-ID: DwLBfAQJkRJ

--HG--
extra : rebase_source : 8ca53e9c4882ce9053e9a36428fed503ebe8919c
2017-02-21 11:27:33 -07:00
Aaron Klotz ba24d548f9 Bug 1322532: Add support for live regions to the com handler dll; r=tbsaunde
MozReview-Commit-ID: 1JPaUw5PrxU

--HG--
extra : rebase_source : e74cf6b3a2e9d78a3e939231ea06e0e3088fd538
2017-04-13 16:57:33 -06:00
Wes Kocher 5c3c7eb8db Backed out 4 changesets (bug 1322532) for windows static build failures a=backout
Backed out changeset df4e3ee037d6 (bug 1322532)
Backed out changeset 0acfde7a7a45 (bug 1322532)
Backed out changeset 34bf061d8e29 (bug 1322532)
Backed out changeset 954ea82470ed (bug 1322532)
2017-04-14 00:02:40 -07:00
Aaron Klotz 0ee7073299 Bug 1322532: Platform a11y changes to enable handler-based live regions; r=tbsaunde
MozReview-Commit-ID: nNPvBy3ZGO

--HG--
extra : rebase_source : d8a797c9ddfb3d8ab4f13c9f2f261fba04320beb
extra : histedit_source : cc4f0bd8ba26cc88bcf9907f684e5d6c240d354f
2017-04-13 20:35:32 -06:00
Aaron Klotz 1de2299a3a Bug 1322532: Add sync text event to PDocAccessible; r=tbsaunde, r=billm
MozReview-Commit-ID: AFZMYghoOHe

--HG--
extra : rebase_source : 22939e1a1208501fa646c02ee8199b72a16e14b5
extra : histedit_source : fd408d3d96578bc23c8d6627248c0578563e9b7e
2017-04-13 17:08:42 -06:00
Aaron Klotz 68616ae61e Bug 1322532: Move a11y retrieval of native window handle to DocAccessibleChild; r=yzen
MozReview-Commit-ID: DwLBfAQJkRJ

--HG--
extra : rebase_source : b206229f4167979d79c71e7cad11d01d7d60f9ed
2017-02-21 11:27:33 -07:00
Aaron Klotz c9721c0a3b Bug 1322532: Add support for live regions to the com handler dll; r=tbsaunde
MozReview-Commit-ID: 1JPaUw5PrxU

--HG--
extra : rebase_source : eef53f27be2d431c8b86c90e0681af9fb29c7d90
2017-04-13 16:57:33 -06:00
Ryan VanderMeulen cae23d0f9a Bug 1354293 - Don't try to build a11y IPC code that depends on accessibility being enabled. r=aklotz 2017-04-06 18:51:02 -04:00
Aaron Klotz 0a1611cdcd Bug 1303060: Build system changes for implementation of the caching COM handler for a11y; r=mshal
MozReview-Commit-ID: KBe1bw6xnhD

--HG--
extra : rebase_source : ea5f60be13f5ff6c0d295b4704646ceb44eb5794
2017-03-27 19:13:40 -06:00
Aaron Klotz 54c8ab6c9e Bug 1303060: Implementation of the caching COM handler for a11y; r=tbsaunde
MozReview-Commit-ID: HkiIgDQURtK

The a11y COM handler consists of two classes. AccessibleHandler is the one that
is actually interposed by COM between the client and the proxy. It implements
IAccessible2_3, IServiceProvider, and IProvideClassInfo. It is derived from
mscom::Handler which takes care of most of the COM boilerplate for handler
instantiation. AccessibleHandler must override a few virtual functions from
mscom::Handler:

* QueryHandlerInterface - mscom::Handler must implement the "real" QI. This is
  the method that mscom::Handler uses to delegate to the implementer.
* ReadHandlerPayload - deserializing the payload. This uses
  mscom::StructFromStream and the IA2Data_Decode function that was generated by
  midl. It should essentially be the inverse of the serialization code in the
  IHandlerProvider implementation inside Gecko.
* MarshalAs - identical to IHandlerProvider::MarshalAs
* GetHandlerPayloadSize and WriteHandlerPayload - it sucks that we have to
  include these, but they are neccessary for the scenario when COM wants to
  make a proxy of a proxy. When that happens, we need to get COM to serialize
  the payload again; it isn't smart enough to recognize payloads in existing
  proxies and copy them itself.

In order to reduce round trips, AccessibleHandler implements the most
sophisticated IA2 interface. This way the client has access to any of those
interfaces from IDispatch all the way down to IAccessible2_3 without needing to
incur additional round-trips to obtain them.

We also implement IServiceProvider so that a client may QueryService for an IA2
interface without needing to incur more round trips. In addition, we maintain
a list of service IDs that we definitely do not support, and handle those
locally instead of incurring an IPC round-trip.

We also implement IProvideClassInfo because NVDA's python code (and presumably
other ATs that use interpreted languages) supports using that interface to
assist its FFI library with resolution of our COM objects.

COM wraps each instance of an IAccessible* proxy with an AccessibleHandler
object. Proxies whose interfaces are not part of the IDispatch ... IAccessible2_3
hierarchy are not wrapped with handlers (though this might change in the future
if we need to expand coverage). AccessibleHandler implements IAccessible2_3 such
that, if we have cached data available for a particular IA2 method, we provide
that cached data to the client. Otherwise we pass on the request to the COM
proxy for retrieval via IPC.

The other class in the handler dll is AccessibleHandlerControl. This class
implements the IHandlerControl interface that is provided to IGeckoBackChannel.
Gecko dispatches cache invalidation events using this interface. This class
is a singleton within the handler dll and manages shared, handler-wide resources.

--HG--
extra : rebase_source : 4fc3910f789b0ed92c90655344ffb89f576ca5bd
2017-03-27 19:13:34 -06:00
Aaron Klotz d8b6197f8b Bug 1303060: Build system changes for a11y to enable the serving of a COM handler; r=mshal
MozReview-Commit-ID: 51r9ezFwDGE

--HG--
extra : rebase_source : cdc96a1c5f2c021c407d7c634036dd8cae7c04c6
2017-03-27 19:13:07 -06:00
Aaron Klotz b836337e81 Bug 1303060: Changes to a11y to enable the serving of a COM handler; r=tbsaunde
MozReview-Commit-ID: GTQF3x1pBtX

A general outline of the COM handler (a.k.a. the "smart proxy"):

COM handlers are pieces of code that are loaded by the COM runtime along with
a proxy and are layered above that proxy. This enables the COM handler to
interpose itself between the caller and the proxy, thus providing the
opportunity for the handler to manipulate an interface's method calls before
those calls reach the proxy.

Handlers are regular COM components that live in DLLs and are declared in the
Windows registry. In order to allow for the specifying of a handler (and an
optional payload to be sent with the proxy), the mscom library allows its
clients to specify an implementation of the IHandlerProvider interface.

IHandlerProvider consists of 5 functions:

* GetHandler returns the CLSID of the component that should be loaded into
  the COM client's process. If GetHandler returns a failure code, then no
  handler is loaded.
* GetHandlerPayloadSize and WriteHandlerPayload are for obtaining the payload
  data. These calls are made on a background thread but need to do their work
  on the main thread. We declare the payload struct in IDL. MIDL generates two
  functions, IA2Payload_Encode and IA2Payload_Decode, which are used by
  mscom::StructToStream to read and write that struct to and from buffers.
* The a11y payload struct also includes an interface, IGeckoBackChannel, that
  allows the handler to communicate directly with Gecko. IGeckoBackChannel
  currently provides two methods: one to allow the handler to request fresh
  cache information, and the other to provide Gecko with its IHandlerControl
  interface.
* MarshalAs accepts an IID that specifies the interface that is about to be
  proxied. We may want to send a more sophisticated proxy than the one that
  is requested. The desired IID is returned by this function. In the case of
  a11y interfaces, we should always return IAccessible2_3 if we are asked for
  one of its parent interfaces. This allows us to eliminate round trips to
  resolve more sophisticated interfaces later on.
* NewInstance, which is needed to ensure that all descendent proxies are also
  imbued with the same handler code.

The main focus of this patch is as follows:

1. Provide an implementation of the IHandlerProvider interface;
2. Populate the handler payload (ie, the cache) with data;
3. Modify CreateHolderFromAccessible to specify the HandlerPayload object;
4. Receive the IHandlerControl interface from the handler DLL and move it
   into the chrome process.

Some more information about IHandlerControl:

There is one IHandlerControl per handler DLL instance. It is the interface that
we call in Gecko when we need to dispatch an event to the handler. In order to
ensure that events are dispatched in the correct order, we need to dispatch
those events from the chrome main thread so that they occur in sequential order
with calls to NotifyWinEvent.

--HG--
extra : rebase_source : acb44dead7cc5488424720e1bf58862b7b30374f
2017-04-04 15:23:55 -06:00
David Parks 55dc6b7f68 Bug 1332690 - Assign Managers to DocAccessibleChilds. r=tbsaunde
The Manager is set by IPDL for remotely constructed objects but our DocAccessibleChilds are created on the child process side, so we need to assign a manager in the constructor so that we can find it when needed.

--HG--
extra : rebase_source : 8bf76534860ed73fbdc71df494130f6028400fa3
2017-03-27 10:03:43 -07:00
Aaron Klotz 9e3522ce1d Bug 1310166: Register ISimpleDOMNode typelib in content process; r=tbsaunde
MozReview-Commit-ID: 2JcIHJbHDgT
2017-02-23 11:32:06 -07:00
Eitan Isaacson 7f072468f4 Bug 1340733 - Fix attributes getter in win/ProxyAccessible. r=yzen
MozReview-Commit-ID: 7s3UrJlcsEQ

--HG--
extra : rebase_source : 8e9505a5d789088ba121b67be00c7f2b0aa332a8
2017-02-16 15:32:19 -08:00
Trevor Saunders 8db37fbd19 bug 1338755 - split up SetCOMProxy() r=yzen 2017-02-17 09:06:26 -05:00
Trevor Saunders d758a5e011 bug 1338755 - split ParentCOMProxy message up r=yzen
sending the emulated window information is basically unrelated to sending the
parent COM proxy to the child process, and in the future it will be useful to
send these at different times.
2017-02-16 15:17:53 -05:00
Eitan Isaacson 5f324eb9dd Bug 1336637 - Support relation methods in xpc on windows. r=tbsaunde
MozReview-Commit-ID: BcyE0Vy1Fu4
2017-02-10 17:27:33 -08:00
Yura Zenevich e04a84bbc8 Bug 1206711 - pass emulated window proxy to doc accessible child to be used as parent IAccessible for top level documents. r=tbsaunde
MozReview-Commit-ID: 4ejD6OmNgiR
2017-02-10 08:11:29 -05:00
Eitan Isaacson 78e90909da Bug 1335825 - Provide full state bitfield to xpcom accessibles in Windows. r=yzen
MozReview-Commit-ID: H7lFB5khEJm
2017-02-03 15:22:09 -08:00
Eitan Isaacson 2725184bbf Bug 1335220 - Add minimumIncrement to windows ProxyAccessible. r=yzen
MozReview-Commit-ID: DY89qIALmrq
2017-02-01 12:37:13 -08:00
Yura Zenevich 299ef55172 Bug 1329697 - registering typelib for IGeckoCustom interface. r=aklotz
MozReview-Commit-ID: CIvoSrPrRVM
2017-01-25 13:40:17 -05:00
Yura Zenevich 26f2c60483 Bug 1206711 - add support for HWND emulation for content top level docs on Windows. r=tbsaunde
MozReview-Commit-ID: GQ1LxCwtv3j
2017-01-24 09:45:25 -05:00
Yura Zenevich 4a9e23d316 Bug 1269369 - add support for GetID XPCOM method on Windows with e10s. r=tbsaunde
MozReview-Commit-ID: KXhDeNW3Oaw
2017-01-09 14:52:51 -05:00
Trevor Saunders 2bc78b9768 bug 1301148 - implement anchor at for windows r=aklotz 2017-01-05 10:48:10 -05:00
Trevor Saunders 0ec84956f2 bug 1301148 - allow getting a proxy accessible from a com proxy r=aklotz 2017-01-05 10:48:10 -05:00
Trevor Saunders 70cc56383f bug 1301148 - implement anchor count for windows r=aklotz 2017-01-05 10:48:10 -05:00
Trevor Saunders 1cdf6bbf9b bug 1301148 - implement easy parts of nsIAccessibleHyperlink r=aklotz 2017-01-05 10:48:09 -05:00
Aaron Klotz 0f16e8d38d Bug 1323996: Make PDocAccessible.ipdl import IAccessibleHolder from IPCTypes.h to fix --disable-accessibility build failures; r=tbsaunde
MozReview-Commit-ID: JYD3lMmdlyc
2016-12-16 12:23:31 -07:00
Aaron Klotz fd166cbe7a Bug 1314707: Replace PDocAccessible::SendCOMProxy with new parameter to PDocAccessibleConstructor and async RecvParentCOMProxy call in child. Sending of a11y events from child to parent is now deferred until DocAccessibleChild::RecvParentCOMProxy is called; r=tbsaunde
MozReview-Commit-ID: DjxSfLJQtTu

--HG--
extra : rebase_source : d0f1ff1d22df003bc87968e1991eb08eeb977d85
2016-12-01 16:28:54 -07:00
Aaron Klotz 3358d07564 Bug 1319640: Make obtaining of plugin IAccessible go through Chrome process on Sandboxed builds; r=tbsaunde
MozReview-Commit-ID: DQnOwJ1VpYS
2016-12-03 16:07:24 -07:00
Aaron Klotz 31db1f008a Bug 1315638: Modify MainThreadHandoff::FixArrayElements to be able to distinguish between outparams with different levels of indirection; r=jimm
MozReview-Commit-ID: HZgED9JT16m

--HG--
extra : rebase_source : 3b147251d55229aa5722d9f9ec6a9ad832a83c87
2016-11-07 16:04:06 -07:00
Chris Manchester 61aedfd2ef Bug 1303533 - Don't traverse accessible/ipc/win/typelib during Artifact builds. r=mshal
MozReview-Commit-ID: Clxfj8h8ZRT

--HG--
extra : rebase_source : 4d197e629b942d749e9d47fc0bf186d666140f9e
2016-11-01 22:45:35 -07:00
Michael Li fdb96b726d bug 1303447 - implement text interface methods for the windows ProxyAccessible r=aklotz 2016-10-27 18:11:55 -04:00
Michael Li 4560f258dd bug 1303133 - Implement ia2AccessibleValue methods in ProxyAccessible for Windows. r=aklotz 2016-10-27 18:11:54 -04:00
Aaron Klotz e6b863ac53 Bug 1309236: Move setting of MSAA ID to PDocAccessibleConstructor; r=tbsaunde
MozReview-Commit-ID: D5iFud9DiEh

--HG--
extra : rebase_source : d1a1ec17258e9be8023dd730593745d32a96cc0f
2016-10-27 13:16:24 -06:00
Aaron Klotz 22d38ae56d Bug 1308397: Fix stack overflow by ensuring that ProxyAccessible::GetCOMInterface uses its real MSAA ID to lazily resolve its COM proxy, instead of using CHILDID_SELF; r=tbsaunde
MozReview-Commit-ID: 20xdOlcCXed
2016-10-17 12:39:16 -06:00
Aaron Klotz 6a79a0759a Bug 1301232: Re-enable jsat mochitests on Windows; r=yzen
MozReview-Commit-ID: Hsmg056d6js

--HG--
extra : rebase_source : 9832e77938f112460cac075391f4f68b0adf18b8
2016-10-12 12:34:57 -06:00
Phil Ringnalda c26d9eb6e6 Backed out changeset 0257341f6b62 (bug 1301232) for WinXP permaorange in test_content_integration.html
MozReview-Commit-ID: Bz0VkhmpJL1
2016-10-11 18:42:46 -07:00
Aaron Klotz 08df7a0cf6 Bug 1301232: Re-enable jsat mochitests on Windows; r=yzen
MozReview-Commit-ID: CPIfvMDTLzv
2016-10-11 10:49:07 -06:00
Aaron Klotz a90989b900 Bug 1304449: Part 4 - Change Windows a11y MSAA id generation to partition based on content process id; r=tbsaunde
MozReview-Commit-ID: 1IBkP20uc1f

--HG--
extra : rebase_source : d0861da3419534f04f2e9de66157b8cde57c1ccd
2016-10-05 15:56:20 -06:00
Michael Li a29eef42cd Bug 1303040 - implement shared header for two ProxyAccessible classes. r=tbsaunde
MozReview-Commit-ID: 1cU71RljySc
2016-09-21 14:10:33 -04:00
Andrea Marchesini 9d38619302 Bug 1288997 - memory blob should not be shared across processes - part 3 - SendStream for memory blobs, r=bkelly 2016-09-21 12:27:26 +02:00
Aaron Klotz 6eb5eabb31 Bug 1297549: Part 1 - Use chrome-generated MSAA IDs in content; r=tbsaunde
MozReview-Commit-ID: 7YIx7f6KEOs
2016-09-19 13:58:15 -06:00
Phil Ringnalda b588bc52de Backed out changeset 5643f6aebe25 (bug 1297549) for talos bustage 2016-09-18 11:19:00 -07:00
Aaron Klotz ce64d6a91b Bug 1297549: Part 1 - Use chrome-generated MSAA IDs in content; r=tbsaunde
MozReview-Commit-ID: 7YIx7f6KEOs
2016-09-16 12:17:05 -06:00
Wes Kocher 8805e85679 Backed out 3 changesets (bug 1297549) for Windows VM Mn-e10s failures a=backout
Backed out changeset c3f82cedfb27 (bug 1297549)
Backed out changeset c643278d88c8 (bug 1297549)
Backed out changeset 3d515669d3e0 (bug 1297549)
2016-09-15 16:45:31 -07:00
Aaron Klotz 2f2f607a11 Bug 1297549: Part 1 - Use chrome-generated MSAA IDs in content; r=tbsaunde
MozReview-Commit-ID: 7YIx7f6KEOs

--HG--
extra : rebase_source : de5c26ee8857f00c45944163db5591ee24e24a2b
2016-09-15 13:25:04 -06:00