summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-11-18Fuzzers: Use ImageDecoderPlugin::frame() in image decoder fuzzersAndreas Kling
Let's work towards getting rid of the first-frame-only bitmap() API.
2021-11-18Kernel: Make VirtualRangeAllocator setup functions propagate errorsAndreas Kling
If an internal allocation failure occurs while setting up a new VRA, we'll now propagate the error to our caller instead of panicking.
2021-11-18AK: Make RedBlackTree::try_insert() return ErrorOr<void> instead of boolAndreas Kling
2021-11-18Kernel: Propagate Vector append failures from Inode::apply_flock()Andreas Kling
2021-11-18LibWeb: Delete CSSLoaderSam Atkins
All CSS loading is now done by the relevant classes: - CSSImportRule, which loads its linked stylesheet - HTMLStyleElement, which "loads" its contents - HTMLLinkElement, which loads its linked stylesheet
2021-11-18LibWeb: Make HTMLLinkElement responsible for its own loadingSam Atkins
This is the last use of CSSLoader, which can now be deleted.
2021-11-18LibWeb: Remove `for_first_not_loaded_import_rule()` :^)Sam Atkins
This was only used for making sure `@import` rules got loaded, and since they handle that themselves now, we can get rid of all this code!
2021-11-18LibWeb: Remove redundant `@import`-handling code from CSSLoaderSam Atkins
Now that `@import` rules load themselves, we don't want to also load them here.
2021-11-18LibWeb: Make `@import` rules functional again :^)Sam Atkins
The changes in commit d462a6720afe721b6821ce14d5b7802d1890b61f meant that `CSSLoader::load_next_import_if_needed()` was no longer being called, so no `@import` rules were loading. The spec does not seem to mention when that loading should take place, but WebKit does this at parse time, as each rule is added to the style sheet. If it works for them, it's probably not that bad. :^) So, that's what we now do here. The `CSSImportRule` creates a fetch request when it is constructed, so each one is responsible for its own contents.
2021-11-18Ports: Remove ScummVM's SVG patchJelle Raaijmakers
No longer necessary now that we have a better `acosf` implementation.
2021-11-18AK: Implement `acos<T>` correctlyJelle Raaijmakers
This is a naive implementation based on the symmetry with `asin`. Before, I'm not really sure what we were doing, but it was returning wildly incorrect results.
2021-11-18Base: Add Shavian characters to font Katica Regular 10Lady Gegga
10450–1047F https://unicode.org/charts/PDF/U10450.pdf
2021-11-18LibRegex: Avoid rewriting `a+` as `a*` as part of atomic rewritingAli Mohammad Pur
The initial `ForkStay` is only needed if the looping block has a following block, if there's no following block or the following block does not attempt to match anything, we should not insert the ForkStay, otherwise we would be rewriting `a+` as `a*` by allowing the 'end' to be executed. Fixes #10952.
2021-11-18LibConfig: Add list methods for groups and keysfaxe1008
Use the methods exposed by ConfigServer to list groups and keys.
2021-11-18ConfigServer: Add methods to list groups and keysfaxe1008
Applications that make use of LibConfig anyway have now a way of listing the groups and keys without resorting to using Core::ConfigFile directly.
2021-11-18Base: Add Deseret characters to font Katica Regular 10Lady Gegga
10400-1044F https://www.unicode.org/charts/PDF/U10400.pdf Adjust 1750
2021-11-17LibJS: Fix incorrect use of "modulo" in get_iso_parts_from_epoch()Linus Groh
This would return incorrect results for negative inputs. It still does to some extent, remainder() in step 2 might need to be replaced with modulo (I opened an issue in tc39/proposal-temporal about that).
2021-11-17LibJS: Disallow Temporal.Duration input values to be non-integersLinus Groh
This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/8c85450
2021-11-17LibWeb: Implement `background-repeat: round` :^)Sam Atkins
2021-11-17LibWeb: Implement `background-repeat: space`Sam Atkins
2021-11-17LibWeb: Implement background-size :^)Sam Atkins
This is including the `cover` and `contain` modes.
2021-11-17LibWeb: Implement background-position and background-origin :^)Sam Atkins
2021-11-17LibWeb: Stop consuming too many tokens when parsing background-positionSam Atkins
This was causing inputs like `0% 0%` to think only one value was provided.
2021-11-17LibWeb: Manually tile background imagesSam Atkins
This reimplements image tiling instead of using `Painter::blit_tiled()`, so that we will be able to handle CSS's more complicated repetition rules. (Like `background-repeat: space`) Otherwise this does the same as before. :^)
2021-11-17LibWeb: Implement background-clip :^)Sam Atkins
We now pass in the Layout Node so that we can read the BoxModelMetrics. Renamed a couple of variables too for clarity.
2021-11-17LibWeb: Store all background properties in BackgroundLayerDataSam Atkins
All of this is now passed along to `paint_background()`. :^) (As always, "all" excludes the background-color since that's not a layer property.)
2021-11-17LibWeb: Remove background_image from NodeWithStyleSam Atkins
We now entirely use the background-layers to check images.
2021-11-17LibWeb: Remove background-repeat/image fields and gettersSam Atkins
These aren't needed now that we render using background_layers instead. The one casualty is the resolved style for background-repeat, but that was incorrect anyway.
2021-11-17LibWeb: Paint backgrounds with multiple layers :^)Sam Atkins
2021-11-17LibWeb: Store background layers in ComputedValuesSam Atkins
Instead of storing these as individual `background-foo` properties, we combine them together into layers, since that is how they will be painted. It also makes it more convenient to pass them around.
2021-11-17LibWeb: Stop 'no-repeat' from expanding the background areaSam Atkins
Previously, a `background-repeat` value of `no-repeat` in a direction would cause the image to be drawn at exactly that size. This was fine if the image was smaller than the element, but if it was larger, it would draw outside its bounds. Now, it behaves itself. :^)
2021-11-17LibWeb: Handle multiple backgrounds in StyleComputerSam Atkins
This actually involves doing *less*, because we now just pass the StyleValueLists through instead of needing to grab their first layer's value. :^)
2021-11-17LibWeb: Bring BackgroundStyleValue::to_string() to specSam Atkins
This now outputs valid CSS representing the background, instead of confusing debug info. We can't guarantee that all the longhands have the same number of values, since while that's always the case when parsing, we also create BackgroundStyleValues when producing the resolved style, which just combines the longhands together.
2021-11-17LibWeb: Parse multiple backgrounds :^)Sam Atkins
Like the `background-foo` longhand properties (except `background-color`), `background` allows multiple layers to be defined, separated by commas. A layer does not necessarily contain something to actually draw! This parses as a `BackgroundStyleValue`, holding a `StyleValueList` for each property. This is mostly to make expansion into longhands simpler - if we had a list of `BackgroundStyleValue`s instead, one per layer, then we would have to break it up per-property anyway when computing styles.
2021-11-17LibWeb: Parse comma-separated lists for most background propertiesSam Atkins
We now can parse lists of values for these properties: - `background-attachment` - `background-clip` - `background-image` - `background-origin` - `background-position` - `background-repeat` - `background-size` This uses two new Parser methods: `parse_simple_comma_separated_value_list()` for the simple case when each value is parsed from a single token; and `parse_comma_separated_value_list()` which takes a lambda for when parsing each value is more involved. This also means that any unconsumed tokens at the end will make the parsing fail as it should, where previously we just ignored them.
2021-11-17LibWeb: Prevent copying CSS TokenStreamSam Atkins
This was leading to confusing bugs where I was accidentally passing it by value and then wondering why tokens weren't getting consumed!
2021-11-17LibWeb: Remove CSS Parser method overloads with no TokenStream parameterSam Atkins
These are just clutter. Only one was ever used, in one place, and is easily replaced by just passing `m_token_stream` to it.
2021-11-17LibWeb: Remove ParsingContext parameter from private CSS Parser methodsSam Atkins
This was only needed when they were all static.
2021-11-17LibWeb: Make CSS Parser methods non-staticSam Atkins
Past me thought making as much static as possible was a good idea, but it just makes things more verbose, and awkward if anything isn't also static.
2021-11-17Base: Add additional test cases to backgrounds.htmlSam Atkins
- Add background color to `background-clip` test - Add a mixed `background-repeat: space round` test
2021-11-17LibWeb: Add NodeWithStyleAndBoxModelMetrics to Forward.hSam Atkins
2021-11-17Kernel: Automatically sync shared file mappings when unmappedAndreas Kling
To make sure we don't lose changes, shared file mappings will now be fully synced when they are unmapped, whether explicitly or implicitly (by the program exiting/crashing/etc.) This can incur a lot of work, since we don't keep track of dirty pages, but that's something we can optimize down the road. :^)
2021-11-17Kernel: Allow mmap() with PROT_WRITE+MAP_SHAREDAndreas Kling
Now that we have a way to flush changes back to disk, let's allow this type of mapping.
2021-11-17Kernel+LibC: Add msync() system callAndreas Kling
This allows userspace to trigger a full (FIXME) flush of a shared file mapping to disk. We iterate over all the mapped pages in the VMObject and write them out to the underlying inode, one by one. This is rather naive, and there's lots of room for improvement. Note that shared file mappings are currently not possible since mmap() returns ENOTSUP for PROT_WRITE+MAP_SHARED. That restriction will be removed in a subsequent commit. :^)
2021-11-17Kernel: Add MemoryManager::copy_physical_page()Andreas Kling
This is a handy helper that copies out the full contents of a physical page into a caller-provided buffer. It uses quickmapping internally (and takes the MM lock for the duration.)
2021-11-17Base: Add Buhid characters to font Katica Regular 10Lady Gegga
1740–175F https://www.unicode.org/charts/PDF/U1740.pdf
2021-11-17LibJS + js: Rethrow exception on the vm after bytecode interpreter rundavidot
When the bytecode interpreter was converted to ThrowCompletionOr<Value> it then also cleared the vm.exception() making it seem like no exception was thrown. Also removed the TRY_OR_DISCARD as that would skip the error handling parts.
2021-11-17LibJS: Remove fallback value for get_offset_nanoseconds_forLuke Wilde
This is a normative change in the Temporal spec. See: https://github.com/tc39/proposal-temporal/commit/664f02d Note that the tests are not comprehensive.
2021-11-17LibJS/Tests: Fix failing Array.prototype.toLocaleString() testLinus Groh
2021-11-17LibJS: Implement ECMA-402 Array.prototype.toLocaleStringTimothy Flynn
Turns out the only difference between our existing implementation and the ECMA-402 implementation is we weren't passing the locales and options list to each element.toLocaleString invocation. This also adds spec comments to the definition.