summaryrefslogtreecommitdiff
path: root/Userland/Libraries
AgeCommit message (Collapse)Author
2022-10-03LibWeb: Make intrinsic heights dependent on available widthAndreas Kling
After speaking with fantasai at CSSWG about this, it turns out I had misunderstood intrinsic heights. I originally believed all intrinsic sizes had to be computed with no influence from the surrounding context. As it turns out, intrinsic heights *are* influenced by the available width, since it's needed to determine where lines break. The APIs for calculating min-content and max-content heights now take the available width as inputs. This instantly improves layout in many cases where we'd previously make things way too wide.
2022-10-03LibWeb: Add missing null check while dispatching mouseenter eventsAndreas Kling
2022-10-03LibWeb: Get rid of FormattingContext::run_intrinsic_sizing()Andreas Kling
Now that we have AvailableSpace, it's actually quite convenient to simply set up the available space and call run() with that directly.
2022-10-03LibC: Remove stubbed out xattr.h and xattr.cppKenneth Myhra
Serenity does not support extended attributes (xattr) and the only port that needed those were the GLib port. The GLib port has now been updated to compiled without xattr support.
2022-10-03LibWeb: Bring CSS tokenization preprocessing closer to specSam Atkins
This is based on an editorial change in the December 2021 version of SYNTAX-3: https://www.w3.org/TR/2021/CRD-css-syntax-3-20211224/ They named this step "filter code points", so let's use that name.
2022-10-03LibWeb: Use the term "ident sequence" instead of "name"Sam Atkins
This is an editorial change in the December 2021 version of SYNTAX-3: https://www.w3.org/TR/2021/CRD-css-syntax-3-20211224/
2022-10-03LibWeb: Implement HTMLImageElement.completeAndreas Kling
This was fairly straightforward, although a small part had to be ad-hoc since we don't yet load images through Fetch. With this, we can now see annotation labels on deskto.ps :^)
2022-10-03LibWeb: Dispatch mouseenter and mouseleave events when requiredAndreas Kling
I've left a FIXME here about populating the events with mouse coordinates, button states, etc. We also need to verify that the dispatch order either doesn't matter or at least match other engines.
2022-10-03LibWeb: Don't add half-leading twice to inline block boxesAndreas Kling
Inline-level blocks already have the half-leading applied internally, so by adding it twice, we were offsetting their baseline by the half-leading of the line. This fixes an issue where inline-blocks were vertically offset from the line they're supposed to sit on.
2022-10-03LibWasm: Use String::join in Printer where apropriateHendiadyoin1
2022-10-03LibWasm: Use TRY in Module::parseHendiadyoin1
2022-10-03SystemServer+LoginServer+Userland: Switch to sid-based socketsPeter Elliott
This commit does three things atomically: - switch over Core::Account+SystemServer+LoginServer to sid based socket names. - change socket names with %uid to %sid. - add/update necessary pledges and unveils. Userland: Switch over servers to sid based sockets Userland: Properly pledge and unveil for sid based sockets
2022-10-03LibCore: Create Core::SessionManagement for session managementPeter Elliott
2022-10-03LibCore: Make usernames optional in ProcessStatisticsReaderPeter Elliott
2022-10-03LibCore: Add Core::System wrapper for getsid()Peter Elliott
2022-10-03LibWeb: It's AK_OS_MACOS, not AK_OS_MACAndreas Kling
2022-10-02LibJS: Capture promise capability in new_promise_capability() executorLinus Groh
This is how the spec suggests implementing this; we need to be slightly more verbose as our PromiseCapability implementation cannot hold arbitrary JS values. Unfortunately it makes the error message slightly more ambiguous as we no longer expose the non-function value to the outer scope (we could!), but at least we don't UAF the stack allocated values anymore :^)
2022-10-02LibJS: Make PromiseCapability GC-allocatedLinus Groh
A struct with three raw pointers to other GC'd types is a pretty big liability, let's just turn this into a Cell itself. This comes with the additional benefit of being able to capture it in a lambda effortlessly, without having to create handles for individual members.
2022-10-02LibJS: Add Visitor::visit(GCPtr<T>) and Visitor::visit(NonnullGCPtr<T>)Linus Groh
Let's avoid reaching for ptr() as much as possible.
2022-10-02LibJS: Add Value(GCPtr<T>) and Value(NonnullGCPtr<T>) constructorsLinus Groh
Let's avoid reaching for ptr() as much as possible.
2022-10-02LibJS: Move PromiseCapability into its own cpp/h fileLinus Groh
This is not strictly connected to PromiseReaction in any way. Preparation before doing some actual work on it :^)
2022-10-02LibJS: Update outdated PROMISE_DEBUG loggingLinus Groh
2022-10-02LibJS: Remove two outdated forward declarationsLinus Groh
2022-10-02LibWeb: Fix string whitespace splitting mistakeMacDue
`.split_view(Infra::ASCII_WHITESPACE)` tries to split the string view on the string "\t\n\f\r " (not any of the individual characters of that string). The correct way to split this string views here is `.split_view_if(Infra::is_ascii_whitespace)`, this is a little inconsistent with String, so probably should be addressed.
2022-10-02LibWeb: Move strip_and_collapse_whitespace() to Infra/Linus Groh
...and make it spec compliant by considering all ASCII whitespace, greatly simplifying it in the process :^)
2022-10-02LibWeb: Replace incorrect uses of split_view() for whitespace splittingLinus Groh
2022-10-02LibWeb: Replace incorrect uses of String::trim_whitespace()Linus Groh
2022-10-02LibWeb: Replace incorrect uses of AK::is_ascii_space()Linus Groh
2022-10-02LibWeb: Add is_ascii_whitespace() functionLinus Groh
This matches the Infra spec's definition of 'ASCII whitespace', and we can at last stop using AK::is_ascii_space(), which has a different idea about what 'whitespace' means.
2022-10-02LibWeb: Support painting the hue-rotate() filter effectMacDue
2022-10-02LibGfx: Implement HueRotateFilterMacDue
This implements a simple and fairly efficient hue rotation filter. It is based off the SVG feColorMatrix "hueRotate" matrix operation. https://drafts.fxtf.org/filter-effects-1/#elementdef-fecolormatrix
2022-10-02LibGfx: Add `[[nodiscard]]` to Matrix operatorsMacDue
2022-10-02LibGfx: Add Matrix::operator*(T scalar)MacDue
2022-10-02LibGfx: Add Matrix::operator+(Matrix const & other)MacDue
2022-10-02LibWeb: Report the current OS instead of always saying SerenityOSAndreas Kling
2022-10-02LibWeb: Improve placement of abspos boxes with dual-auto insetsAndreas Kling
When an absolutely positioned box has auto insets on both sides of an axis, it's placed according to the "static position rectangle". This is, roughly, the rectangle a box would occupy if it were position:static instead of position:absolute or position:fixed. This patch implements a rough, but still significantly better, estimation of such static positions. It gets pretty hairy in the case where an abspos box has a parent whose children are inline.
2022-10-02LibWeb: Reset painter translation when painting fixed-position elementsAndreas Kling
This makes nested position:fixed elements work, previously we'd apply the viewport scroll offset once at every nesting level.
2022-10-02LibGfx: Add a way to get the Painter's current 2D translationAndreas Kling
2022-10-02LibWeb: Add helpful locals in layout_absolutely_positioned_element()Andreas Kling
This code had some obnoxiously repetetive call chains.
2022-10-02LibWeb: Vertical % margins are relative to containing block widthAndreas Kling
We were messing this up on absolutely positioned elements by using the containing block height instead.
2022-10-02LibWeb: Reorganize layout algorithms around available spaceAndreas Kling
This is a big and messy change, and here's the gist: - AvaliableSpace is now 2x AvailableSize (width and height) - Layout algorithms are redesigned around the idea of available space - When doing layout across nested formatting contexts, the parent context tells the child context how much space is available for the child's root box in both axes. - "Available space" replaces "containing block width" in most places. - The width and height in a box's UsedValues are considered to be definite after they're assigned to. Marking something as having definite size is no longer a separate step, This probably introduces various regressions, but the big win here is that our layout system now works with available space, just like the specs are written. Fixing issues will be much easier going forward, since you don't need to do nearly as much conversion from "spec logic" to "LibWeb logic" as you previously did.
2022-10-02LibWeb: Don't try to format inline-block boxes in BFCAndreas Kling
Inline-level block boxes are handled by IFC. BFC doesn't have to worry about these.
2022-10-02LibWeb: Fix crash when loading a HTML string that contains an iframeMacDue
The HTMLIFrameElement does not create the nested browsing context on insertion if the document does not have browsing context, which is not set unless it's the active document. Previously, in FrameLoader the document was not set as active until after parsing, which led to iframes without nested browsing contexts, and crashes. Fixes #14207
2022-10-02LibJS: Show class name in the dump from the NewClass instructionHendiadyoin1
2022-10-02LibJS: Set class' source text in NewClass instructionHendiadyoin1
This fixes the classes toString method.
2022-10-01LibWeb: Don't scale by x, x when a scale x, y is provided as a transformHendiadyoin1
2022-10-01LibWeb: Remove the internal window object from WebEngineCustomDataAndrew Kaster
Now that no one needs a Window just to create prototypes, we can remove the internal window Object from the main thread VM and get rid of the HTML::Window include for it. This finally solves the reference binding to nullptr error in ladybird that shows up when compiling it with ASAN.
2022-10-01LibWeb: Cleanup unecessary uses and includes of HTML::WindowAndrew Kaster
The big global refactor left some stragglers behind for atomicity. Clean up the rest, and remove a ton of includes of LibWeb/HTML/Window.h
2022-10-01LibWeb: Remove unused DOM::Node::window helper methodAndrew Kaster
This was a crutch for the initial GC conversion that we can get rid of thanks to moving web prototypes and constructors off of Window.
2022-10-01LibWeb: Ensure that replaced documents keep the Window of their siblingAndrew Kaster
The note in the spec says that we're supposed to make sure this new document has the same Window as the old about:blank document, but we forgot to actually assign to the Window pointer.