Commit Graph

50656 Commits

Author SHA1 Message Date
Sam Atkins
6f3e48db57 LibWeb: Fill in some missing property data and bodge extra types
We don't yet have generic parsing support for `<filter-value-list>` or
`<paint>`, so listing them here confuses the new StyleValue parsing code
I'm working on. For now, let's skip `<filter-value-list>` since it's
only used in one pkace which manually parses it, and list the parts of
`<paint>` instead which are taken from here:
https://www.w3.org/TR/SVG2/painting.html#SpecifyingPaint
2023-05-25 06:36:10 +02:00
Sam Atkins
5533413061 LibWeb: Remove "Invalid" StyleValue type
We never actually use this, we always initialize StyleValues with a
proper type.
2023-05-25 06:36:10 +02:00
kleines Filmröllchen
3c212c8535 AK: Remove Duration::now_monotonic
This is the end of absolute time support in Duration. :^)
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
fc5cab5c21 Everywhere: Use MonotonicTime instead of Duration
This is easily identifiable by anyone who uses Duration::now_monotonic,
and any downstream users of that data.
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
b2e7b8cdff AK: Introduce MonotonicTime
This class takes on the duties of CLOCK_MONOTONIC, a time without a
defined reference point that always increases. This informs some
important design decisions about the class API: MonotonicTime cannot be
constructed from external time data, except as a computation based on
other monotonic time, or the current monotonic time. Importantly, there
is no default constructor, since the reference point of monotonic time
is unspecified and therefore without meaning as a default.

The current use of monotonic time (via Duration) includes some potential
problems that may be caught when we move most to all code to
MonotonicTime in the next commit.

The API restrictions have one important relaxation:
Kernel::TimeManagement is allowed to exchange raw time data within
MonotonicTime freely. This is required for the clock-agnostic time
accessors for timeouts and syscalls, as well as creating monotonic time
data from hardware in the first place.
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
69e27169c4 AK: Remove now-unused Duration methods
These are not applicable to Duration, since it's not a timestamp class.
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
effcd080ca Userland: Remove remaining users of Duration::now_realtime()
This is a clear sign that they want to use a UnixDateTime instead.

This also adds support for placing durations and date times into SQL
databases via their millisecond offset to UTC.
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
82c681e44b LibTimeZone+Userland: Change timezone functions to use UnixDateTime
This incurs a whole host of changes in, among others, JavaScript Intl
and Date.
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
939600d2d4 Kernel: Use UnixDateTime wherever applicable
"Wherever applicable" = most places, actually :^), especially for
networking and filesystem timestamps.

This includes changes to unzip, which uses DOSPackedTime, since that is
changed for the FAT file systems.
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
c1323febc2 AK: Introduce UnixDateTime
This is a generic wrapper for a time instant relative to the unix epoch,
and does not account for leap seconds. It should be used in place of
Duration in most current cases.
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
0dfcaf1389 AK: Make Duration arithmetic constexpr
This is a trivial change, and since this batch of commits will make a
large-scale rebuild necessary anyways, it seems sensible. The feature is
useful for e.g. building compound constant durations at compile time in
a readable way.
2023-05-24 23:18:07 +02:00
kleines Filmröllchen
213025f210 AK: Rename Time to Duration
That's what this class really is; in fact that's what the first line of
the comment says it is.

This commit does not rename the main files, since those will contain
other time-related classes in a little bit.
2023-05-24 23:18:07 +02:00
Andreas Kling
82ddc813d5 LibWeb: Stop aggressively quantizing font-weight values
Before this change, we were quantizing to either 400, 700 or 900.
This caused us to treat 100/200/300 weighted fonts as if they were
interchangeable.
2023-05-24 20:58:46 +02:00
Andreas Kling
4fc5e06837 LibWeb: Include weight and slope in CSSFontFaceRule debug dumps 2023-05-24 20:58:46 +02:00
Andreas Kling
a28275657b LibWeb: Include weight and style in CSSFontFaceRule serialization 2023-05-24 20:58:46 +02:00
Jelle Raaijmakers
76a0e601e5 Meta: Only run devcontainer build for the main repository
Let's not run this job on everyone's fork.
2023-05-24 20:19:40 +02:00
Jelle Raaijmakers
971d3eef4a Meta: Hardcode lowercase repository name for devcontainer
This should unbreak CI.
2023-05-24 20:07:34 +02:00
Josh Spicer
7026174458 Meta: Prebuild repo dev container
This commit adds a GitHub Workflow to prebuild the dev container file
present at .devcontainer/devcontainer.json. This prebuilt image is
pushed to GitHub Container Registry (ghcr).

An additional devcontainer.json is added consuming that image.
This dev container can be selected in editors that process dev
containers (ie GitHub Codespaces), to speed up time to editor.
2023-05-24 19:27:59 +02:00
Aliaksandr Kalenik
202b24584f LibWeb: Sum horizontal margins to calculate space used by floats
This fixes the issue where max margin is used to find offset of
floating box although horizonal margins do not collapse so they need
to be summed instead.
2023-05-24 18:58:42 +02:00
Jelle Raaijmakers
90d8844c77 LibWeb: Remove Gfx::Rect<float> workarounds from BFC
No longer is the last horizontal line of pixels ignored during layout.
This used to be a bug in `Gfx::Rect<float>` that was fixed in
f391ccfe53.
2023-05-24 18:19:45 +02:00
Andreas Kling
38b2cba6a2 LibWeb: Honor font-weight and font-style when using downloaded fonts
Instead of keying downloaded @font-face fonts on just the family name,
we now key them on a tuple of the family name, weight and slope.
2023-05-24 17:19:18 +02:00
Andreas Kling
74bdbdf43f LibWeb: Parse font-weight and font-style inside @font-face rules 2023-05-24 17:19:18 +02:00
Andreas Kling
be10360350 LibWeb: Move resolution of font weights and slopes to StyleValue
This isn't exactly ideal factoring (though I'm not sure what is) but
this will make it possible to reuse this code in the parser.
2023-05-24 17:19:18 +02:00
stelar7
17d6ab2416 LibWeb: Implement scroll_{width, height} 2023-05-24 17:18:30 +02:00
Timothy Flynn
5ad24156ce LibThreading: Do not crash when detaching from an already-exited thread
Contrary to the log message that was shown, it is not decidedly a logic
error to detach a thread that has exited. Even in the simple unit tests
we have, it's possibly for the thread to run and exit in between the
time it takes for our call to Thread::start() to complete and
Thread::detach() to run. This is often seen on CI.
2023-05-24 16:45:25 +02:00
implicitfield
b6af5eaa72 Fuzzers: Unbreak FuzzHttpRequest
Previously, the exit condition was inverted, causing the fuzzer to
try to read the value of an error.
2023-05-24 16:25:13 +02:00
Nico Weber
703bd4c8a3 WebP/Lossy: Validate show_frame and version when reading header 2023-05-24 16:09:40 +02:00
Nico Weber
5934c4ebfb image: Add --no-output flag to omit output writing
This is useful for timing just decoder performance.

(It'd be nice to add a `-t` flag that prints timings for all
the different phases, but for now just disabling writing is
sufficient for me.)
2023-05-24 16:01:09 +02:00
Nico Weber
32ad77b8c7 image: Remove no-longer-needed comment
The future is now, and Bitmap::load_from_file() can't do the things that
`image` now does.
2023-05-24 16:01:09 +02:00
Nico Weber
6f2e62ba2a Utilities: Use elapsed_milliseconds() instead of elapsed()
No behavior change.
2023-05-24 15:50:43 +02:00
Nico Weber
197c5729d1 LibCore: Add ElapsedTimer::elapsed_milliseconds()
It does the same thing as elapsed(), but has a clearer name.
The hope is we'll move everything to the new name over time
and then remove the old name.
2023-05-24 15:50:43 +02:00
Andreas Kling
655d9d1462 LibWeb: Make CSSPixels and Length use 64-bit (double) floating point
This fixes a plethora of rounding problems on many websites.
In the future, we may want to replace this with fixed-point arithmetic
(bug #18566) for performance (and consistency with other engines),
but in the meantime this makes the web look a bit better. :^)

There's a lot more things that could be converted to doubles, which
would reduce the amount of casting necessary in this patch.
We can do that incrementally, however.
2023-05-24 14:40:35 +02:00
Andreas Kling
30262d7023 LibWeb: Rebaseline a layout test after 10ceacf5fb 2023-05-24 13:25:05 +02:00
Nico Weber
da00dadfe7 LibVideo: Rename local variable from "max_bits" to "bits_left"
That's how the member variable it gets copied into is called.

No behavior change.
2023-05-24 04:11:05 -07:00
Nico Weber
e43c21f4d7 LibVideo: Rename BooleanDecoder::initialize param
...from "bytes" to "size_in_bytes".

I thought at first that `bytes` meant the variable contained
bytes that the decoder would read from.

Also, this variable is called `sz` (for `size`) in the spec.

No behavior change.
2023-05-24 04:11:05 -07:00
Nico Weber
35883c337f LibVideo: Remove unused BooleanDecoder::bits_remaining() 2023-05-24 04:11:05 -07:00
Jelle Raaijmakers
a0a860fa07 Documentation: Configure cache dir in CMake settings for CLion
Without this, CMake would err out on a missing `/CLDR/version.txt`.
2023-05-24 12:57:01 +02:00
Andreas Kling
10ceacf5fb LibWeb: Honor the font-size even if the font-family is not found 2023-05-24 12:11:04 +02:00
Daniel Bertalan
81b6723b29 Meta: Add GCC 13 and Clang 16 to compiler autodetection 2023-05-24 01:20:02 -06:00
Daniel Bertalan
4202bb597b Meta+Documentation: Require Xcode 14.3 or Clang 14 for the host compiler
There have been multiple reports of Xcode 14.0 (based on upstream LLVM
14) segfaulting when compiling `LibCore/Process.cpp`. Let's require
Xcode 14.3, which is a known good version based on LLVM 15.

Note that Xcode 14.3 requires macOS Ventura, so users of Monterey or
older are expected to get Homebrew Clang instead.

Homebrew Clang 13 also suffers from the same crash. Although I have not
tested on Linux, the backtrace points to the middle-end, so x86_64 is
also likely to be affected. LLVM 14 was released 14 months ago, so it's
not an unreasonable requirement.
2023-05-24 01:20:02 -06:00
Aliaksandr Kalenik
e5618b17c4 LibWeb: Avoid full tree traversal in Node::compare_document_position()
Introduce optimization that determines if one node is preceding,
following, ancestor or descdendant of another node by comparing
ancestors chains of both nodes which is much cheaper than using
Node::is_before() that can walk whole subtree in the worst case.
2023-05-24 08:20:45 +02:00
Darius Arnold
884d8b14ac LibGfx: Prevent out of bounds access when scaling small Bitmaps
Since the color interpolation requires two pixels in the horizontal and
vertical direction to work, 1 pixel wide or high bitmaps would cause a
crash when scaling. Fix this by clamping the index into the valid range.

Fixes #16047.
2023-05-24 08:12:14 +02:00
Andreas Kling
71d5dc510e LibWeb: Resolve CSS variables if present in SVG presentation attributes
SVG presentation attributes are parsed as CSS values, so we also need to
handle CSS variable expansion when handling them.

This (roughly) matches the behavior of other engines. It's also used on
the web, for example on https://stripe.com/ :^)
2023-05-24 06:43:21 +02:00
Andreas Kling
dd19f61538 LibWeb: Add fast way to check if a DOM node is an SVG element 2023-05-24 06:43:21 +02:00
Karthik Karanth
8177ecb17f Ladybird: Use cursor position for context menu 2023-05-24 06:01:47 +02:00
Tim Ledbetter
245699f303 Base: Add man page for w 2023-05-24 05:55:44 +02:00
Tim Ledbetter
72e1e38fb8 Utilities/w: Add -h option to optionally hide the header 2023-05-24 05:55:44 +02:00
Tim Ledbetter
9596346528 Utilities/w: Add the ability to filter by username 2023-05-24 05:55:44 +02:00
Tim Ledbetter
d2ec82d4f9 Utilities/w: Display the TTY pseudo name in the "TTY" column
This matches the format used by `ps`.

If we cannot determine the TTY
pseudo name we fall back to the full device name, as shown previously.
2023-05-24 05:55:44 +02:00
Tim Ledbetter
2dbc7e4fff Utilities/w: Convert TTY string from /var/run/utmp to TTY pseudo name
Previously, we were comparing the "tty" value from
`/sys/kernel/processes` to the TTY value from
`/var/run/utmp` directly.  This caused the "WHAT" column to always show
"N/A", because the former is the TTY pseudo name, while the latter is
the full device name.
2023-05-24 05:55:44 +02:00