summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-24LibVideo: Rename BooleanDecoder::initialize paramNico Weber
...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-24LibVideo: Remove unused BooleanDecoder::bits_remaining()Nico Weber
2023-05-24Documentation: Configure cache dir in CMake settings for CLionJelle Raaijmakers
Without this, CMake would err out on a missing `/CLDR/version.txt`.
2023-05-24LibWeb: Honor the font-size even if the font-family is not foundAndreas Kling
2023-05-24Meta: Add GCC 13 and Clang 16 to compiler autodetectionDaniel Bertalan
2023-05-24Meta+Documentation: Require Xcode 14.3 or Clang 14 for the host compilerDaniel Bertalan
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-24LibWeb: Avoid full tree traversal in Node::compare_document_position()Aliaksandr Kalenik
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-24LibGfx: Prevent out of bounds access when scaling small BitmapsDarius Arnold
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-24LibWeb: Resolve CSS variables if present in SVG presentation attributesAndreas Kling
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-24LibWeb: Add fast way to check if a DOM node is an SVG elementAndreas Kling
2023-05-24Ladybird: Use cursor position for context menuKarthik Karanth
2023-05-24Base: Add man page for `w`Tim Ledbetter
2023-05-24Utilities/w: Add `-h` option to optionally hide the headerTim Ledbetter
2023-05-24Utilities/w: Add the ability to filter by usernameTim Ledbetter
2023-05-24Utilities/w: Display the TTY pseudo name in the "TTY" columnTim Ledbetter
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-24Utilities/w: Convert TTY string from `/var/run/utmp` to TTY pseudo nameTim Ledbetter
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-24Utilities/w: Port to StringTim Ledbetter
2023-05-24Utilities/w: Replace LibC function calls with modern equivalentsTim Ledbetter
2023-05-24LibThreading: Improve resiliancy of timed threading testsTimothy Flynn
The threading tests currently wait for a very small amount of time for the expected test condition to be reached, e.g. 20ms. This changes the tests to *check* the condition every 20ms, but allow the test to run for up to 2s until the condition is reached. This should hopefully resolve the failures seen on CI. This also renames one of the tests to match what it actually does. The test itself was changed in commit 5b335e7, but the name was not updated to reflect that change.
2023-05-23AK: Define `NAKED` more resiliently for AArch64Daniel Bertalan
This attribute is used for functions in the kernel that are entirely written in assembly, yet defined in C++ source files. Without `__attribute__((naked))`, Clang might decide to inline these functions, making any `ret` instructions within them actually exit the caller, or discard argument values as they appear "dead". This issue caused a kernel panic when using the `execve` syscall in AArch64 SerenityOS built by Clang. While the empty definition so far appears to work fine with GCC, simpler test cases do similarly suffer from unintended inlining, so define `NAKED` as a synonym of `NEVER_INLINE` to avert future issues. Perhaps we should move users of `NAKED` to plain assembly files? This makes aarch64Clang builds boot :^)
2023-05-23SpiceAgent: Don't send ClipboardGrab if the shared clipboard is disabledCaoimhe
The spice server will ignore any clipboard-related messages if we don't have the appropriate capabilities, but I think it's better for us to do less CPU churning whenever the user copies something to their clipboard. It also stops the spice server from warning in the console about a clipboard grab message being recieved when the capability was never announced.
2023-05-23LibWeb: Reject invalid tokens in `calc()` expressionsSam Atkins
If we finish parsing a calculation tree and it still contains UnparsedCalculationNodes, then it's not valid, and we shouldn't create a StyleValue from it.
2023-05-23LibWeb: Make LiveNodeList faster when it only cares about childrenAndreas Kling
Same optimization as HTMLCollection, ported to LiveNodeList.
2023-05-23LibWeb: Don't draw text fragments that would be clipped by the painterAndreas Kling
This avoids a ton of work when painting large documents. Even though it would eventually get clipped by the painter anyway, by bailing out earlier, we avoid a lot more work (UTF-8 iteration, OpenType lookups, etc). It would be even nicer if we could skip entire line boxes, but we don't have a fast way to get the bounding rect of a line box at the moment.
2023-05-23LibWeb: Make HTMLCollection faster when it only cares about childrenAndreas Kling
Some of the live HTMLCollection only ever contain children of their root node. When we know that's the case, we can avoid doing a full subtree traversal of all descendants and only visit children. This cuts the ECMA262 spec loading time by over 10 seconds. :^)
2023-05-23LibVideo/PlaybackManager: Use a function to start the internal timerZaggy1024
In addition, this renames the internal timer to better suit its new purpose since the playback state handlers were added. Not only is it used to time frame presentations, but also to poll the queue when seeking or buffering.
2023-05-23LibVideo/PlaybackManager: Decode frames off the main threadZaggy1024
Running decoding on the main thread can cause frames to be delayed due to the presentation timer waiting for a decode to finish. If a frame takes too long to decode, this delay can be quite visible. Therefore, decoding has been moved to a separate thread, with frames sent to the main thread through a thread-safe queue. This results in frame times going from being late by up to 16ms to a very consistent ~1-2ms.
2023-05-23LibVideo: Fallibly construct playback manager fieldsZaggy1024
2023-05-23LibWeb: Simplify margin & border box construction in `LayoutState`Jelle Raaijmakers
2023-05-23LibGfx: Get rid of `Gfx::Rect<float>` area workaround in `Painter`Jelle Raaijmakers
We can now trust `Gfx::Rect<T>` to correctly calculate rectangle intersections when `T = float`.
2023-05-23LibGfx+Everywhere: Change `Gfx::Rect` to be endpoint exclusiveJelle Raaijmakers
Previously, calling `.right()` on a `Gfx::Rect` would return the last column's coordinate still inside the rectangle, or `left + width - 1`. This is called 'endpoint inclusive' and does not make a lot of sense for `Gfx::Rect<float>` where a rectangle of width 5 at position (0, 0) would return 4 as its right side. This same problem exists for `.bottom()`. This changes `Gfx::Rect` to be endpoint exclusive, which gives us the nice property that `width = right - left` and `height = bottom - top`. It enables us to treat `Gfx::Rect<int>` and `Gfx::Rect<float>` exactly the same. All users of `Gfx::Rect` have been updated accordingly.
2023-05-23Chess: Make the resign button have no effect after the game endsTim Ledbetter
2023-05-23Chess: Don't ask the engine to make a move if the game is finishedTim Ledbetter
Previously, the engine would attempt to make a move if the engine was changed after the game had ended. This change also allows the player to always flip the board when the game is finished, instead of only being able to flip the board on their turn.
2023-05-23Browser: Default to HTTPS instead of HTTP if no protocol is specifiedAndreas Kling
2023-05-23Ladybird: Default to HTTPS instead of HTTP if no protocol is specifiedAndreas Kling
2023-05-23LibWeb: Make LayoutState use HashMap instead of potentially huge VectorAndreas Kling
Before this change, LayoutState essentially had a Vector<UsedValues*> resized to the exact number of layout nodes in the current document. When a nested layout is performed (to calculate the intrinsic size of something), we make a new LayoutState with its own Vector. If an entry is missing in a nested LayoutState, we check the parent chain all the way up to the root. Because each nested LayoutState had to allocate a new Vector with space for all layout nodes, this could get really nasty on very large pages (such as the ECMA262 specification). This patch replaces the Vector with a HashMap. There's now a small cost to lookups, but what we get in return is the ability to handle huge layout trees without spending eternity in page faults.
2023-05-23LibWeb: Use the right DOM node when placing cursor on double-clickAndreas Kling
This fixes a null pointer dereference when double-clicking in text content on some pages.
2023-05-23LibWeb: Don't create mutation record node lists if nobody is interestedAndreas Kling
By deferring allocation of StaticNodeList objects until we know somebody actually wants the MutationRecord, we avoid a *lot* of allocation work. This shaves several seconds off of loading https://tc39.es/ecma262/ At least one other engine (WebKit) skips creating mutation records if nobody is interested, so even if this is observable somehow, we would at least match the behavior of a major engine.
2023-05-23test-fuzz: Add all the missing fuzzersTim Schumacher
2023-05-23Lagom: Extract the list of fuzzing targets to a separate fileTim Schumacher
2023-05-23test-fuzz: Don't include all fuzzers into the same .cpp fileTim Schumacher
Instead, use the approach from BuggieBox to compile in the .cpp files separately.
2023-05-23Ladybird: Select all text in LocationEdit on clickRafał Babiarz
2023-05-23LibWeb: Avoid rebuilding layout tree unless CSS display property changesAndreas Kling
Before this, any style change that mutated a property we consider "layout-affecting" would trigger a complete teardown and rebuild of the layout tree. This isn't actually necessary for the vast majority of CSS properties, so this patch makes the invalidation a bit finer, and we now only rebuild the layout tree when the CSS display property changes. For other layout-affecting properties, we keep the old layout tree (if we have one) and run the layout algorithms over that once again. This is significantly faster, since we don't have to run all the CSS selectors all over again.
2023-05-23Browser: Don't show error message box when canceling editor dialogKemal Zebari
Currently, an error message box appears when a user tries to cancel the editor dialog while editing or adding a bookmark. This snapshot resolves this by having `add_bookmark()` and `BookmarksBarWidget::edit_bookmark()` perform an if check on the result of `BookmarkEditor::edit_bookmark()` to see if the dialog was canceled.
2023-05-23LibGfx: Fix parsing of rgba valuesAndi Gallo
Trim whitespace of the alpha component before calling parse_first_floating_point, which doesn't handle it.
2023-05-23LibWeb: Preserve case for key eventsAndi Gallo
Case-preserving behavior matches observed behavior of other browsers and the specification.
2023-05-23Base+Userland: Apply Human Interface Guidelines to Object textthankyouverycool
Corrects a slew of titles, buttons, labels, menu items and status bars for capitalization, ellipses and punctuation. Rewords a few actions and dialogs to use uniform language and punctuation.
2023-05-23Documentation: Add section on Ellipses to Text.mdthankyouverycool
2023-05-23LibGUI: Adjust size and layout of InputBoxthankyouverycool
Increases default dimensions of InputBox, giving it slightly more divine proportions. Prompt text now always appears above the editor.
2023-05-23du: Continue enumerating directories on errorTim Ledbetter
Previously, the program would exit if a directory couldn't be read. We now write an error message to stderr and continue.