summaryrefslogtreecommitdiff
path: root/Userland
AgeCommit message (Collapse)Author
2023-06-04Everywhere: Move global Kernel pattern code to Kernel/Library directoryLiav A
This has KString, KBuffer, DoubleBuffer, KBufferBuilder, IOWindow, UserOrKernelBuffer and ScopedCritical classes being moved to the Kernel/Library subdirectory. Also, move the panic and assertions handling code to that directory.
2023-06-04Kernel: Move {Virtual,Physical}Address classes to the Memory directoryLiav A
2023-06-04Kernel: Move Random.{h,cpp} code to Security subdirectoryLiav A
2023-06-04TextEditor: Prevent autoscroll looping overAhmed Hussein
When a text file has only 1 line with long text autoscroll to the top will no longer loop over and set the cursor to the end of the line.
2023-06-04PixelPaint: Make "Crop Image to Content" work with disjoint layersTim Ledbetter
2023-06-04PixelPaint: Make "Crop Image to Selection" work with disjoint layersTim Ledbetter
The "Crop Image to Selection" action will now crop all layers within the current selection. Any layers outside of the current selection are deleted. If there are no layers within the current selection, a new layer the same size as the selection is created, which has the same name as the current active layer.
2023-06-04LibWeb: Account for negative margins when calculating float intrusionAndreas Kling
If a box has a negative margin-left, it may have a negative effective offset within its parent BFC root coordinate system. We can account for this when calculating the amount of left-side float intrusion by flooring the X offset at 0.
2023-06-04LibGfx: Fix adding active edges in filled path rasterizerMacDue
This was previously masked by sorting the edges on max_y, but if the last added edge pointed to an edge that ended on the current scanline, that edge (and what it points to) would also end up added to the active edges. These edges would then never get removed, and break things very badly!
2023-06-04LibGfx: Simplify segmentizing pathsMacDue
Remove SplitLineSegment and replace it with a FloatLine, nobody was interested in its extra fields anymore. Also, remove the sorting of the split segments, this really should not have been done here anyway, and is not required by the rasterizer anymore. Keeping the segments in stroke order will also make it possible to generate stroked path geometry (in future).
2023-06-03LibWeb: Rewind TokenStream if we reject a parsed value as out-of-boundsSam Atkins
Wrap the parsing of numbers, integers, and dimensions in a transaction, which we only commit if that parsed value was actually accepted by the property. This fixes `font: 0/0 a;` failing to parse.
2023-06-03LibWeb: Exit `parse_font_family_value()` when hitting an illegal tokenSam Atkins
...instead of looping forever. Oops! :^)
2023-06-03SystemServer: Ensure service drop privileges could fail only when rootLiav A
If we try to launch a lazily-spawned service and the SystemServer as a (running --user) session leader is running with root permissions, then if it is instructed to drop the root permissions for a the new service then it will make sense to abort the entire spawn procedure if dropping of privileges failed. For other users, trying to change UID/GID to something else doesn't make sense (and will always actually fail) as we are already running in non root permissions, hence we don't attempt to do this anymore. It should be noted that if an explicit User configuration was actually specified for a Service to be used with, we would still try to login with the requested User option value, which would fail when running as non-root user. This is useful for example when trying to run the pro utility with pls to elevate to root permissions, but the session leader is still the same so trying to "drop" privileges to UID 0 doesn't make sense.
2023-06-03LibWeb: Don't crash when document.write a script with src attrZhiyuan Guo
To abort the processing of any nested invocations of the tokenizer, just return is enough in this case. During the process of pending parsing blocking script, the is_ready_to_be_parser_executed() check should be applied on the blocking script, not the original script.
2023-06-03LibWeb: Detect and reject math functions with no resolved typeSam Atkins
... instead of crashing :^)
2023-06-03LibWeb: Resolve the `transition-delay` propertystelar7
2023-06-03LibWeb: Implement the `<symbol>` SVG elementPrestonLTaylor
2023-06-03LibWeb: Implement the `<use>` SVG elementPrestonLTaylor
The SVG <use> element is used to be able to reuse other SVG graphics without having to re-write the svg element. We now support this feature! :^)
2023-06-03LibWeb: Add document_fully_loaded event to DocumentObserverPrestonLTaylor
SVGUseElement needs to be able to query the fully loaded document for its referenced element.
2023-06-03LibWeb: Allow SVG painting to escape out of a shadow treePrestonLTaylor
The spec for the `<use>` element requires a shadow tree for the rendered content, so we need to be able to escape shadow trees when rendering svg content.
2023-06-03LibWeb: Implement `details_notification_task_steps` for <details>stelar7
2023-06-03LibWeb: Implement the <summary> elementstelar7
2023-06-03LibWeb: Make disclosure marker bounds squareSimon Wanner
This makes sure we actually render an equilateral triangle inside a square.
2023-06-03LibWeb: Support list-style-positionSimon Wanner
This moves the ::marker inside of <summary> actually inside. :^)
2023-06-03LibWeb: Make pseudo-elements inspectableSimon Wanner
This makes it possible to set a pseudo-element as the inspected node using Document::set_inspected_node(), Document then provides inspected_layout_node() for the painting related functions.
2023-06-03LibWeb: Add list-style-type: disclosure-{closed,open}Simon Wanner
These markers are rendered as equilateral triangles pointing right and down respectively. As we currently don't implement writing-mode the closed marker does not respect it.
2023-06-03LibLine: Ignore ENOENT errors when loading old historyTim Schumacher
A missing history file is just an empty history, so ignore that error and replace it with an empty array. This regressed in f93ee3142d2ca4329d989dd917fc27c912b60806.
2023-06-03SpiceAgent: Exit early if `SPICE_DEVICE` doesn't existCaoimhe
2023-06-03SpiceAgent: Don't pledge `cpath` or open SPICE_DEVICE as `rwc`Caoimhe
Core::File's new `DontCreate` open mode removes the need for these capabilities on SpiceAgent. We shouldn't have to create this file, as if it doesn't exist, QEMU never initiated a spice connection!
2023-06-03LibCore: Add `File::OpenMode::DontCreate`Caoimhe
Some applications may not want to have the ability to create a file if it doesn't exist, but still be able to read and write from it. The easy solution here would be just to not apply O_CREAT when creating the flags, but to prevent breaking a ton of applications, having a `DontCreate` mode is the best for now.
2023-06-02LibGfx/JPEG: Use `Error` to propagate errorsLucas CHOLLET
This patch removes a long time remnant of the pre-`AK::Error` era.
2023-06-02LibWeb: Fix order/formatting of Properties.jsonSam Atkins
2023-06-02LibWeb: Add missing value ranges to CSS propertiesSam Atkins
...except those related to `grid`, because I can't figure out how the 17 different properties interact with each other, and what values apply to which ones. 😅 All but 1 of these are the infinite range `[-∞,∞]`. As such, specifying that range does not change anything, but it does make it explicit that we've looked at what the range should be, instead of just not having added it.
2023-06-02LibWeb: Support font-size: calc()Andreas Kling
Now that we have a way to resolve calc() lengths without a layout node, we can finally support calc() values in font-size. This wasn't possible before because font-related properties have to be resolved eagerly in StyleComputer due to font-relative CSS length units depending on the computed font being known.
2023-06-02LibWeb: Add a way to resolve calc() values without a layout nodeAndreas Kling
Instead of a layout node, you can pass a new Length::ResolutionContext struct which contains everything needed to resolve calc() lengths.
2023-06-02LibWeb: Fix crashing when grid track size is calc() with percentageAliaksandr Kalenik
Use contains_percentage() that works for calc() values instead of is_percentage(). This fixes issue when tracks with calc() that has percentages where considered as "fixed" tracks with resolvable size which led to incorrectly resolved infinite final track sizes.
2023-06-02Kernel+Userland: Ensure proper unveil permissions before using rm/rmdirLiav A
When deleting a directory, the rmdir syscall should fail if the path was unveiled without the 'c' permission. This matches the same behavior that OpenBSD enforces when doing this kind of operation. When deleting a file, the unlink syscall should fail if the path was unveiled without the 'w' permission, to ensure that userspace is aware of the possibility of removing a file only when the path was unveiled as writable. When using the userdel utility, we now unveil that directory path with the unveil 'c' permission so removal of an account home directory is done properly.
2023-06-02LibWeb: Bounds-check parsed CSS typesSam Atkins
This reintroduces bounds-checking for the CSS `<angle>`, `<frequency>`, `<integer>`, `<length>`, `<number>`, `<percentage>`, `<resolution>`, and `<time>` types. I regressed this around 6b8f4841145a53553c0007a6ff4feefec98a426a when changing how we parsed StyleValues. This is an improvement from before though, since we now allow the bounds of a dimension type to have units. Added a test to make sure we don't regress this again. :^)
2023-06-02LibWeb: Add comparison operators to CSS numeric types (except Length)Sam Atkins
This is to make it easier to bounds-check their values during parsing. Length is left out because many length units are relative to the context in which they are used, and so we cannot easily compare `10px` and `1em`, for example.
2023-06-02LibWeb: Support flex items with calc() main size containing percentagesAndreas Kling
If a flex item's main size is a CSS calc() value that resolves to a length and contains a percentage, we can only resolve it when we have the corresponding reference size for the containing block.
2023-06-02LibWeb: Make StackingContext sorting a lot fasterAndreas Kling
Stacking contexts are sorted after building a tree of them. They are sorted by z-index first, DOM tree order second. Sorting was previously *very* slow on pages with many stacking contexts. That was because the sort() function used Node::is_before() in the quick_sort comparator to see if one StackingContext was before another. is_before() does tree traversal and can take quite a long time per call. This patch avoids all that by letting StackingContext know its index among all StackingContexts within the same document in tree order. There's a noticeable snappiness increase on the CSS-FLEXBOX-1 spec page, for instance. :^)
2023-06-02Kernel: Move the Storage directory to be a new directory under DevicesLiav A
The Storage subsystem, like the Audio and HID subsystems, exposes Unix device files (for example, in the /dev directory). To ensure consistency across the repository, we should make the Storage subsystem to reside in the Kernel/Devices directory like the two other mentioned subsystems.
2023-06-02WebContent: Prevent renderer crash on partially invalid imageNico Weber
If an image had a valid header and valid metadata, but decoding the image frame data failed, the renderer used to crash. The crash only happened in SerenityOS, because there ImageCodecPluginSerenity returned nullptr bitmaps. Instead, return {} like ImageCodecPluginLadybird already does if there's a nullptr frame. Fixes #19141. Loading #19141 in the browser satisfyingly also serves as a manual test for the bug. (No automated test since we don't run layout tests within SerenityOS on the bots.)
2023-06-02LibJS: Store PrivateElement values in Handle<Value>Andreas Kling
This fixes an issue where private element values were not always protected from GC. I found two instances where this was happening: - ECMAScriptFunctionObject did not mark m_private_methods - ClassDefinitionEvaluation had two Vector<PrivateElement> that were opaque to the garbage collector, and so if GC occurred while constructing a class instance, some or all of its private elements could get incorrectly collected.
2023-06-02LibWeb: Parse `clamp()` css math functionstelar7
2023-06-02LibWeb: Parse `max()` css math functionstelar7
2023-06-02LibWeb: Parse `min()` css math functionstelar7
2023-06-02LibWeb: Move function parsing to separate methodstelar7
2023-06-02LibWeb: Remove per path clipping for SVGGeometryPaintableMacDue
Somewhere the path bounding box in the layout and the actual draw path are getting slightly mismatched. This results in partly clipped bits of SVGs. The paths are already clipped to the containing SVG, and the size of the path in the layout is computed from the bounding box, so it is probably safe just to remove this clipping for now.
2023-06-02LibWeb: Avoid text-aligning content that is too long for its line boxFalseHonesty
Previously, we would always respect the `text-align` property, even if the text being aligned was too long for its line box and would be clipped. This led to seeing the clipped middle/end of strings when we should instead always see the beginning of the text.
2023-06-01LibCrypto: Don't return reference to stack frame in PBKDFBen Wiederhake
A reference to the current stack frame becomes invalid after returning, so returning Bytes is pointless. I don't understand why this wasn't discovered earlier, but it caused some CI problems for me, so I fixed it. Don't take this as encouragement to break master! :^)