1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:28:11 +00:00
Commit graph

39626 commits

Author SHA1 Message Date
Andreas Kling
a6e1b9eed2 LibWeb: Snap transformed stacking contexts to pixel grid
Make sure that we're painting them at an integer pixel position, to
avoid smearing.
2022-07-21 01:46:25 +02:00
Andreas Kling
e095b9c6f9 LibWeb: Resolve auto containing block sizes before intrinsic sizing
Before performing intrinsic sizing layout on a box, we now check if its
containing block has automatic size in the relevant axis, and if so,
we fetch the size of the nearest containing block ancestor with a size.
2022-07-21 01:46:25 +02:00
Andreas Kling
da0cc9d401 LibWeb: Floor hypothetical main size at 0
The spec asks us to do this. It doesn't become relevant until we
implement box-sizing, but might as well do it anyway.
2022-07-21 01:46:25 +02:00
Timothy Flynn
e9e187d15c LibJS: Implement Intl.NumberFormat.prototype.formatRangeToParts 2022-07-20 22:30:16 +01:00
Timothy Flynn
b4a772cde2 LibJS: Implement Intl.NumberFormat.prototype.formatRange 2022-07-20 22:30:16 +01:00
Timothy Flynn
7c490d4da3 LibJS: Move PatternPartitionWithSource structure to AbstractOperations.h
This struct will be needed by more than just the DateTimeFormat object.
Also add an equality operator, which will be needed by NumberFormat.
2022-07-20 22:30:16 +01:00
Timothy Flynn
0a6363d3e9 LibUnicode: Implement the range pattern processing algorithm
This algorithm is to inject spacing around the range separator under
certain conditions. For example, in en-US, the range [3, 5] should be
formatted as "3–5" if unitless, but as "$3 – $5" for currency.
2022-07-20 22:30:16 +01:00
Timothy Flynn
b2709f161e LibUnicode: Generate per-locale approximately & range separator symbols 2022-07-20 22:30:16 +01:00
Ali Mohammad Pur
33d74fb9ce Meta: Upgrade CI's prettier to version 2.7.1
The old version didn't know how to parse regexps with the unicodeSets
flag set.
2022-07-20 21:25:59 +01:00
Ali Mohammad Pur
4387ad9fc6 js: Don't pass error strings as the format argument to outln()
This fixes a crash when the error contains '{}', or an invalid format
string.
2022-07-20 21:25:59 +01:00
Ali Mohammad Pur
e43b478920 LibRegex: Check code unit count range when accessing by code unit count 2022-07-20 21:25:59 +01:00
Ali Mohammad Pur
f4b26b0cea LibJS: Hook up the 'v' (unicodeSets) RegExp flag 2022-07-20 21:25:59 +01:00
Ali Mohammad Pur
598dc74a76 LibRegex: Partially implement the ECMAScript unicodeSets proposal
This skips the new string unicode properties additions, along with \q{}.
2022-07-20 21:25:59 +01:00
Ali Mohammad Pur
7734914909 LibRegex: Refactor parsing 'CharacterEscape' out of 'AtomEscape'
The ECMA262 spec has this as a separate production, and we need it to be
split up for a future commit.
2022-07-20 21:25:59 +01:00
Ali Mohammad Pur
b908f9f6ef LibRegex: Pass parse flags as a struct instead of multiple arguments 2022-07-20 21:25:59 +01:00
Idan Horowitz
d35d106f01 LibJS: Remove invalid CreateDateDurationRecord AO overload 2022-07-20 21:07:49 +01:00
Timothy Flynn
292b8908b5 LibJS: Hook the Intl mathematical value into Intl.NumberFormat 2022-07-20 18:21:24 +01:00
Timothy Flynn
0026e9a4c8 LibJS: Implement a basic Intl mathematical value
The Intl mathematical value is much like ECMA-262's mathematical value
in that it is meant to represent an arbitrarily precise number. The Intl
MV further allows positive/negative infinity, negative zero, and NaN.

This implementation is *not* arbitrarily precise. Rather, it is a
replacement for the use of Value within Intl.NumberFormat. The exact
syntax of the Intl MV is still being worked on, but abstracting this
away into its own class will allow hooking in the finalized Intl MV
more easily, and makes implementing Intl.NumberFormat.formatRange
easier.

Note the methods added here are essentially the same as the static
helpers in Intl/NumberFormat.cpp.
2022-07-20 18:21:24 +01:00
Timothy Flynn
99b79766cd LibJS: Return an enum from ApplyUnsignedRoundingMode
After the Intl MV is implemented, returning a copy of the desired value
here may involve copying non-trivial data. Instead, return an enum to
indicate which decision was made.
2022-07-20 18:21:24 +01:00
Timothy Flynn
20533c2594 LibJS: Avoid FormatNumericToString spec issue more carefully
This becomes more of an issue when implementing the Intl mathematical
value, where negative zero is treated as a special enum value. In that
case, we already previously changed the value from -0 to +0 in step 1b.
Entering the branch for step 4 will then set it back to -0.

The math that follows after these steps worked fine with both +0/-0, but
assertions will be reached in the Intl MV implementation.
2022-07-20 18:21:24 +01:00
Linus Groh
042dfc7284 LibWeb: Move extract_mime_type() from XMLHttpRequest to HeaderList
Except some minor tweaks, this is a direct copy of Luke's initial
implementation in XMLHttpRequest, now replacing the former.
2022-07-20 18:03:21 +01:00
Linus Groh
dfd62437c4 LibWeb: Make IDL-generated iterator prototype next() enumerable as well
https://webidl.spec.whatwg.org/#es-iterator-prototype-object

> An iterator prototype object must have a next data property with
> attributes { [[Writable]]: true, [[Enumerable]]: true,
> [[Configurable]]: true } and whose value is a built-in function object
> that behaves as follows:

This makes three more WPT tests pass here, and likely various others:
http://wpt.live/fetch/api/headers/headers-basic.any.html
2022-07-20 18:03:21 +01:00
Linus Groh
69d324d46a LibWeb: Fix accidental (name, name) header in Headers::fill()
This makes two more WPT tests pass here:
http://wpt.live/fetch/api/headers/headers-basic.any.html
2022-07-20 18:03:21 +01:00
Tim Schumacher
7c824b84e2 LibC: Remove the initialization workaround from s_allocation_enabled 2022-07-20 18:24:13 +02:00
Tim Schumacher
3f59cb5e70 LibELF: Copy the entire TLS segment instead of each symbol one-by-one
This automatically fixes an issue where we were accidentally copying
garbage data from beyond the TLS segment as uninitialized data isn't
actually stored inside the image.
2022-07-20 18:24:13 +02:00
Tim Schumacher
6799b271bf LibELF: Remove outdated TLS handling in generic program header code 2022-07-20 18:24:13 +02:00
Tim Schumacher
224ac1a307 LibC: Remove a bunch of weak pthread_* symbols 2022-07-19 20:58:51 -07:00
Andreas Kling
cf4b7e343a LibWeb: Blockify inline-flex to flex
Previously, `inline-flex` would blockify to `block` since blockification
didn't take the inner display type into account. This is still not
perfect, but it fixes a lot of situations where inline-level flex
containers would be demoted to regular block containers.
2022-07-19 15:40:41 +02:00
Andreas Kling
ed8930fff5 LibWeb: Add accessors for UsedValues::computed_{width,height}
This is preparation for doing some more work when assigning to these
values.
2022-07-19 15:40:41 +02:00
MacDue
c12c9eed38 Base: Add some more border-radius test cases
This adds a test for overflow: hidden + border-radius clipping
child positioned elements, and child backgrounds.
2022-07-19 15:00:59 +02:00
MacDue
0b0a691ecd LibWeb: Fix overflow: hidden not applying to positioned descendants
This now calls before/after_child_paint() on the parent paintable
of a positioned child. This allows the parent's overflow clipping
to apply to the child.
2022-07-19 15:00:59 +02:00
MacDue
f079214b18 LibWeb: Apply overflow: hidden to all (relevant) child paint phases
Previously, before/after_children_paint() was only called for the
"Foreground" paint phase, this meant the backgrounds and other
features of child nodes of a element with overflow: hidden were
not clipped.
2022-07-19 15:00:59 +02:00
kleines Filmröllchen
d0e614c045 Kernel: Don't check that interrupts are enabled during early boot
The interrupts enabled check in the Kernel mutex is there so that we
don't lock mutexes within a spinlock, because mutexes reenable
interrupts and that will mess up the spinlock in more ways than one if
the thread moves processors. This check is guarded behind a debug flag
because it's too hard to fix all the problems at once, but we regressed
and weren't even getting to init stage 2 with it enabled. With this
commit, we get to stage 2 again. In early boot, there are no interrupts
enabled and spinlocks used, so we can sort of kind of safely ignore the
interrupt state. There might be a better solution with another boot
state flag that checks whether APs are up (because they have interrupts
enabled from the start) but that seems overkill.
2022-07-19 12:12:13 +01:00
Andreas Kling
c517dfde12 LibWeb: Honor the flexbox spec's "automatic minimum size" everywhere
`min-width: auto` and `min-height: auto` have special behavior on flex
items. We already handled it in many cases but there were two places
where it was incorrectly treated as 0. This fixes that.
2022-07-19 12:45:50 +02:00
Andreas Kling
789f258412 LibWeb: Reject negative values for flex-grow and flex-shrink 2022-07-19 12:45:50 +02:00
Andreas Kling
f4c68eb0a4 LibJS: Add PrimitiveString::is_empty() and use it
If we're only interested in whether the string is empty, we can skip the
conversion from UTF-16 to UTF-8.
2022-07-19 12:45:50 +02:00
Daniel Bertalan
32480fbeb9 LibCore: Do not refer to extern int daylight in DateTime::to_string
This variable does not exist on FreeBSD.

Co-Authored-By: Al Hoang <13622+hoanga@users.noreply.github.com>
2022-07-19 12:39:24 +02:00
Daniel Bertalan
42e22f89a4 AK+LibGfx+LibJS: Pass -1 as the file descriptor to anonymous mmap
Serenity/Linux/macOS ignore the file descriptor when an anonymous
mapping is requested. However, BSDs require the fd to be -1.
2022-07-19 12:39:24 +02:00
Daniel Bertalan
4bed2ef66b LibCore: Port System::anon_create to FreeBSD
FreeBSD implements the Linux API, so this was very simple luckily.
2022-07-19 12:39:24 +02:00
Daniel Bertalan
ae4d871183 AK: Port StackInfo to FreeBSD
This can almost be identical to the Linux version, except that the
`pthread_attr_t` object is populated using a call to
`pthread_attr_get_np` instead of `pthread_getattr_np`.

FreeBSD also needs `pthread_atttr_t` to be initialized using
`pthread_attr_init` instead of zero-initialization, but it's the
technically correct thing to do on Linux as well.
2022-07-19 12:39:24 +02:00
Daniel Bertalan
cd0fb6dcc8 AK: Do not negate Pthread error codes for strerror()
On all systems I've checked, pthread functions return the positive error
code directly.
2022-07-19 12:39:24 +02:00
b14ckcat
6aea13e229 Kernel/USB: Make UHCI descriptor pool thread-safe
Right now the TD and QH descriptor pools look to be susceptible
to a race condition in the event they are accessed simultaneously
by separate threads making USB transfers. This fix does not seem to
add any noticeable overhead.
2022-07-19 11:29:58 +01:00
kleines Filmröllchen
00e13b5b27 LibDSP: Rename library namespace to DSP
That's the standard naming convention, but I didn't follow it when
originally creating LibDSP and nobody corrected me, so here I am one
year later :^)
2022-07-19 11:17:45 +01:00
kleines Filmröllchen
3f59356c79 LibAudio: Rename ConnectionFromClient to ConnectionToServer
The automatic nomenclature change for IPC sockets got this one wrong.
2022-07-19 11:17:45 +01:00
Lucas CHOLLET
70846d701c LaunchServer+SystemServer: Move the portal to a user-specific directory
Various changes are needed to support this:
 - The directory is created by Core::Account on login (and located in
   /tmp).
 - Service's sockets are now deleted on exit (to allow re-creation)
 - SystemServer needs to handle SIGTERM to correctly destroy services.
2022-07-19 11:15:14 +01:00
Lucas CHOLLET
cc0d53d6a6 LoginServer: Correctly retrieve SystemServer's exit code
The returned value of `waitpid` is the PID of the process and not the
exit code.
2022-07-19 11:15:14 +01:00
MacDue
8266ebf3c6 TextEditor: Debounce update_preview() in on_change event
This avoids lag spikes when undoing/redoing large chunks of HTML/CSS
with the HTML preview open. This had been bugging me when reducing
LibWeb issues in the text editor. The debounce timeout is 100ms
so the delay should not be noticeable.
2022-07-19 11:10:02 +01:00
MacDue
cdcdc095df LibCore: Add Core::debounce(function, timeout)
This is a simple helper to debounce a function call, such as
an event handler. It avoids the function being called until
the event as settled down (i.e. after the timeout).
2022-07-19 11:10:02 +01:00
Liav A
f96e8e97e6 Kernel/Storage: Remove redundant reference to a controller in IDEChannel
IDEChannel which is an ATAPort derived class holded a NonnullRefPtr to a
parent IDEController, although we can easily defer the usage of it to
not be in the IDEChannel code at all, so it allows to keep NonnullRefPtr
to the parent ATAController in the ATAPort base class and only there.
2022-07-19 11:07:34 +01:00
Liav A
0810c1b972 Kernel/Storage: Introduce basic abstraction layer for ATA components
This abstraction layer is mainly for ATA ports (AHCI ports, IDE ports).
The goal is to create a convenient and flexible framework so it's
possible to expand to support other types of controller (e.g. Intel PIIX
and ICH IDE controllers) and to abstract operations that are possible on
each component.

Currently only the ATA IDE code is affected by this, making it much
cleaner and readable - the ATA bus mastering code is moved to the
ATAPort code so more implementations in the near future can take
advantage of such functionality easily.

In addition to that, the hierarchy of the ATA IDE code resembles more of
the SATA AHCI code now, which means the IDEChannel class is solely
responsible for getting interrupts, passing them for further processing
in the ATAPort code to take care of the rest of the handling logic.
2022-07-19 11:07:34 +01:00