Change the PuppetWidget from defining screen coordinates from
tab-content-relative to being based on actual screen geometry.
PuppetWidgets can have position. In the parent process, the
widget has a position and a separate client position (that
includes OS window chrome... on Linux and Windows as others have no
chrome). In the child process, the widget (non-origin) position,
whose calculation compensates for the OS window decoration.
TabParents now register for the MozUpdateWindowPos event on the chrome
TopWindowRoot. When the window is moved, the OS widget calls WindowMoved on
its listener (the nsWebShellWindow), which sends a MozUpdateWindowPos
event.
PuppetWidget::WidgetToScreenOffset now reports proper widget screen location. Previously, in the content process, all widgets were defined to be located at the screen origin. This also repairs mac e10s OOP plugin coordinate calculations that would be broken by this change.
Starting with bug 391583 we detect whether a png image has any transparency
during decode. I don't think this is worth doing anymore. We choose the format
of image based on the png header, that should be sufficient for the performance
improvement we desire from opaque images. This gets us faster image decoding.
--HG--
extra : rebase_source : 7233c03e9e4fd0987f3e7c12d5d0e27520ebddae
A filter is a callable that accepts an iterable of tests and a dictionary of values (e.g mozinfo.info) and returns an iterable of tests. Note filtering can mean modifying tests in addition to removing them. For example, this implements a "timeout-if" tag in the manifest:
from manifestparser import expression
import mozinfo
def timeout_if(tests, values):
for test in tests:
if 'timeout-if' in test:
timeout, condition = test['timeout-if'].split(',', 1)
if expression.parse(condition, **values):
test['timeout'] = timeout
yield test
tests = mp.active_tests(filters=[timeout_if], **mozinfo.info)
--HG--
extra : rebase_source : adead90910811e71e8ea2bb862f2b8e92f2c1bee
This code needs to move out of PrepareResizeReflow() (and things that
trigger code in it) because PrepareResizeReflow is conditioned on the
block itself resizing.
The reftest is based on a test by Jesse Ruderman <jruderman@gmail.com>.
The reftest fails without the patch and passes with the patch.
--HG--
extra : transplant_source : %E9%5E%97zE%A4%60n%8C%DD%F8K-%01%F3fF%E8%C9K
========
https://hg.mozilla.org/integration/gaia-central/rev/beea810aba49
Author: autolander <bug.autolander@gmail.com>
Desc: Bug 1130317 - merge pull request #28052 from mnjul:bug_1130317_dict_blob_predetermine_length to mozilla-b2g:master
========
https://hg.mozilla.org/integration/gaia-central/rev/b746bccf6af9
Author: John Lu [:mnjul] <jlu@mozilla.com>
Desc: Bug 1130317 - Pre-determine length of Uint8Array of Keyboard user dictionary dict blob
- The total byte length of serialized nodes can be inferred when filling each node's offset information, and is subsequently combined with header & character table size to initialize the Uint8Array total length.
- We thus avoid pushing to a JS array one-byte-by-one-byte and convert the array to Uint8Array, which should lead to better performance.
This is the approach we already take everywhere else we make a jar🫙 URI.
I've unified those places into GeckoJarReader, cleaned up imports, fixed a
typo, and wrote a trivial test for this case.
I made a few utility methods static to facilitate testing and future refactoring.