* Update mozjs
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Fix changed readTransfer callback
https://bugzilla.mozilla.org/show_bug.cgi?id=1842713
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Use NewExternalArrayBuffer from glue
d33454be74
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Fix columnorigin and filename being in latin1
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* fixup newexternalarray
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Float16 (this might require more work for codegen support)
https://bugzilla.mozilla.org/show_bug.cgi?id=1833647
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* js.strict is removed
https://bugzilla.mozilla.org/show_bug.cgi?id=1621603
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* asm options are now somewhere else
https://hg.mozilla.org/mozilla-central/rev/26045c88e3972957087d535e7f259e08857bd2a2
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Comment out offthread compilation
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Set NDK to 26
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Fix 1-origin handling
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Expect `FinalizationRegistry` interface
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Good expectations
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* more expectations
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Add `WeakRef` to interfaces expectation
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* mozjs upgrade: fixes for Android
Android NDK's layout has changed in r26 and 'lib64' no longer exists
under `toolchain/llvm/prebuilt/linux-x86_64`. The libraries that used to
be it are now present in `lib` folder itself.
This patch updates the build configuration to use the `lib` folder
instead when configuring the LIBCLANG_PATH environment variable.
This patch also updates to a newer mozjs version that includes fixes for
linker errors faced on Android (see #32769).
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Patch libz-sys & update mozjs
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* update NDK version in README
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Use servo/mozjs
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Update mozjs again
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Update wgpu to c0e7c1ef94
This is few commits ahead of wgpu 22.0
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Make it compile
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Move usage checking to device timeline as per spec
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Add logging (trace) of WEBGPU messages
This is very useful when debugging
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* update wgpu again
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* set good
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* skip `webgpu:api,operation,memory_sync,texture,same_subresource` for flakyness
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* rm r.json
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
PR #32465 broke the lint because it initializes FileList with a
file name (./Cargo.lock). This causes it to always return an empty
list when the `only_changed_files` parameter is `False` since `os.walk`
requires a directory and not a file.
Fixes#32530.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
JNI methods in `jniapi` now have explicit lifetime
annotations to adapt it to the new `jni` version.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* servoshell: Upgrade `egui` and many other dependencies
This upgrades:
- `core-graphics`
- `core-text`
- `egui` and friends
- `font-kit`
- `glow` and friends
- `harfbuzz-sys`
- `jni`
- `nix`
- `raqote`
- `raw-window-handle`
- `winit`
* Downgrade jni until we can properly upgrade
* Update some test results
It's unclear why these are now passing, but they are.
---------
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This brings the version of WebRender used in Servo up-to-date with Gecko
upstream. The big change here is that HiDPI is no longer handled via
WebRender. Instead this happens via a scale applied to the root layer in
the compositor. In addition to this change, various changes are made to
Servo to adapt to the new WebRender API.
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Remove packages that were moved to external repo
* Add workspace dependencies pointing to 2023-06-14 branch
* Fix servo-tidy.toml errors
* Update commit to include #31346
* Update commit to include servo/stylo#2
* Move css-properties.json lookup to target/doc/stylo
* Remove dependency on vendored mako in favour of pypi dependency
This also removes etc/ci/generate_workflow.py, which has been unused
since at least 9e71bd6a70.
* Add temporary code to debug Windows test failures
* Fix failures on Windows due to custom target dir
* Update commit to include servo/stylo#3
* Fix license in tests/unit/style/build.rs
* Document how to build with local Stylo in Cargo.toml
This should fix issues that we have with Float16 support on newer LLVM.
This also updates style, in order to remove the duplicate version of
bindgen. We will soon be able to manage updates to style more
consistently.
* Android build
* Fixes
* More fixes
- Still failing in the linking step
* More work on getting linking working
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* android: use mozjs with ndk r25c. loads servo.org
more android build fixes.
* fix ./mach run for android and make it follow logs
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* add experimental logic for compositor pause/resume
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* pass DPI from android to simpleservo
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* ci: add android workflow
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* switch to ANDROID_SDK_ROOT and ANDROID_NDK_ROOT vars
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* upgrade gradle to 4.10.1
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* upgrade to gradle 5.1.1
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* upgrade to gradle 8 and agp 8
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* make compositing work again with external present
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* android: improve mach support for non-NixOS and CI
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* fix sampler compilation bug introduced in #30490
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* ci: add android build to main workflow
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* gradle: set MinSdk = targetSdk = 30
NDK requires we compile against the minSdk API level
which is 30 in our case.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* add instructions for android in README.md
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* apk: move servosurface to servoview
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* apk: uncomment the mediasession callbacks on MainActivity
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* apk: fix crash on MainAtivity.onDestroy
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* apk: drop VR, arm 5 and unused code
This commit drops:
* support for google, oculusvr
* support for arm5 architecture
and also removes
* fakeld scripts
* unused java code
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* cleanup shell.nix
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* android: add FIXMEs for gstreamer code
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* apk: remove commented code and debug logs
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* cleanup ServoView.java
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* mach: comment call to download gstreamer deps for android
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* disable bluetooth for jniapi as blurdroid is broken
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* fixup! README.md
* fixup! remove change in Cargo.toml
* fixup! move shell variables together
* fixup! cleanup jniapi/Cargo.toml comments
* delete commented gstreamer related android code
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* remove unused config variable in servbuild
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* android: more cleanup
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* force no_static_freetype only for android
* use actions to manage sdk, ndk and java
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* rename embedder event names to be more clear.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* link to startup crash issue
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* fix lint issues
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* upgrade env_logger to 0.10 with duplicate exception
libservo and android_logger can use env_logger 0.10
but quickcheck is still stuck on 0.8 and has not seen
any activity in the last 2 years. This commit adds
a duplicate exception until the quickcheck dependency
can be upgraded (or replaced)
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* android: fix comments
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* disable jemalloc on android
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* fixup! replace linux with android in cfg
---------
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
- Upgrade the version of GStreamer for Windows
This upgrades the Windows build to use the most recent version of
GStreamer. This is necessary to upgrade our GStreamer dependency.
- Stop shipping GStreamer binaries on Linux
The binary bundle of GStreamer that we package is not used to compile --
only to run layout tests. It's too old for the APIs that we are using
(as evidenced by needed 1.18 for WebRTC) and nowadays Linux
distributions carry a new version so it's unecessary for our build
machines. No longer using this binary bundle will allow us to upgrade
our GStreamer dependency -- which now has stricter checks that we
are using at least version 1.18.
- Upgrade media to use newer versions of GStreamer / GLib dependencies
* Replace virtualenv with Python's built-in venv.
* Apply Delan's suggestions and make a couple small fixes
- Fix a tidy warning about directories that don't exist
- Use shutil instead of the redundant get_exec_path
- Miscellaneous cleanups
* Fix typo in environment variable
* fix bug where pip still tries to the wrong site-packages
---------
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Delan Azabani <dazabani@igalia.com>
* Remove script_plugins
* Use crown instead of script_plugins
* crown_is_not_used
* Use crown in command base
* bootstrap crown
* tidy happy
* disable sccache
* Bring crown in tree
* Install crown from tree
* fix windows ci
* fix warning
* fix mac
libscript_plugins.dylib is not available anymore
* Update components/script/lib.rs
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
* Update for nightly-2023-03-18
Mostly just based off https://github.com/servo/servo/pull/30630
* Always install crown
it's slow only when there is new version
* Run crown test with `mach test-unit`
* Small fixups; better trace_in_no_trace tests
* Better doc
* crown in config.toml
* Fix tidy for real
* no sccache on rustc_wrapper
* document rustc overrides
* fixup of compiletest
* Make a few minor comment adjustments
* Fix a typo in python/servo/platform/base.py
Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>
* Proper test types
* Ignore tidy on crown/tests
---------
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
* Update to syn 2 where possible
* Cleanups
* Better no_trace comment
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
---------
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
* Update mozjs
* moztools4 in bootstrap
* no autoconf
* tidy
* switch to servo-build-deps
* update mozjs for real
* glue mozjs
* fmt
* move to servo/mozjs
rust-clipboard is unmaintained, which means that it pulls in very old
dependencies (including a version xcb with 3 critical security
vulnerabilities). In addition, we already depend on arboard. This
removes four crates from our dependency graph.
Now that our dependencies are using a newer version of rand we can
upgrade. This change also disables the WebRender debugger feature
because it has been removed in later versions of WebRender and allows
deduplicated the rand dependency as well as quite a few others.
* Allow noidl files in script/dom/webidls
* Upgrade wgpu to 0.16 and refresh whole webgpu implementation
* Update WebGPU test expectations
* misc
* MutNullableDom -> DomRefCell<Option<Dom for GPUTexture
* Direct use of GPUTextureDescriptor
* Remove config from GPUCanvasContext
* misc
* finally blue color
* gpubuffer "handle" error
* GPU object have non-null label
* gpu limits and info
* use buffer_size
* fix warnings
* Cleanup
* device destroy
* fallback adapter
* mach update-webgpu write webgpu commit hash in file
* Mising deps in CI for webgpu tests
* Updated expectations
* Fixups
* early reject
* DomRefCell<Option<Dom -> MutNullableDom for GPUTexture
* style: Simplify selector flag setting now that flag setting is atomic
These bits are write-only, actually, and we don't even need to read
them.
Differential Revision: https://phabricator.services.mozilla.com/D141888
* Further changes required by Servo
* style: Support media queries for dynamic-range and video-dynamic-range
This is a stub that only matches "standard" for all platforms.
Differential Revision: https://phabricator.services.mozilla.com/D141053
* style: Remove :-moz-lwtheme-{brighttext,darktext}
They are just convenience for :root[lwthemetextcolor="light"] (and dark,
respectively), but they generally shouldn't be used for dark mode
theming. In the past it was the only way to do it but now we have
prefers-color-scheme.
While at it, change lwthemetextcolor to be "lwtheme-brighttext" for
consistency with similar code we have for popups etc, and move it to
_setDarkModeAttributes.
While at it, remove layout.css.moz-lwtheme.content.enabled (which is
false always, we unshipped these from content successfully).
Differential Revision: https://phabricator.services.mozilla.com/D141593
* style: layout.css.moz-locale-dir.content.enabled
We successfully removed these from content in bug 1740230 (Firefox 96).
Differential Revision: https://phabricator.services.mozilla.com/D141727
* style: Really honor background-color: transparent in HCM even for form controls
I forgot we were doing this "revert-or-initial" shenanigans (which is needed
for stuff like link colors to be honored), so we need to early-return.
Use a more explicit test rather than a reftest for this.
Differential Revision: https://phabricator.services.mozilla.com/D142063
* style: Ignore unchanged property for scroll-linked effect detector
I think this is cleaner.
Differential Revision: https://phabricator.services.mozilla.com/D141737
* style: Allow to derive Parse/ToCss/SpecifiedValueInfo on bitflags
We keep getting this pattern of properties that have a set of joint and
disjoint flags, and copy-pasting or writing the same parsing and
serialization code in slightly different ways.
container-type is one such type, and I think we should have a single way
of dealing with this, thus implement deriving for various traits for
bitflags, with an attribute that says which flags are single vs mixed.
See docs and properties I ported. The remaining ones I left TODOs with,
they are a bit trickier but can be ported with some care.
Differential Revision: https://phabricator.services.mozilla.com/D142418
* Further changes required by Servo
* style: Implement parsing / serialization for container{,-type,-name} CSS properties
Two noteworthy details that may seem random otherwise:
* Moving values around in nsStyleDisplay is needed so that the struct
remains under the size limit that we have to avoid jumping allocator
buckets.
* All the test expectation churn is because tests depend on
`container-type: size` parsing to run, and now they run. Tests for
the relevant bits I implemented are passing, with the only exception
of some `container-name-computed.html` failures which are
https://github.com/w3c/csswg-drafts/issues/7181. Safari agrees with
us there.
Other notes when looking at the spec and seeing how it matches the
implementation:
* `container` syntax doesn't match spec, but matches tests and sanity:
https://github.com/w3c/csswg-drafts/issues/7180
* `container-type` syntax doesn't _quite_ match spec, but matches tests
and I think it's a spec bug since the definition for the missing
keyword is gone:
https://github.com/w3c/csswg-drafts/issues/7179
Differential Revision: https://phabricator.services.mozilla.com/D142419
* style: Remove assert that doesn't hold for text-decorations because of presentation hints
MANUAL PUSH: Orange fix CLOSED TREE
* style: Migrate `<th>` `text-align` behaviour from presentation hint to UA CSS
Differential Revision: https://phabricator.services.mozilla.com/D142494
* style: Deduplicate TokenList values faster
Remember whether we have already de-duplicated them once and avoid doing
that again.
This is an alternative approach that doesn't add overhead to attribute
setting in the general case.
Differential Revision: https://phabricator.services.mozilla.com/D142813
* style: Inherit used color-scheme from embedder <browser> elements
This allows popups and sidebars to use the chrome preferred
color-scheme.
This moves the responsibility of setting the content-preferred color
scheme to the appropriate browsers to the front-end (via tabs.css).
We still return the PreferredColorSchemeForContent() when there's no
pres context (e.g., for display:none in-process iframes). We could
potentially move a bunch of the pres-context data to the document
instead, but that should be acceptable IMO as for general web content
there's no behavior change in any case.
Differential Revision: https://phabricator.services.mozilla.com/D142578
* Further changes required by Servo
* style: Add basic @container rule parsing and boilerplate
For now parse a MediaFeatureCondition. That needs being made more
specific, but that is probably worth its own patch.
Differential Revision: https://phabricator.services.mozilla.com/D143192
* Further changes required by Servo
* style: Tweak cascade priority to split writing-mode and font properties
This makes the worst case for cascade performance slightly more
expensive (4 rather than three declaration walks), but my hope is that
it will make the average case faster, since the best case is now just
two walks instead of three, and writing mode properties are somewhat
rare.
This needs a test, but needs to wait until the writing-mode dependent
viewport units land (will wait to land with a test).
Differential Revision: https://phabricator.services.mozilla.com/D143261
* style: Implement new {small,large,dynamic} viewport units
Differential Revision: https://phabricator.services.mozilla.com/D143252
* Further changes required by Servo
* style: Implement new *vi and *vb units
Differential Revision: https://phabricator.services.mozilla.com/D143253
* style: Implement prefers-contrast: custom and let prefers-contrast ride the trains
Differential Revision: https://phabricator.services.mozilla.com/D143198
* style: Join servo style threads during shutdown
I was unable to change the BLOOM_KEY field to no longer be leaked, as the TLS
is also accessed on the main thread, which is not exited before the leak
checker shuts down.
Differential Revision: https://phabricator.services.mozilla.com/D143529
* Further changes required by Servo
* style: Fix visited handling after bug 1763750
Before bug 1763750, we unconditionally called compute_writing_mode,
which got the writing mode from the cascade mode for visited styles.
However after that bug we only do that if we apply any
writing-mode-related property.
We could just call compute_writing_mode unconditionally, but instead it
seems better to skip all that work for visited cascade and reuse the
mechanism introduced in that bug to only apply the visited-dependent
longhands.
We assert that all visited-dependent longhands are "late" longhands, so
as to also avoid applying the font group and such.
Differential Revision: https://phabricator.services.mozilla.com/D143490
* style: Clean-up viewport unit resolution a bit
I should've caught this when reviewing the new viewport units but alas :-)
Differential Revision: https://phabricator.services.mozilla.com/D143856
* style: Implement `contain: inline-size`
Differential Revision: https://phabricator.services.mozilla.com/D143501
* style: Simplify media query evaluation code a bit
This patch:
* Removes generic <ident> support for media features. These were used
for some privileged media features but are no longer used.
* Simplifies media feature getters by shifting the responsibility of
dealing with RangeOrOperator to the caller. This makes it easier to
implement container-query / mediaqueries-4 syntax, and also cleans up
the code a bunch.
There should be no change in behavior.
Differential Revision: https://phabricator.services.mozilla.com/D144051
* Further changes required by Servo
* style: Move transitions and animations to nsStyleUIReset
This mostly just moves code around, to minimize potential behavior
changes. There are some cleanups that we should try to do long term
(this "have an array with n different counts" is pretty weird).
But for now this should unblock people.
The destination struct (nsStyleUIReset) was chosen mainly because it's
small and non-inherited, and it doesn't seem like a worse place than
nsStyleDisplay.
Differential Revision: https://phabricator.services.mozilla.com/D144183
* Further changes required by Servo
* style: Make media feature evaluation take a computed::Context
This has no behavior change right now, but will simplify sharing code
with container queries.
Container queries will have container information in the
computed::Context (this is necessary anyways for container-based units),
so this avoids having to have different code for media and container
queries.
Differential Revision: https://phabricator.services.mozilla.com/D144152
* Further changes required by Servo
* style: Add scroll() to animation-timeline for style system
scroll() is defined in the spec proposal, and there is a temporary spec:
https://drafts.csswg.org/scroll-animations-1/rewrite#scroll-notation.
The spec is still under development, so we don't drop the orignal
scroll-timeline at rule. Instead, we add a new scroll() notation to
animation-timeline, and support both syntax for now.
Differential Revision: https://phabricator.services.mozilla.com/D143417
* style: Tweak contain bitflag definition order to avoid static constructors
This has no behavior change otherwise. The STRICT definition depended on
SIZE, which was defined later. That's fine in Rust, but in C++ it causes
the initialization to be dynamic because it doesn't have the definition
of SIZE yet (ugh).
This is the fix for the regression, though the following patch turns on
constexpr support in cbindgen, which would've caught this at build-time,
and guarantees that we don't have extra static constructors.
Differential Revision: https://phabricator.services.mozilla.com/D144316
* style: Move some of the media query code to a more generic queries module
No behavior change, just moving and renaming files.
The code in the "queries" module will be shared between @media and
@container.
@media has some other code that container queries doesn't need like
MediaList / MediaType / etc. That remains in the media_queries module.
Differential Revision: https://phabricator.services.mozilla.com/D144435
* Further changes required by Servo
* style: cleanup animation-name
Make the representation the same between Gecko and Servo code. This will
enable further clean-ups in the future.
Make serialization be correct, serializing as identifier unless it's an
invalid one (in which case we serialize as a string).
This changes our stringification behavior in the specified style, but
now it will match the computed style and be more correct over-all.
Differential Revision: https://phabricator.services.mozilla.com/D144473
* Further changes required by Servo
* style: Add support for parsing container-query-specific features
There are some mediaqueries-5 features that we still don't support and
explain the remaining failures in at-container-{parsing,serialization}.
Differential Revision: https://phabricator.services.mozilla.com/D144446
* Further changes required by Servo
* style: Introduce Optional<T> to represent optional values in the style system
cross-fade() was kinda doing this in its own way with PercentOrNone, but
since now we have more use-cases for this we should probably make this a
slightly more general solution.
I added some convenience APIs, but they're unused as of this patch so
let me know if you want them gone.
Differential Revision: https://phabricator.services.mozilla.com/D144831
* style: Fix insertRule with layer statements before imports
We need to do a bit more nuanced check because @layer statements might
go before imports.
Differential Revision: https://phabricator.services.mozilla.com/D144996
* style: Factor out parsing the query feature name
No behavior change.
Differential Revision: https://phabricator.services.mozilla.com/D145229
* style: Refactor media feature expression representation in preparation to support multi-range syntax
No behavior change.
Depends on D145229
Differential Revision: https://phabricator.services.mozilla.com/D145230
* style: Implement media feature expression multi-range syntax
Differential Revision: https://phabricator.services.mozilla.com/D145231
* style: Remove proton places tooltip code
There's nobody working on it, and tooltips should hopefully be nice
enough after recent changes (bug 1765423).
Having it enabled causes artifacts like bug 1767815 comment 3. We can
always rescue this from hg history if needed.
Differential Revision: https://phabricator.services.mozilla.com/D145621
* style: Simplify selector flags setup even more
In my investigation for bug 1766439, I am digging into why selector
matching regressed.
It doesn't help that the selector-matching code is instantiated a
gazillion times (so there's a ton of copies of the relevant functions).
This was needed in the past because we had different ways of setting the
selector flags on elements, but I unified that recently and now we only
need to either set them or not. That is the kind of thing that
MatchingContext is really good for, so pass that instead on
MatchingContext creation.
Differential Revision: https://phabricator.services.mozilla.com/D145428
* Further changes required by Servo
* style: Track @container condition id in style rules
Much like we track layer rules. Consolidate that "containing rule state
we pass down while building the cascade data" in a single struct that we
can easily restore.
For now, do nothing with it. I want to land this patch separately
because it touches the Rule struct and CascadeData rebuilds, which both
are performance sensitive.
Its layout shouldn't change because I also changed LayerId to be a u16
(this shouldn't matter in practice, since LayerOrder is already a u16).
Differential Revision: https://phabricator.services.mozilla.com/D145243
* Further changes required by Servo
* style: Fix layer statement rules with multiple layer names
MANUAL PUSH: Trivial orange fix CLOSED TREE.
* style: Implement piecewise linear function
Differential Revision: https://phabricator.services.mozilla.com/D145256
* style: Convert specified value tests to compile-time tests
These were written at a time where std::mem::size_of wasn't a `const fn` in
Rust.
Now that it is, we can make these tests live in the style crate, and the build
not to compile if they fail.
Differential Revision: https://phabricator.services.mozilla.com/D146103
* Further changes required by Servo
* style: Move size of tests to compile-time tests in the style crate
Same reasoning as the previous commit.
Differential Revision: https://phabricator.services.mozilla.com/D146104
* Further changes required by Servo
* style: Lint and 32-bit build fix.
MANUAL PUSH: Bustage fix CLOSED TREE
* style: Implement 'update' media feature
Differential Revision: https://phabricator.services.mozilla.com/D146338
* style: Clean up unused -moz-window-shadow values
After bug 1768278 and bug 1767815 there's no more uses of the cliprounded value
in the tree (also it causes artifacts on HiDPI screens so we probably don't
want new usages).
The "sheet" value is unused, and the other values other than "default" and
"none" are only derived from "default", so they don't need to be exposed in the
style system.
Differential Revision: https://phabricator.services.mozilla.com/D145821
* style: More container queries plumbing
Provide container information in computed::Context and use it to resolve
the container queries.
This still fails a lot of tests because we are not ensuring that layout
is up-to-date when we style the container descendants, but that's
expected.
Differential Revision: https://phabricator.services.mozilla.com/D146478
* Further changes required by Servo
* style: Ensure options in listbox selects are not stacking contexts by default
We could have a different property or something but this seems
reasonable as well probably.
Differential Revision: https://phabricator.services.mozilla.com/D146994
* style: Implement overflow-clip-margin: <length>
Differential Revision: https://phabricator.services.mozilla.com/D146432
* style: Change order of container shorthand
Since the initial value of container-type is an open issue [1],
I'm leaving that as-is for now.
[1] https://github.com/w3c/csswg-drafts/issues/7202
Differential Revision: https://phabricator.services.mozilla.com/D147338
* style: Make modal dialog code more generic, and make it apply to fullscreen too behind a pref
For now, don't turn it on by default yet, because I want to wait for
more discussion in https://github.com/w3c/csswg-drafts/issues/6965 and
so on. But I think the code is simple enough to land this.
Differential Revision: https://phabricator.services.mozilla.com/D147295
* style: Cache computed styles objects display: none subtrees
This reuses our existing undisplayed style generation, but in a
per-document rather than per-nsComputedDOMStyle object, which means that
we can avoid re-resolving styles of elements in display: none subtrees
much more often.
This brings the test-case in the bug to par with other browsers or
better, and is much simpler than the initial approach I tried back in
the day.
Differential Revision: https://phabricator.services.mozilla.com/D147547
* Further changes required by Servo
* style: Parse scroll-snap-stop style and propagate it to APZ side
Depends on D146147
Differential Revision: https://phabricator.services.mozilla.com/D145850
* style: Update color-mix() syntax to match the current spec
Test expectation updates for this in the latest patch of the bug.
Differential Revision: https://phabricator.services.mozilla.com/D147002
* Further changes required by Servo
* style: Make the color interpolation code more generic
It's really piece-wise premultiplied interpolation, with a special-case
for hue, so centralize the implementation.
Differential Revision: https://phabricator.services.mozilla.com/D147003
* style: Implement more color-mix() color-spaces
We had code to convert between these and the latest draft supports them so...
Differential Revision: https://phabricator.services.mozilla.com/D147004
* style: Fix color-mix() percentage normalization
Differential Revision: https://phabricator.services.mozilla.com/D147005
* style: Fix hue adjustment to match the spec
The value to sum is tau, not pi. This was caught by some tests, see
https://drafts.csswg.org/css-color/#shorter
Differential Revision: https://phabricator.services.mozilla.com/D147006
* style: Do hue interpolations in degrees rather than radians. r=barret
This gives us a bit more precision.
Differential Revision: https://phabricator.services.mozilla.com/D147007
* style: Improve Percentage -> LengthPercentage conversion
This doesn't change behavior because we only use them for images that
have no clamping.
Depends on D147008
Differential Revision: https://phabricator.services.mozilla.com/D147511
* style: Remove some dead vibrancy code
Drive-by cleanup.
Differential Revision: https://phabricator.services.mozilla.com/D147698
* style: Fix warnings about whitelist/blocklist functions being deprecated in bindgen 0.59
Differential Revision: https://phabricator.services.mozilla.com/D147695
* style: Update style to arrayvec 0.7
Differential Revision: https://phabricator.services.mozilla.com/D147476
* style: Update style to uluru 3.0
Differential Revision: https://phabricator.services.mozilla.com/D147477
* style: Remove -moz-scrollbar-thumb-proportional
It unconditionally matches on all platforms, so it's not returning any useful information.
Depends on D147689
Differential Revision: https://phabricator.services.mozilla.com/D147690
* style: Use ColorMix for interpolated colors in the computed style rather than ComplexColorRatios
This among other things preserves the right color-space when
interpolating currentColor.
Differential Revision: https://phabricator.services.mozilla.com/D147512
* Further changes required by Servo
* style: Add an input-region-margin to widgets, and implement it on Linux
Recompute the input region when resizing the widget and so on, and use
it to check for rollups.
Depends on D148211
Differential Revision: https://phabricator.services.mozilla.com/D148222
* Avoid complaints from ./mach test-tidy
* Update test expectations
---------
Co-authored-by: Emilio Cobos Álvarez <emilio@crisal.io>
Co-authored-by: Brad Werth <bwerth@mozilla.com>
Co-authored-by: David Shin <dshin@mozilla.com>
Co-authored-by: Hiroyuki Ikezoe <hikezoe.birchill@mozilla.com>
Co-authored-by: Nika Layzell <nika@thelayzells.com>
Co-authored-by: Boris Chiou <boris.chiou@gmail.com>
Co-authored-by: Autumn on Tape <autumn@cyfox.net>
Co-authored-by: Mike Hommey <mh+mozilla@glandium.org>
* winit: add minibrowser feature that depends on egui{,-winit}
* winit: carve out some space at the top of headed windows
* winit: minimal toolbar and egui/winit integration (but no painting)
* winit: try to paint with egui_glow (doesn’t work yet)
* winit: add comment about toolbar size
* Add framebuffer object, set it as glow's target
* compositing: clear only the viewport, not the whole framebuffer
* plumb the actual size of the egui toolbar to webrender
* fix formatting
* winit: fix crash when fbo is zero
* winit: don’t bother binding the framebuffer object
* winit: remove unsafe and get toolbar_height
* winit: location field should reflect the current top-level url
* [NFC] winit: move Minibrowser out of App::run
* winit: clean up toolbar height code
* winit: make App own the Minibrowser if any
* winit: make the go button work
* winit:make the location field reflect the current top-level url
* winit: allow enabling minibrowser from command line
* winit: tell compositor to repaint WR and flush when we repaint
* winit: fix bug where location field edits would get overridden
* winit: borrow the minibrowser once in App::handle_events
* winit: address todo about viewport origin coordinates
* winit: fix some minor problems with comments and errors
* winit: update location field once per HistoryChanged event
* winit: rename Window::set_toolbar_size to set_toolbar_height
* winit: take toolbar height into account in hit testing
* winit: pass egui only relevant CursorMoved events
* winit: scratch that, coalesce minibrowser updates instead
* ensure both minibrowser and WR are repainted on every frame
* compositing: only skip framebuffer clear in external present mode
* winit: destroy egui glow Painter when shutting down
* winit: clean up and fix license lint
* fix duplicate versions lint by downgrading bytemuck_derive
was egui_glow ^0.22.0 (0.22.0)
→ egui/bytemuck ^0.22.0 (0.22.0)
→ epaint/bytemuck ^0.22.0 (0.22.0)
→ bytemuck ^1.7.2 (1.13.1)
→ bytemuck_derive ^1.4 (1.4.1)
→ syn ^2.0.1 (2.0.28)
now lock has bytemuck_derive 1.4.0
→ syn ^1.0.99 (1.0.103)
* fix duplicate versions lint by disabling egui-winit/links
(we don’t need support for hyperlinks in our use of egui)
* squelch duplicate versions lint by excluding clipboard-win
* winit: fix compile warnings
* winit: make gleam an optional dependency under /minibrowser
* winit: remove cargo feature, since it’s not really optional
* winit: extract Minibrowser and related code to separate module
* winit: remove unnecessary trailing comma
* winit: simplify the ServoUrl serialisation optimisation
---------
Co-authored-by: atbrakhi <atbrakhi@igalia.com>