gecko-dev/accessible/ipc/win
James Teh aebc388fb6 Bug 1416986 part 2: Include interfaces the client is likely to request in the accessible handler payload. r=aklotz
Now that virtual buffers have to render across processes, we want to eliminate as many cross-process calls as possible.
This includes QueryInterface calls, since buffers query for several interfaces on every node they visit.
To avoid these cross-process QI calls, we include interfaces clients are likely to request in the handler payload.
This way, they get marshaled in the single call used to retrieve the object.

This patch does the following:

1. Passes the interceptor when building the payload.
We need this so we can get interceptors for other interfaces.

2. Splits the payload into two main parts: a static part and a dynamic part.
The (new) static part contains the interface pointers. The dynamic part contains the rest.
This is necessary because the refresh call cannot pass the interceptor, but the interceptor is needed to build the static part.
Also, re-building the static part is pointless when refreshing.

3. Includes the interface pointers in the payload (BuildStaticIA2Data).
The pointers also have to be cleaned up after marshaling.

4. Releases the interface pointers in the handler after the payload is received.
We do this because they're aggregated by the proxy manager as they're unmarshaled.

MozReview-Commit-ID: 6VRLMNScgwW

--HG--
extra : rebase_source : 249589643b7a69e870962ea55a44849bf03a2693
2017-11-15 12:18:18 +10:00
..
handler Bug 1416986 part 2: Include interfaces the client is likely to request in the accessible handler payload. r=aklotz 2017-11-15 12:18:18 +10:00
typelib Backed out changeset ce6e2c41d939 (bug 1288841) 2016-08-19 10:02:15 +02:00
COMPtrTypes.cpp Bug 1399557: Add diagnostic asserts to interceptor creation code; r=jimm 2017-09-18 10:49:15 -06:00
COMPtrTypes.h Bug 1399557: Add Environment to mscom::ProxyStream and define it for IAccessible; r=jimm 2017-09-29 15:41:28 -06:00
DocAccessibleChild.cpp Bug 1415470 - a11y: Fix VS2017 initializer list order warnings. r=yzen 2017-11-06 23:54:53 -08:00
DocAccessibleChild.h Bug 1402951 - no show events for content on document load complete, r=aklotz, yzen 2017-10-03 10:58:27 -04:00
HandlerProvider.cpp Bug 1416986 part 2: Include interfaces the client is likely to request in the accessible handler payload. r=aklotz 2017-11-15 12:18:18 +10:00
HandlerProvider.h Bug 1416986 part 2: Include interfaces the client is likely to request in the accessible handler payload. r=aklotz 2017-11-15 12:18:18 +10:00
IAccessible32.manifest Bug 1354077: Add manifests for IAccessible variants: 32-bit and 64-bit; r=jimm 2017-06-06 12:19:12 -06:00
IAccessible64.manifest Bug 1354077: Add manifests for IAccessible variants: 32-bit and 64-bit; r=jimm 2017-06-06 12:19:12 -06:00
moz.build Bug 1354077: Add manifests for IAccessible variants: 32-bit and 64-bit; r=jimm 2017-06-06 12:19:12 -06:00
PDocAccessible.ipdl Bug 1402951 - no show events for content on document load complete, r=aklotz, yzen 2017-10-03 10:58:27 -04:00
PlatformChild.cpp Bug 1410159: Add additional IUnknown resolution to a11y::HandlerProvider; r=Jamie 2017-11-02 15:37:57 -06:00
PlatformChild.h Bug 1377195: Remove redundant main thread activation context from a11y::PlatformChild; r=eeejay 2017-06-29 10:47:15 -07:00
ProxyAccessible.cpp Bug 1383501 - Do not crash when TabParent::RecvPDocAccessibleConstructor receives a null COM proxy sent to the parent process. r=jimm 2017-10-04 09:12:25 -06:00
ProxyAccessible.h Bug 1383501 - Do not crash when TabParent::RecvPDocAccessibleConstructor receives a null COM proxy sent to the parent process. r=jimm 2017-10-04 09:12:25 -06:00