Commit graph

48052 commits

Author SHA1 Message Date
kleines Filmröllchen
1c3050245e LibDSP: Don't crash on out-of-bounds parameter value
We can just clamp instead.
2023-02-25 20:49:41 -07:00
kleines Filmröllchen
961e263129 AK: Add FixedPoint::clamp 2023-02-25 20:49:41 -07:00
kleines Filmröllchen
7b3b743f88 Piano: Move octave controls into main widget
This is not related to the track controls and it may move into another
separate widget in the future. The move also allows to simplify the
octave slider callback logic.
2023-02-25 20:49:41 -07:00
kleines Filmröllchen
376e7243a9 LibGUI: Use full text width for Label's preferred width
A label would prefer to be exactly as wide as its contained text
requires. This makes min_width: "fit" work better.
2023-02-25 20:49:41 -07:00
kleines Filmröllchen
9f5f6b3868 Piano: Clean up code style with help from clang-tidy
Includes shadowed variables and if-else return.
2023-02-25 20:49:41 -07:00
kleines Filmröllchen
401a21e4f4 Piano: Improve handling of possibly null parameter label
The current implementation could crash in various locations if the label
was null.
2023-02-25 20:49:41 -07:00
kleines Filmröllchen
cf6676beb2 Piano: Rename KnobsWidget to TrackControlsWidget
This more generic name will better reflect the purpose of the widget in
the future, as this commit begins the long process of enhancing the
widget into a container for all controls of Piano's currently selected
track.
2023-02-25 20:49:41 -07:00
Nico Weber
0190be9788 Tests: Use MUST more in TestImageDecoder
No behavior change.
2023-02-26 01:15:10 +01:00
Kenneth Myhra
9a5a8d617d LibWeb: Port IDL implementations Blob and File to new String 2023-02-26 00:27:22 +01:00
Kenneth Myhra
31a9bd2bfd LibWeb: Add to_ascii_upper_case() from the Infra spec
https://infra.spec.whatwg.org/#ascii-uppercase
2023-02-26 00:27:22 +01:00
Kenneth Myhra
2c1e15bd3b LibWeb: Add to_ascii_lower_case() from the Infra spec
https://infra.spec.whatwg.org/#ascii-lowercase
2023-02-26 00:27:22 +01:00
Kenneth Myhra
2facb0e8ed BindingsGenerator: Use JS::Value::to_string() when new String
Make sure to use JS::Value::to_string() when the IDL interface is marked
with the extended attribute UseNewAKString.
2023-02-26 00:27:22 +01:00
Kenneth Myhra
99f094905e BindingsGenerator: Conditionally check dictionary member is string
This adds the condition member.type->is_string() to the if statement, so
that we now conditionally check the dictionary member is a new string
and associated with an optional constructor parameter.
2023-02-26 00:27:22 +01:00
Andrew Kaster
72a48ee1ee LibCore+Utilities: Replace uses of strpbrk with find_any_of()
We don't need to use scary C string POSIX APIs when we have nicer ones
on String/DeprecatedString.
2023-02-25 22:31:17 +01:00
Nico Weber
19ca8d7fb7 LibGfx: Decode WebP canvas size
This reorganizes things so that:

* When initially decoding chunks, we only store pointers to
  their data and don't look at the contents
* We allow pausing decoding after decoding the first chunk, since
  that's where the dimensions are stored, and we don't need to read
  more than that if we only care about dimensions. (Currently
  inconsequential, but maybe we want to get dimensions after
  receiving the first few bytes off the network in the future.)
* We then have separate methods to interpret chunk data
  (only for the first few bytes which store the size, so far.)
2023-02-25 22:30:32 +01:00
Timothy Flynn
5eec76b441 AK: Use the same consteval condition on _short_string as its factory
This fixes the build with Apple Clang.
2023-02-25 22:25:05 +01:00
Timothy Flynn
73239fdd82 LibUnicode: Add a unit test for Unicode grapheme and word segmentation
These include tests for previously broken boundary conditions.
2023-02-25 22:23:39 +01:00
Timothy Flynn
fa96811a22 LibUnicode: Skip over emoji sequences in grapheme boundary segmentation
Emoji sequences in the grapheme segmentation spec are a bit tricky:

    \p{Extended_Pictographic} Extend* ZWJ × \p{Extended_Pictographic}

Our current strategy of tracking a boolean to indicate if we are in an
emoji sequence was causing us to break up emoji made of multiple sub-
sequences. For example, in the "family: man, woman, girl, boy" sequence:

    U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466

We would break at indices 0 (correctly) and 6 (incorrectly).

Instead of tracking a boolean, it's quite a bit simpler to reason about
emoji sequences by just skipping past them entirely. Note that in cases
like the above emoji, we skip one sub-sequence at a time.
2023-02-25 22:23:39 +01:00
Linus Groh
09d40bfbb2 Everywhere: Use _{short_,}string to create Strings from literals 2023-02-25 20:51:49 +01:00
Linus Groh
85414d9338 AK: Add operator""_{short_,}string to create a String from a literal
We briefly discussed this when adding the new String type but couldn't
settle on a name. However, having to use String::from_utf8() on every
literal string is a bit unwieldy, so let's have these options available!

Naming-wise '_string' is not as short as 'sv' but should be relatively
clear; it also matches '_bigint' and '_ubigint' in length.
'_short_string' may be longer than the actual string itself, but it's
still an improvement over the static function :^)

Since our C++ source files are UTF-8 encoded anyway, it should be
impossible to create a string literal with invalid UTF-8, so including
that in the name is not as important as in the function that can receive
arbitrary data.
2023-02-25 20:51:49 +01:00
kleines Filmröllchen
956450df00 Meta: Document how to manipulate CMake caches for the fuzzing build 2023-02-25 19:39:04 +01:00
kleines Filmröllchen
5ec5c68ed4 Meta: Allow disabling LibWeb fuzzers
The LibWeb fuzzer build is really slow, so for local builds it is useful
to disable it when you're not interested in running that fuzzer.

Co-authored-by: Andrew Kaster <akaster@serenityos.org>
2023-02-25 19:39:04 +01:00
Nico Weber
7c1455c357 LibGfx: Parse WebP VP8L chunk header
For now, just dbgln_if() all data. Eventually we'll want to use at
least width and height.
2023-02-25 16:02:51 +01:00
Nico Weber
d5875b5962 LibGfx: Fix lossless fourcc in VP8X chunk decoder 2023-02-25 16:02:51 +01:00
Nico Weber
d78c70c28c LibGfx: Add link to webp overview 2023-02-25 16:02:51 +01:00
Nico Weber
0774d2135c LibGfx: Parse some of WebP 'VP8 ' chunk
This is for lossy compression, in which case a WebP file is
a single VP8 key frame.

This only parses the 10-byte frame header, which contains image
dimensions (and some other things).

For now, just dbgln_if() all data. Eventually we'll want to use at
least width and height.
2023-02-25 16:02:51 +01:00
Nico Weber
e56e7db9d4 LibGfx: Parse WebP VP8X chunk
For now, just dbgln_if() all data. Eventually we'll want to use at
least width and height.
2023-02-25 16:02:51 +01:00
Nico Weber
58a5038420 LibGfx: Add a FIXME to WebPImageDecoderPlugin::icc_data() 2023-02-25 16:02:51 +01:00
Nico Weber
65d41f8ed9 LibGfx: Add a WebPLoadingContext::error() helper
No behavior change.

(Well, technically, this now correctly sets the state to Error
if the first chunk is neither of 'VP8 ', 'VP8L', 'VP8X'. But no
*interesting* behavior change.)
2023-02-25 16:02:51 +01:00
kleines Filmröllchen
76b71fcb75 LibDSP: Get rid of DeprecatedString
This was a rather easy change, since only parameter names make use of
strings in the first place.

This also improves OOM resistance: If we can't create a parameter name,
we will just set it to the empty string.
2023-02-25 15:41:01 +01:00
Liav A
8a50c967b8 Kernel: Mark sys$prctl() as not needing the big lock
This syscall has sufficient locking and therefore it doesn't need the
big lock being taken.
2023-02-25 15:21:29 +01:00
Nico Weber
41980675f2 Lagom: Build file in lagom builds 2023-02-25 15:00:23 +01:00
Nico Weber
b07e9d4c8a Lagom: Build LibELF on arm64
This seems to build fine now on Arm Macs.
2023-02-25 15:00:23 +01:00
MacDue
f8bdb584f8 LibDeviceTree: Use unchecked_append() in path parsing
try_append() checks if the vector should increase capacity and if
so grows the vector. unchecked_append() verifies the vector already
has enough capacity, and will never grow the vector.
2023-02-24 23:56:37 +01:00
Linus Groh
69f0339bac Revert "LibDeviceTree: Propagate try_append() errors while parsing paths"
This reverts commit f064f5f36e.

As Andrew points out, this append is not actually fallible in practice,
since the loop is terminated once the vector size reaches its inline
capacity.

https://github.com/SerenityOS/serenity/pull/17606#discussion_r1117662246
2023-02-24 23:40:23 +01:00
Liav A
b27f88f61d Kernel+Userland: Refine preventing syscall annotations of Regions option
Instead of using a special case of the annotate_mapping syscall, let's
introduce a new prctl option to disallow further annotations of Regions
as new syscall Region(s).
2023-02-24 22:26:07 +01:00
Liav A
08de5abc6d Kernel: Do 2 validations in annotate_mapping syscall outside a spinlock 2023-02-24 22:26:07 +01:00
Liav A
bedd90b1f0 Kernel: Properly lock Process protected data in the prctl syscall 2023-02-24 22:26:07 +01:00
MacDue
727218ff4a LibTimeZone: Propagate try_append() errors while building timezone data 2023-02-24 22:18:25 +01:00
MacDue
01fa3bb788 LibUnicode: Propagate try_append() errors when building emoji data 2023-02-24 22:18:25 +01:00
MacDue
f064f5f36e LibDeviceTree: Propagate try_append() errors while parsing paths 2023-02-24 22:18:25 +01:00
Liav A
c56e1c5378 Kernel/FileSystem: Simplify the ProcFS significantly
Since the ProcFS doesn't hold many global objects within it, the need
for a fully-structured design of backing components and a registry like
with the SysFS is no longer true.

To acommodate this, let's remove all backing store and components of the
ProcFS, so now it resembles what we had in the early days of ProcFS in
the project - a mostly-static filesystem, with very small amount of
kmalloc allocations needed.
We still use the inode index mechanism to understand the role of each
inode, but this is done in a much "static"ier way than before.
2023-02-24 22:14:18 +01:00
Liav A
9216caeec2 Kernel: Fix typo proccess => process in a name of Process method 2023-02-24 22:14:18 +01:00
Liav A
12b7328c22 AK+Kernel: Add includes before removing Kernel/ProcessExposed.h
Apparently without this file, we won't be able to compile due to missing
includes to TimeManagement and KBufferBuilder.
2023-02-24 22:14:18 +01:00
Timothy Flynn
87c4080d00 Browser+LibWeb+WebContent: Store cookie expiry times in UTC
We are currently converting parsed expiry times to local time, whereas
the RFC dictates we parse them as UTC. When expiring cookies, we must
also use the current UTC time to compare against the cookies' expiry
times.
2023-02-24 15:50:42 -05:00
Timothy Flynn
1858163d3c LibIPC: Add a built-in encoder/decoder for AK::Time 2023-02-24 15:50:42 -05:00
Aliaksandr Kalenik
8eeedce805 LibWeb: Consider transform property while finding containing block 2023-02-24 20:55:40 +01:00
Aliaksandr Kalenik
6092d81e4d LibWeb: Stop overflow clip box aggregation on reached stacking context 2023-02-24 20:55:40 +01:00
Aliaksandr Kalenik
87fa1c5e66 Revert "LibWeb: Fix clip of hidden overflow..."
This reverts commit eb1ef59603c13c43b87c099c43c4d118dc8441f6.

The idea of saving clip box to apply it to handle `overflow: hidden`
turned out to break painting if box is painted before it's containing
block (it is possible if box has negative z-index).
2023-02-24 20:55:40 +01:00
Liav A
8f3c343b88 Kernel+Userland: Unify declarations for KCOV in Kernel/API/kcov.h 2023-02-24 20:35:45 +01:00