Commit graph

36138 commits

Author SHA1 Message Date
Andreas Kling
f0dde1cee1 Kernel: Rename TCPFlags::PUSH => PSH
Let's use the proper name of this TCP flag.
2022-03-18 15:18:48 +01:00
Andreas Kling
15dc48b431 LibWeb: Make PaintableBox::enclosing_stacking_context() cheaper
No need to call the expensive establishes_stacking_context() here, as
we've already built the stacking context tree and can simply test for
the presence of existing stacking contexts.
2022-03-18 15:18:48 +01:00
Andreas Kling
ef8a72ff3f LibWeb: Move available_space_for_line() from IFC to BFC
This is preparation for allowing blocks with their own internal BFC to
flow around floating boxes in the parent BFC.

Note that IFC still has the available_space_for_line() API, which
returns space available within the IFC's own containing block, while the
BFC available_space_for_line() returns space available within its root.
2022-03-18 15:18:48 +01:00
Andreas Kling
fc6b7fcd97 AK: Add const variant of Vector::in_reverse() 2022-03-18 15:18:48 +01:00
Brian Gianforcaro
f47c92bd2e Kernel: Mark serenity_dev_ functions as static
This avoids multiple definition errors when linking software which
may utilize these functions from different compilation units.
2022-03-18 11:59:35 +00:00
Brian Gianforcaro
83abc83d3c Ports/stress-ng: Update stress-ng to 0.13.12
This required updating a bunch of patches which had conflicts
in the latest version.

New Patches:
- serenity: Add bogus O_NDELAY just to allow the port to compile
- serenity: Disable nice() stress workload as we do not implement it
- serenity: Disable prctl stressor on serenity
2022-03-18 11:59:35 +00:00
Joe Petrus
011b6df63a Games: Add MasterWord
A simple wordle clone.
2022-03-18 04:55:21 -07:00
Liav A
d56544aca0 Kernel/Graphics: Don't declare VGA changing-state methods as const 2022-03-18 03:46:23 -07:00
Sam Atkins
174a25db5b LibWeb: Combine identical relative/regular selector parsing functions 2022-03-18 11:34:02 +01:00
Sam Atkins
5b0187477b LibWeb: Implement :nth-[last-]child(n of foo) syntax
In Selectors level 4, `:nth-child()` and `:nth-last-child()` can both
optionally take a selector-list argument. This selector-list acts as a
filter, so that only elements matching the list are counted. For
example, this means that the following are equivalent:

```css
:nth-child(2n+1 of p) {}
p:nth-of-type(2n+1) {}
```
2022-03-18 11:34:02 +01:00
Sam Atkins
0e4c35b4b2 Base: Add of foo tests to nth-child and nth-last-child test pages
Also split the selector-list up for easier debugging.
2022-03-18 11:34:02 +01:00
Sam Atkins
f241827f6a LibWeb: Calculate specificity for special pseudo-classes
This fixes the specificity for :not(), :is() and :where(). Also, we now
clamp the specificity numbers instead of letting them overflow, and I
sprinkled in some spec comments for good measure.
2022-03-18 11:34:02 +01:00
Sam Atkins
993653317c LibWeb: Implement the :where() selector
This is identical to :is() except for specificity, so we can use the
same code paths. :^)
2022-03-18 11:34:02 +01:00
Sam Atkins
47eb4b2db7 Base: Add a test page for the CSS :where() selector
This behaves identically to :is() except for specificity, so this test
page is identical to the other one. It's not because I'm lazy. :^)
2022-03-18 11:34:02 +01:00
Sam Atkins
c148ed50bb LibWeb: Implement the :is() selector
This lets us finally get rid of a FIXME in the default style sheet. :^)
2022-03-18 11:34:02 +01:00
Sam Atkins
88d218721b Base: Add nested lists to list test-page 2022-03-18 11:34:02 +01:00
Sam Atkins
ca8540aba2 Base: Correct the :not() test page's title
Oops!
2022-03-18 11:34:02 +01:00
Sam Atkins
0d01097a54 Base: Add a test page for the CSS :is() selector 2022-03-18 11:34:02 +01:00
Sam Atkins
5319e2ba8e LibWeb: Parse forgiving selector-lists
`<forgiving-selector-list>` and `<forgiving-relative-selector-list>` are
the same as regular selector-lists, except that an invalid selector
does not make the whole list invalid. The former is used by the `:is()`
pseudo-class.

For example:

```css
/* This entire selector-list is invalid */
.foo, .bar, !?invalid { }

/* This is valid, but the "!?invalid" selector is removed */
:is(.foo, .bar, !?invalid) { }
```

Also as part of this, I've removed the `parse_a_selector(TokenStream)`
and `parse_a_relative_selector(TokenStream)` methods as they don't add
anything useful.
2022-03-18 11:34:02 +01:00
MacDue
7628f1f233 LibGfx: Draw window frame border radii antialiased
I think this now looks very nice :^)
2022-03-18 11:31:33 +01:00
MacDue
51e54ab1ba LibGfx: AntiAliasingPainter::draw_circle/fill_rect_with_rounded_corners
Follows the efficient algorithm from this paper:
https://cs.uwaterloo.ca/research/tr/1984/CS-84-38.pdf

Can be extended ellipses in future.
2022-03-18 11:31:33 +01:00
Brian Gianforcaro
913374163c LibVT/Kernel: Make VT::Attribute::Flags enum class, use AK EnumBits
Noticed the TODO in `Attribute.h` and realized we have as solution
to this problem already. :^)
2022-03-18 11:29:43 +01:00
Sahan Fernando
8601f74d5f Kernel: Fix crash when opening GPU3DDevice without creating a context 2022-03-18 12:56:35 +03:30
Liav A
3bbb5734af Kernel: Don't initialize early framebuffer console if address is invalid
To do so, we now check that the framebuffer type is RGB so we know that
the Multiboot bootloader actually provided a valid framebuffer to work
with.

This fixes a problem I observed on my ICH7 test machine that apparently
the multiboot_framebuffer_addr was not null but there was no framebuffer
that was set up for RGB colors, and by initializing that console, there
was a memory curroption caused somewhere in the EBDA area to probably
cause a complete system lockup.
2022-03-18 09:22:10 +00:00
Liav A
eca8f292a5 Kernel: Allow to disable early boot console
This aid debugging on bare metal when we suspect that the boot console
does something wrong that interferes with other kernel components.
2022-03-18 09:22:10 +00:00
Liav A
0ef1137e88 Kernel/Graphics: Move all VGA related methods to GraphicsManagement
This helps solving an issue when we boot with text mode screen so the
Kernel initializes an early text mode console, but even after disabling
it, that console can still access VGA ports. This wouldn't be a problem
for emulated hardware but bare metal hardware might have a "conflict",
especially if the native driver explicitly request to disable the VGA
emulation.
2022-03-18 09:22:10 +00:00
Brian Gianforcaro
f9bed65130 SoundPlayer: Fix read of uninitialized member variables on startup
I found these by running SoundPlayer under UserspaceEmulator.
After boot we attempt to read from these values before they
are initialized.
2022-03-18 02:13:05 -07:00
Brian Gianforcaro
ddd75db007 Kernel: Zero initialize DoubleBuffer::InnerBuffer::size
Found by PVS-Studio.
2022-03-18 00:51:16 -07:00
Brian Gianforcaro
8a8c51c39a Kernel: Default initialize AC97::m_codec_revision
Found by PVS-Studio.
2022-03-18 00:51:16 -07:00
Brian Gianforcaro
160c9b7631 Kernel: Zero initialize USBDevice::m_device_descriptor
Found by PVS-Studio.
2022-03-18 00:51:16 -07:00
Brian Gianforcaro
02f684079c Kernel: Rename locker variables in BMIDEChannel so they aren't shadowed
This class already has variables named m_lock, and it's also strange
that locals are named with the `m_` prefix. So lets fix that to make
the code more readable.

Found by PVS-Studio.
2022-03-18 00:51:16 -07:00
Brian Gianforcaro
47cdcc9f67 Kernel: Zero initialize all members in NVMeController
Found by PVS-Studio.
2022-03-18 00:51:16 -07:00
Brian Gianforcaro
199ea9ccf9 Base: Add mp3 SoundPlayer association to the user LaunchServer config
This allows the user to double click on mp3 file names in the terminal
output and open them in SoundPlayer.
2022-03-18 00:07:54 -07:00
Lenny Maiorani
2844f7c333 Everywhere: Switch from EnableIf to requires
C++20 provides the `requires` clause which simplifies the ability to
limit overload resolution. Prefer it over `EnableIf`

With all uses of `EnableIf` being removed, also remove the
implementation so future devs are not tempted.
2022-03-17 22:15:42 -07:00
Michiel Visser
8f7219c6fa LibCrypto: Implement the SECP256r1 elliptic curve
This implementation of the secp256r1 elliptic curve uses two techniques
to improve the performance of the operations.

1. All coordinates are stored in Jacobian form, (X/Z^2, Y/Z^3, Z), which
   removes the need for division operations during point addition or
   doubling. The points are converted at the start of the computation,
   and converted back at the end.

2. All values are transformed to Montgomery form, to allow for faster
   modular multiplication using the Montgomery modular multiplication
   method. This means that all coordinates have to be converted into
   this form, and back out of this form before returning them.
2022-03-18 07:56:47 +03:30
Michiel Visser
3d561abe15 AK: Add constant time equality and zero check to UFixedBigInt 2022-03-18 07:56:47 +03:30
Michiel Visser
590dcb0581 AK: UFixedBigInt add efficient multiplication with full result 2022-03-18 07:56:47 +03:30
thankyouverycool
ab86294660 FontEditor: Reset unicode block view on undo/redo actions
If the previous active glyph is outside the currently selected
block range, reset GlyphMap to show all glyphs. This is less
disorienting when undoing changes outside the visible range.
2022-03-18 01:12:26 +01:00
thankyouverycool
a3956da6dc FontEditor: Make undo/redo compatible with multi-glyph selections
Previously the glyph undo stack saved an array of bytes representing
the restore state of an individual glyph when modified. Now the
selection undo stack saves a byte buffer of the entire selection,
letting us restore changes to multiple glyphs at once.
2022-03-18 01:12:26 +01:00
thankyouverycool
5c27ce2561 ClipboardHistory: Show ranges and max dimensions for copied glyphs
Makes copy history a bit more informative by showing the code point
range of the selection copied, or the individual character if the
selection contains only one glyph.
2022-03-18 01:12:26 +01:00
thankyouverycool
17b16f3997 FontEditor: Use memset/memcpy to copy/paste/delete glyphs
Iterating over each glyph to set bits was rather slow in large
selections. This lets us edit the entire character set almost
instantly.
2022-03-18 01:12:26 +01:00
thankyouverycool
3d1591a822 LibGfx: Add accessors for BitmapFont's rows and widths 2022-03-18 01:12:26 +01:00
Linus Groh
599b2bee4a LibJS: Tweak Interpreter::create() for more spec-likeness
Store a reference to the newly created execution context in an aptly
named variable, rename global_this_value to just this_value, and only
call set_global_object() in a single place.
2022-03-18 01:12:12 +01:00
Linus Groh
29964dc152 LibJS: Use TRY(push_execution_context()) in places where we can recover 2022-03-18 01:12:12 +01:00
Linus Groh
9422ae9bb2 LibJS: Add infallible variant of VM::push_execution_context()
It makes no sense to require passing a global object and doing a stack
space check in some cases where running out of stack is highly unlikely,
we can't recover from errors, and currently ignore the result anyway.

This is most commonly in constructors and when setting things up, rather
than regular function calls.
2022-03-18 01:12:12 +01:00
Linus Groh
50ad8d2a5a Hearts: Add icon to settings action 2022-03-18 01:10:16 +01:00
Linus Groh
c19486172d Applications+Games: Drop ellipsis from settings action
There is no second step to complete after activating this action.
2022-03-18 01:10:16 +01:00
Linus Groh
fd60c9fac7 Games: Add reload icon to 'New Game' actions 2022-03-18 01:10:16 +01:00
Linus Groh
c2d11d5aa0 Eyes: Add 'Contents' action to help menu 2022-03-18 01:10:16 +01:00
Lenny Maiorani
2548ee4149 Kernel: Make number of RTL8168 rx/tx descriptors constexpr 2022-03-17 13:36:17 -07:00