Commit Graph

109 Commits

Author SHA1 Message Date
Eric Rahm
ab9516d40d Bug 1353593 - Part 2: Remove wwc functions. r=froydnj
This removes the use of |wwc| functions in favor of char16ptr_t's implicit
conversion operators.

MozReview-Commit-ID: GHONYieMPla
2017-06-12 16:20:49 -07:00
Carsten "Tomcat" Book
bd7620cf36 Merge mozilla-central to mozilla-inbound 2017-06-13 12:11:42 +02:00
Tom Ritter
1d8c60f8d3 Bug 1368413 Fix variable typo occuring only in Debug build r=aklotz
MozReview-Commit-ID: 1R90qDtyhUf

--HG--
extra : rebase_source : c949f90c1f941ea9993a696c681a2eecdf0bce6b
2017-05-29 00:37:10 -05:00
Aaron Klotz
ed8d9ab6be Bug 1371376: Fix static analysis errors; r=bustage
MozReview-Commit-ID: EbcGtlTCfP
2017-06-08 17:46:40 -06:00
Aaron Klotz
09162c5ce4 Bug 1371376: Make mscom smart pointers destroy their objects asynchronously; r=jimm
MozReview-Commit-ID: FqDVAW2Pyq2
2017-06-08 15:55:55 -06:00
Aaron Klotz
54a2de515e Bug 1371345: Fix deadlock caused by holding mscom Interceptor live set lock while posting work to the main thread; r=jimm
MozReview-Commit-ID: H6buwB98Bmu
2017-06-08 11:52:53 -06:00
Aaron Klotz
230ddb60a5 Bug 1368571: Modify handler and interceptor marshaling code so that it strips out any handlers from proxies that are destined for non-Gecko processes; r=jimm
MozReview-Commit-ID: A1lCqvbQYAF

There is no clean API-based solution to this, so instead I went grovelling
through the DCOM wire protocol and was able to write a function that converts
handler OBJREFs into standard OBJREFs.

See also:
https://msdn.microsoft.com/en-us/library/cc226801

--HG--
extra : rebase_source : a650055c4adda3a1d99262e47f2b463074c6b935
2017-06-06 17:35:51 -06:00
Aaron Klotz
b08f42f77d Bug 1367885: Follow-up - remove code that mistakenly landed as part of commit 09894b9ce473; r=backout
MozReview-Commit-ID: 3ORbwx6QFhR

--HG--
extra : rebase_source : a32c7f2b4a471495929b4055ba293826d07c6da2
2017-06-07 14:39:15 -06:00
Aaron Klotz
5e1f870e91 Bug 1367715: Back out 67e4f5e8a105 as it was not the correct fix; r=backout
--HG--
extra : rebase_source : be1fa414385c38d5a0f90b26dafa864771e9107f
2017-06-06 18:17:42 -06:00
Aaron Klotz
4a8e3690de Bug 1369111: Modify mscom interceptor to maintain a set of weak references to all interceptors that are currently live; r=jimm
MozReview-Commit-ID: 2pyAiw53rj7

Currently we wrap every outpointer interface with its own interceptor. Even two
identical interface outparams will get their own unique interceptors. Not only
does this violate COM object identity, but it is also inefficient; if an
interceptor already exists for a given interface, we should reuse it.

This patch adds a live set: when we create a new interceptor, we first check
the live set and reuse an existing interceptor if it is present. Otherwise we
create a new one and then insert it into the set.

The set uses thread-safe weak references to guard against races during
interceptor teardown.

--HG--
extra : rebase_source : fb3f11600fb368d169bd1164433e2d8780592146
2017-05-18 13:04:26 -06:00
Aaron Klotz
e3fdd6169e Bug 1367885: Add a fast path to mscom Interceptor construction; r=jimm
MozReview-Commit-ID: AmS5oBNV7Po

When creating a new interceptor, we already have the correct target interface.
The interceptor ignores this and does a redundant inter-thread QI to resolve
an interface that we already have!

This patch adds a fast path to interceptor initialization that skips all of that
stuff and directly initializes itself using the given target interceptor.

--HG--
extra : rebase_source : dcfff7270efd5bda990e240bb06a9206656d5852
2017-06-06 18:30:19 -06:00
Nicholas Nethercote
0be77baa96 Bug 1370329 (part 1) - Clean up the profiler's RAII classes. r=mstange.
This patch does the following renamings, which increase consistency.

- GeckoProfilerInitRAII -> AutoProfilerInit
- GeckoProfilerThread{Sleep,Wake}RAII -> AutoProfilerThread{Sleep,Wake}
- GeckoProfilerTracingRAII -> AutoProfilerTracing
- AutoProfilerRegister -> AutoProfilerRegisterThread
- ProfilerStackFrameRAII -> AutoProfilerLabel
- nsJSUtils::mProfilerRAII -> nsJSUtils::mAutoProfilerLabel

Plus a few other minor ones (e.g. local variables).

The patch also add MOZ_GUARD_OBJECT macros to all the profiler RAII classes
that lack them, and does some minor whitespace reformatting.

--HG--
extra : rebase_source : 47e298fdd6f6b4af70e3357ec0b7b0580c0d0f50
2017-06-07 12:33:19 +10:00
Wes Kocher
3ee39c3f47 Backed out 3 changesets (bug 1354077) for assertions in AccessibleWrap.cpp a=backout CLOSED TREE
Backed out changeset 1380fe0f701b (bug 1354077)
Backed out changeset 2b5602bd352a (bug 1354077)
Backed out changeset a0fc3a1a9122 (bug 1354077)

MozReview-Commit-ID: ABHV3evXKrG
2017-06-12 16:54:10 -07:00
Aaron Klotz
ed90562548 Bug 1354077: Refactor mscom::ActivationContext to separate context from activation; r=jimm
MozReview-Commit-ID: 1nrxEHEgF3T

--HG--
extra : rebase_source : f1851c890ed7747aaefc78c34bbdceaf9c70fecd
2017-06-08 18:07:24 -06:00
Aaron Klotz
f2c01f6b99 Bug 1354077: Fix some problems with RegGetValue call failing due to failed type checking; r=jimm
MozReview-Commit-ID: 5iTEAW9CyJS

--HG--
extra : rebase_source : 2a1d5b4684e2fba9913e7d185738c3f5d711da8f
2017-05-25 14:08:55 -06:00
Aaron Klotz
0c65052029 Bug 1367715: Convert IsProxy check to assertion to avoid unnecessary and potentially incorrect off-main-thread QIs on release builds; r=jimm
MozReview-Commit-ID: 9WYbiW7pBjh

--HG--
extra : rebase_source : 7b04e9959f1ba2c5dcfeff384f3e3cf32b445c39
2017-05-25 12:10:30 -06:00
Aaron Klotz
b1cd01ad50 Bug 1354077: Fix missing interface registration annotations for CoGetInterfaceAndReleaseStream failures; r=jimm
MozReview-Commit-ID: b7R8yGDe44

--HG--
extra : rebase_source : 1994776a889602f8ea4ac380098a38b37e1c6a2b
2017-05-19 13:59:49 -06:00
Aaron Klotz
d82e0194e8 Bug 1354077: Annotate crash reports with COM interface configuration information when marshaling fails; r=jimm
MozReview-Commit-ID: GCYLbtu1Nlb

--HG--
extra : rebase_source : 565c598dcba929cb1b774b3440180c60e78da9cd
extra : amend_source : dc0051579e0b005c89fd3835f0c2b0d4fd87a280
2017-05-04 15:41:35 -06:00
Ryan VanderMeulen
6e88e0bfab Bug 1363127 - Include nsPrintfCString.h in ProxyStream.cpp to fix --disable-accessibility bustage. r=aklotz 2017-05-11 17:22:19 -04:00
Nicholas Nethercote
bc1d6a21a2 Bug 1358320 - Make TimeStamp::ProcessCreation()'s outparam optional. r=gsvelto.
TimeStamp::ProcessCreations()'s aIsInconsistent outparam is ignored by the
majority of its caller. This patch makes it optional. Notably, this makes
ProcessCreation() easier to use in a constructor's initializer list.
2017-04-26 14:55:54 +10:00
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
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
Aaron Klotz
bf041cb767 Bug 1303060: Simplifications to mscom handler code; r=jimm
MozReview-Commit-ID: 5YEVtL8gw6S

--HG--
rename : ipc/mscom/IHandlerPayload.h => ipc/mscom/IHandlerProvider.h
extra : rebase_source : 167f69b591f55228859f3941903f776208f22067
2017-03-27 18:41:06 -06:00
Andrew McCreight
d18859f043 Bug 1350688 - Use a thread safe way to get the CPU count in the SpinEvent ctor. r=aklotz
Initializing nsSystemInfo can't be done off the main thread on
Windows, and we can't guarantee that it has been initialized before
calling this code.

MozReview-Commit-ID: DRNCrakNMmH

--HG--
extra : rebase_source : b711f37b169f3c93a39fc2af56a9c76c656a9c38
2017-03-26 06:56:01 -07:00
Aaron Klotz
45cba5a03b Bug 1325834: Make mscom::ProxyStream use CreateStreamOnHGlobal instead of SHCreateMemStream on Windows 7; r=jimm
MozReview-Commit-ID: FAlPgS6iJL
2017-03-14 18:42:24 -06:00
Aaron Klotz
518de5dc75 Bug 1346910: Ensure that the interface output by IServiceProvider::QueryService is correctly wrapped by the mscom interceptor; r=jimm
MozReview-Commit-ID: 40fF7cS0Mpx

--HG--
extra : rebase_source : 79573a2b845c65164dac35a5ad2b99fe7af13ac7
2017-03-14 11:04:46 -06:00
Aaron Klotz
116698fb6b Bug 1344965: Clean up mscom interfaces to improve separation of concerns; r=jimm
MozReview-Commit-ID: C96y3i8hjWs

--HG--
extra : histedit_source : 8cee3ff07ecd0310ac9648d903328d54588d3dde
2017-03-06 17:22:43 -07:00
Aaron Klotz
90071c5f69 Bug 1344798: Allow mscom::AsyncInvoker to be able to handle proxied and non-proxied interfaces; r=jimm
MozReview-Commit-ID: 6lQg6fwuvmw

--HG--
extra : histedit_source : 28d66eb2ec245b8ca41baba85c7a74ecbc3341f2
2017-03-02 17:39:01 -07:00
Ryan VanderMeulen
8dbf7d75e2 Bug 1344187 - Add guards around code in ProxyStream.cpp that require the crash reporter. r=aklotz 2017-03-03 13:33:13 -05:00
Aaron Klotz
f394903529 Bug 1303060: Fix problematic annotation on mscom::InParamWalker; r=staticbustage-fix
MozReview-Commit-ID: 2QtUJ4Bbk1m
2017-03-01 11:05:35 -07:00
Aaron Klotz
10b6488d0c Bug 1325834: Add crash reporter annotations to report COM marshaling failure codes; r=jimm
MozReview-Commit-ID: FcEBoU0DzzR

--HG--
extra : rebase_source : a6cb3f2735ff0470bcff96b3832bad794701783f
2017-02-27 11:55:42 -07:00
Aaron Klotz
833aa2af27 Bug 1303060: Additions to ipc/mscom for out-of-process components; r=jimm
MozReview-Commit-ID: IYjONGbBraG

--HG--
extra : rebase_source : a6eb90db7a9c21b91b9e763a15a9a661d41c5e77
2017-02-17 16:20:51 -07:00
Aaron Klotz
f3fa5ee8d2 Bug 1303060: ipc/mscom changes for handler and payload support; r=jimm
MozReview-Commit-ID: 13NFW1pgxix

--HG--
extra : rebase_source : 18cc11d4c1dc62bc0ee428608f6cb57e32c4d0af
2017-02-17 17:30:03 -07:00
Aaron Klotz
1110b03572 Bug 1339945: Refactor mscom::MainThreadInvoker's wait mechanism into a separate class; r=handyman
MozReview-Commit-ID: BikO5ng6joM

--HG--
extra : rebase_source : f5b92fece72e627f7edf8e3e3a120e25f41a7686
2017-02-10 11:27:01 -07:00
Aaron Klotz
7d2dd562c2 Bug 1342992: Make mscom::Weakref final; r=jimm
MozReview-Commit-ID: 7SZpXP2adK7

--HG--
extra : rebase_source : 49e9108c9ade5d4392f9a4ec52fb8413512ccc88
2017-02-27 11:44:45 -07:00
Michael Layzell
893ed78ef5 Bug 1336510 - Part 10: Remove unnecessary assertion from SharedRef::Clear(), r=aklotz
MozReview-Commit-ID: Fx7CmxgiJpo
2017-02-24 14:34:32 -05:00
Michael Layzell
ac9295ead2 Bug 1336510 - Part 7: Stop capturing this by value in windows-only code, r=aklotz
MozReview-Commit-ID: B4dYo4ETzkL
2017-02-24 14:34:27 -05:00
Wes Kocher
7e8f316730 Backed out 8 changesets (bug 1336510) for windows debug mn-e10s failures a=backout
Backed out changeset 419ada2f9e81 (bug 1336510)
Backed out changeset 19239f566a93 (bug 1336510)
Backed out changeset c8aeead6fe83 (bug 1336510)
Backed out changeset 422e63b872b5 (bug 1336510)
Backed out changeset 21869174dfd3 (bug 1336510)
Backed out changeset 57476b9f342d (bug 1336510)
Backed out changeset e842cdaaa7e5 (bug 1336510)
Backed out changeset bd943b368ff7 (bug 1336510)

MozReview-Commit-ID: 2z3Wa9QFkX4
2017-02-23 16:07:41 -08:00
Michael Layzell
dac86659ac Bug 1336510 - Part 7: Stop capturing this by value in windows-only code, r=aklotz
MozReview-Commit-ID: B4dYo4ETzkL
2017-02-23 12:24:12 -05:00
Phil Ringnalda
68316b419c Backed out 2 changesets (bug 1303060) for Windows static-analysis bustage
CLOSED TREE

Backed out changeset 729a1b8c7e47 (bug 1303060)
Backed out changeset 604605ca738c (bug 1303060)
2017-02-22 21:55:15 -08:00
Aaron Klotz
f3b557f70c Bug 1303060: Additions to ipc/mscom for out-of-process components; r=jimm
MozReview-Commit-ID: IYjONGbBraG

--HG--
extra : rebase_source : a6eb90db7a9c21b91b9e763a15a9a661d41c5e77
2017-02-17 16:20:51 -07:00
Aaron Klotz
af5bd498da Bug 1303060: ipc/mscom changes for handler and payload support; r=jimm
MozReview-Commit-ID: 13NFW1pgxix

--HG--
extra : rebase_source : 18cc11d4c1dc62bc0ee428608f6cb57e32c4d0af
2017-02-17 17:30:03 -07:00
Aaron Klotz
3d7955bc43 Bug 1338609: Add the ability to serialize and deserialize structs using Microsoft RPC to mscom; r=jimm
MozReview-Commit-ID: CSkNYCIQYQe

--HG--
extra : rebase_source : 8e357eb60adf2040d30f826b1805c35163456aa0
2017-02-17 14:26:56 -07:00
Aaron Klotz
74cac7296d Bug 1338596: Add support for agile references to mscom; r=jimm
MozReview-Commit-ID: 1NZoFZntO3g

--HG--
extra : rebase_source : 6d3ed1da4893747d38c1bd2c31671d8ecf535cfd
2017-02-10 11:18:26 -07:00
Ryan VanderMeulen
4c43de6e62 Bug 1341082 - Add ACCESSIBILITY guards to functions in Utils.cpp that depend on it being enabled. r=aklotz 2017-02-21 15:27:18 -05:00
Aaron Klotz
d8a1f446d1 Bug 1339951: Refactor mscom weak reference support and establish lock hierarchy within; r=jimm
MozReview-Commit-ID: BJJpSj44alY

--HG--
extra : rebase_source : ed64776fc38dd59af48edd6b24959c012755b67a
2017-02-17 17:35:01 -07:00
Sebastian Hengst
892a8de889 Backed out changeset 06cd86f16c70 (bug 1339951) in hope for fix for a11y related crashes e.g. in Mn-e10s on Windows 8 x64 debug test_accessibility.py TestAccessibility.test_click_raises_element_not_accessible. r=backout 2017-02-18 01:18:45 +01:00
Aaron Klotz
440976dd4f Bug 1339947: Make mscom ArrayData lookup respect interface inheritance; r=jimm
MozReview-Commit-ID: 5zJTzT7JJhJ

--HG--
extra : rebase_source : 1cc459ae3b50a0424c336467e3e99db387eadd86
2017-02-10 14:16:29 -07:00
Aaron Klotz
a6c766977b Bug 1339951: Refactor mscom weak reference support and establish lock hierarchy within; r=jimm
MozReview-Commit-ID: BJJpSj44alY

--HG--
extra : rebase_source : 2a18f861da83633a6cd443b80155946483e7cf49
2017-02-15 15:33:32 -07:00
Aaron Klotz
d236f79291 Bug 1339942: Make mscom registration able to be compiled and run outside Mozilla processes; r=jimm
MozReview-Commit-ID: 3ETSE5Qn8nd

--HG--
extra : rebase_source : cfab62cd77e0bed75a8600d1f0441b9683966307
2017-02-15 14:37:20 -07:00