In bug 1883435 comment 2 chutten mentions that including
nsGlobalWindowInner.h from GleanMetrics.h causes a stylo build failure.
This is because nsGlobalWindowInner.h itself brings a bunch of DOM
bindings template soup that bindgen isn't great at dealing with.
That can be fixed in various ways. However, there is a simpler fix,
which is not including GleanMetrics at all.
It's trivial to do, and given it's a massive autogenerated file, and
Document.h is a very common header, it's worth doing this if only for
build times.
Fix a bunch of unused includes while at it.
Differential Revision: https://phabricator.services.mozilla.com/D203625
There are a few testcases that were affected by the switch in bidi implementations
(see patches 5 and 6 in bug 1824671), so we need to update the metadata to reflect
the differing behavior between Nightly and Beta/Release builds. These changes will
be reverted when we allow unicode-bidi to ride the train to Release.
Differential Revision: https://phabricator.services.mozilla.com/D202305
Looking up the BidiClass property via icu_properties is more efficient than the
built-in version provided in unicode-bidi.
Differential Revision: https://phabricator.services.mozilla.com/D198449
This will cause `./mach vendor rust` to pull it into the tree.
Note that actually running `./mach vendor rust` requires the file-size limit in vendor_rust.py
to be temporarily raised (from 100K to 300K is enough) because of large files in the icu_properties
crate. This does not contribute significant bloat to the binary, though, because only actually-used
data ends up in the build.
Differential Revision: https://phabricator.services.mozilla.com/D198446
unicode-bidi more closely follows the UAX#9 recommendations for processing embedding controls
if they're not actually removed from the text; but this is not an actual spec requirement,
so either behavior is acceptable.
Differential Revision: https://phabricator.services.mozilla.com/D197891
Rather than Diplomat-generated, this is hand-written to provide just the functionality needed in intl::Bidi,
to minimize the amount of glue code and ensure a close match to Gecko requirements.
Differential Revision: https://phabricator.services.mozilla.com/D197889
Looking up the BidiClass property via icu_properties is more efficient than the
built-in version provided in unicode-bidi.
Differential Revision: https://phabricator.services.mozilla.com/D198449
This will cause `./mach vendor rust` to pull it into the tree.
Note that actually running `./mach vendor rust` requires the file-size limit in vendor_rust.py
to be temporarily raised (from 100K to 300K is enough) because of large files in the icu_properties
crate. This does not contribute significant bloat to the binary, though, because only actually-used
data ends up in the build.
Differential Revision: https://phabricator.services.mozilla.com/D198446
unicode-bidi more closely follows the UAX#9 recommendations for processing embedding controls
if they're not actually removed from the text; but this is not an actual spec requirement,
so either behavior is acceptable.
Differential Revision: https://phabricator.services.mozilla.com/D197891
Rather than Diplomat-generated, this is hand-written to provide just the functionality needed in intl::Bidi,
to minimize the amount of glue code and ensure a close match to Gecko requirements.
Differential Revision: https://phabricator.services.mozilla.com/D197889
When reloading https://en.wikipedia.org/wiki/Barack_Obama that is used by
browsertime benchmark, `CountGraphemeClusters` is called around 3000 times.
But half calls are that `aText` is empty.
So if we add fast path for empty text, we can avoid a lot of heap allocations
of `ICU4XGraphemeClusterBreakIteratorUtf16`.
Differential Revision: https://phabricator.services.mozilla.com/D196008
When running wikipedia's page by browsertime benchmark, 0.5%-1% calls of
`LineBreaker::ComputeBreakPositions` is that aLength is 1. If this is 1,
we only set SOT break in ICU4X's line segmenter.
So we can add a fast-path for this situation. `ICU4XLineBreakIterator*`
always allocate rust heap, so we can reduce a few heap allocation costs.
Differential Revision: https://phabricator.services.mozilla.com/D195523
This file shows up after running `update-icu4x.sh`. It is part of the downloaded
`icu_capi` crate. We should check it in for completeness even if it is not used.
Differential Revision: https://phabricator.services.mozilla.com/D195591