Manually-implemented QueryInterface functions don't benefit from the
MozQueryInterface optimizaions, and a lot of them are in hot code, and
implement a large number of interfaces.
MozReview-Commit-ID: 8OzglraowZt
This also removes any redundant Ci.nsISupports elements in the interface
lists.
This was done using the following script:
acecb401b7/processors/chromeutils-generateQI.jsm
MozReview-Commit-ID: AIx10P8GpZY
I'm not sure why this became necessary as a result of migrating to
Sqlite.jsm, but this is the only way I've found to eliminate
leaks from the tab process on shutdown. These leaks occur when
the child process requests something from the ContentPrefService2
but shuts down before it gets its response.
MozReview-Commit-ID: 2Haks17D6Em
I converted the cps2 tests to use async/await, since it was easier
for me to debug the breakages introduced by my changes that way.
There are a few differences hidden in there, though - most notable
is that I also modified the direct db access in the tests to use
the Sqlite.jsm wrapper. This was to avoid reaching into the
connections internals in order to get the underlying connection.
MozReview-Commit-ID: DwJ5hfyvAOf
- I kept the xpcom-shutdown observer around even though it's not
doing much and it could be satisfied by doing a little more work
in the Sqlite.shutdown blocker. I wasn't sure which to use since
it seems like the Sqlite.shutdown blocker is intended to be
used to cleanup connection-related things. Thoughts on this are
welcome.
MozReview-Commit-ID: CqcGHBFaJsZ
The old name no longer makes sense, since it no longer exports an spawn_task
symbol, and add_task is what we really care about.
MozReview-Commit-ID: IE7B8Czv8DH
This patch was autogenerated by my decomponents.py
It covers almost every file with the extension js, jsm, html, py,
xhtml, or xul.
It removes blank lines after removed lines, when the removed lines are
preceded by either blank lines or the start of a new block. The "start
of a new block" is defined fairly hackily: either the line starts with
//, ends with */, ends with {, <![CDATA[, """ or '''. The first two
cover comments, the third one covers JS, the fourth covers JS embedded
in XUL, and the final two cover JS embedded in Python. This also
applies if the removed line was the first line of the file.
It covers the pattern matching cases like "var {classes: Cc,
interfaces: Ci, utils: Cu, results: Cr} = Components;". It'll remove
the entire thing if they are all either Ci, Cr, Cc or Cu, or it will
remove the appropriate ones and leave the residue behind. If there's
only one behind, then it will turn it into a normal, non-pattern
matching variable definition. (For instance, "const { classes: Cc,
Constructor: CC, interfaces: Ci, utils: Cu } = Components" becomes
"const CC = Components.Constructor".)
MozReview-Commit-ID: DeSHcClQ7cG
Introduce a new SpinningSynchronousClose API that allows to synchronously close
a connection that executed asynchronous statements, by spinning the events loop.
This is expected to be used rarely in particular cases like database corruption.
It is currently [noscript] since the only consumer is cpp, in the future we can
evaluate removing that, if we find more uses for it.
MozReview-Commit-ID: 7SPqutoF9jJ