It's a very general mechanism for replacing the implementation of
printf_stderr().
It's primarily used by the profiler, sparingly, and not in an important way.
Worse, it prevents us from using MOZ_LOG in the profiler, which is something I
want. Because if any code that locks gPSMutex also calls MOZ_LOG, that then
calls printf_stderr(), which calls profiler_log(), which locks gPSMutex, which
deadlocks.
The only other use of set_stderr_callback() is for the ultra-hacky,
for-local-use-only copy_stderr_to_file() function, which was added for B2G
debugging and is no longer necessary.
This patch removes set_stderr_callback() altogether.
This change is to use gecko_enum_prefix in helpers.mako.rs, so that we do not
need to manually write code for nsStyleDisplay::mTransformBox.
MozReview-Commit-ID: 7UAL0iUcSIO
If we disable APZ on an individual scrollable element by setting the "disable APZ"
flag on the ScrollMetadata, we should also disable paint-skipping for that element.
If we don't do this, we end up in a situation where the APZ code is not applying
the async transform but is sending repaint requests expecting the main thread to
do repaints. Meanwhile the main-thread thinks that it can send empty transactions
and have APZ update the async transform (a.k.a. paint-skipping). So visually
neither APZ nor main-thread have an effect and the element doesn't appear to
scroll except with the tile-aligned displayport shifts. Disabling paint-skipping
on the element fixes the issue.
MozReview-Commit-ID: H4wpVLw8r8X
Various pieces of browser chrome, such as the accessible carets or new
find-in-page highlighter, overlay the content with anonymous content elements.
These overlays are positioned with respect to the root document. This means that
if the overlay really pertains to a scrollable subframe (e.g. carets for a text
selection inside an iframe), then scrolling the subframe would result in the
anonymous contents being "mispositioned" from the user's point of view. The
browser chrome code that creates the overlay is responsible for moving it in
response to user scrolling, so that it appears correct. However, the only
mechanism the browser chrome code has to detect user scrolling are the main-thread
events, which are asynchronous with respect to APZ.
Therefore, in order to improve the user experience, we need to disable APZ in
cases where this happens. We specifically isolate the case where the root content
document has visible anonymous content elements, and disable APZ on scrollable
subframe elements inside that document. Note that APZ remains enabled on the
root scroller itself, because we expect the browser chrome code to use absolute-
positioning on their anonymous contents, so that even with APZ scrolling they
will stay where they are supposed to.
MozReview-Commit-ID: 770edaGWMLi
Mark video element as tainted (stored on the decoder owned by video element) when the video is used as source to drawImage() on canvas.
MozReview-Commit-ID: HdciVwhqPu3