summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-10-13LibHTML: Fix broken line splitting behavior in LayoutReplacedAndreas Kling
Replaced elements will now properly create line breaks when they use up the available horizontal space. This fixes an issue with <img>'s lining up instead of breaking.
2019-10-13Ports: libarchiveCalvin Buckley
Provides a cpio and tar implementation. Unfortunately doesn't work yet; requires a working mbtowc implementation.
2019-10-13Kernel: Use word-sized entropy as much as possible in syscallCalvin Buckley
2019-10-13LibC: add arc4random* using new getrandom syscallCalvin Buckley
Serenity is really not production ready; I shouldn't have to warn you not to trust the RNG here. This is for compatibility with software expecting the interface. arc4random does expose an annoying flaw with the syscall I want to discuss with Kling though.
2019-10-13Kernel: Add a Linux-style getrandom syscallCalvin Buckley
The way it gets the entropy and blasts it to the buffer is pretty ugly IMHO, but it does work for now. (It should be replaced, by not truncating a u32.) It implements an (unused for now) flags argument, like Linux but instead of OpenBSD's. This is in case we want to distinguish between entropy sources or any other reason and have to implement a new syscall later. Of course, learn from Linux's struggles with entropy sourcing too.
2019-10-13LibHTML: Run second layout pass if first layout adds/removes scrollbarsAndreas Kling
If you do a layout and it turns out that the page contents don't fit in the viewport vertically, we add a vertical scrollbar. Since the scrollbar takes up some horizontal space, this reduces the amount of space available to the page. So we have to do a second layout pass. :^) Fixes #650.
2019-10-13Runner: Enable QEMU's KVM mode by defaultAndreas Kling
This makes QEMU run significantly faster on Linux systems with KVM.
2019-10-13Kernel: Fix accidental restore of bogus FPU state after forkAndreas Kling
Cloned threads (basically, forked processes) inherit the complete FPU state of their origin thread. There was a bug in the lazy FPU state save/restore mechanism where a cloned thread would believe it had a buffer full of valid FPU state (because the inherited flag said so) but the origin thread had never actually copied any FPU state into it. This patch fixes that by forcing out an FPU state save after doing the initial FPU initialization (FNINIT) in a thread. :^)
2019-10-13Kernel: Don't leak an FPU state buffer for every spawned threadAndreas Kling
We were leaking 512 bytes of kmalloc memory for every new thread. This patch fixes that, and also makes sure to zero out the FPU state buffer after allocating it, and finally also makes the LogStream operator<< for Thread look a little bit nicer. :^)
2019-10-13LibMarkdown: Emit properly formed HTML documentsAndreas Kling
2019-10-13LibHTML: Split layout invalidation into style and layout invalidationAndreas Kling
When style is invalidated (for example when an external stylesheet finishes loading) we delete the whole layout tree and build a new one. This is necessary since the new style information may result in a different layout tree. When layout is invalidated (window resized, image dimensions learned, etc..) we keep the existing layout tree but run the layout algorithm once again. There's obviously lots of room for improvement here. :^)
2019-10-13LibHTML: Move layout root from HtmlView to DocumentAndreas Kling
The layout root is now kept alive via Document::m_layout_root. This will allow us to do more layout-related things inside the inner layer of LibHTML without reaching out to the HtmlView. I'd like to keep HtmlView at a slightly higher level, to prevent it from getting too complex. This patch also fixes accidental disconnection of the layout tree from the DOM after doing a layout tree rebuild. ~LayoutNode() now only unsets the DOM node's layout_node() if it's itself.
2019-10-13HexEditor: Initial application releaseBrandon Scott
The very first release of the Hex Editor for Serenity.
2019-10-13LibGUI: Fix GMenu submenu shortcut bug.Brandon Scott
I was encountering an entire system crash when the window server attempted to do something with the shortcut text on a submenu. This bug only seemed to appear when I had a lone submenu inside of a menu.
2019-10-13LibC: Add some wchar functionsCalvin Buckley
These are basically copy and pasted from the regular string version. Also add some more multi-byte/wide conversion stub. libarchive wanted these. There's a lot more, but we can add them one at a time.
2019-10-13LibC: Add missing u_* typedefs (u_char/u_short)Calvin Buckley
2019-10-13LibHTML: Handle comments in the CSS parserAndreas Kling
Turn consume_whitespace() into consume_whitespace_or_comments() and have it swallow /* comments */ as well.
2019-10-12LibHTML: Add Comment and CharacterData nodes and improve HTML parsingAndreas Kling
This patch adds the CharacterData subclass of Node, which is now the parent class of Text and a new Comment class. A Comment node is one of these in HTML: <!--hello friends--> Since these occur somewhat frequently on the web, we need to be able to parse them. This patch also adds a child rejection mechanism to the DOM tree. Nodes can now override is_child_allowed(Node) and return false if they don't want a particular Node to become a child of theirs. This is used to prevent Document from taking on unwanted children.
2019-10-12LibC: Add readdir_r for re-entrant directory reading (#648)Calvin Buckley
This is popular and in POSIX. Some duplicated code between readdir is also unified into some static functions.
2019-10-12AK: Add Atomic.hTom
Use gcc built-in atomics
2019-10-12LibHTML+Browser: Add debug option to draw borders around line boxesAndreas Kling
This will be very useful when debugging line layout.
2019-10-12LibC: Have perror() show the input string on the debugger as wellAndreas Kling
2019-10-12LibHTML: Implement the <br> element for line breakingAndreas Kling
The <br> element will produce a special LayoutBreak node in the layout tree, which forces a break in the line layout whenever encountered. This patch also makes LayoutBlock use the current line-height as the minimum effective height for each line box. This ensures that having multiple <br> elements in a row doesn't create 0-height line boxes.
2019-10-12Browser: Add a debug menu with actions to dump DOM and Layout treesAndreas Kling
2019-10-12LibHTML: Add StyleProperties::line_height()Andreas Kling
We currently hard-code the line height to 140% of the font glyph height and this patch doesn't fix the hard-coding, but at least moves it out of LayoutText and into StyleProperties where it can be re-used until the day we go and do a proper implementation of CSS line-height. :^)
2019-10-12LibHTML: Make all element tag names lowercase for nowAndreas Kling
This is not the correct-est way of doing this, but it does make a bunch of things simpler for now. We can revisit tag name case later on. :^)
2019-10-12LibHTML: Move Element construction to a separate fileAndreas Kling
We now have create_element(document, tag_name) in ElementFactory. This will be useful for constructing new elements outside of parsing.
2019-10-11LibHTML: Make sure the marker has the same inline state as siblingsAndreas Kling
Or LayoutBlock will assert when trying to layout its children since they have inconsistent inline state.
2019-10-11LibHTML: LayoutBlock::children_are_inline() should check is_inline()Andreas Kling
Instead of asking if the first child is not a block, ask if it thinks it's inline.
2019-10-11LibHTML: Add LayoutNode classes for "display: list-item" and its markerAndreas Kling
This patch removes the hard-coded hack for "display: list-item" from LayoutBlock and adds LayoutListItem and LayoutListItemMarker. Elements with "display: list-item" now generate a LayoutListItem, which may then also generate a LayoutListItemMarker if appropriate. :^)
2019-10-11Ports: add libiconv portVincent Sanders
2019-10-11Libc: make library internal includes come from private include namespaceVincent Sanders
2019-10-10LibHTML+Browser: Show the number of pending resource loadsAndreas Kling
For now this is simply a counter+hook exposed by ResourceLoader and shown in the Browser status bar. This is not very nuanced, and it would be nice to expose more info so we could eventually do something like a progress bar.
2019-10-10URL: No need to include ":80" when serializing http:// URLsAndreas Kling
2019-10-10LibHTML: Show a hand cursor when hovering over a clickable link :^)Andreas Kling
2019-10-10LibGUI+WindowServer: Add a "Hand" cursor to the standard cursorsAndreas Kling
2019-10-10Kernel: Make SlabAllocator fall back to kmalloc() when slabs run outAndreas Kling
This is obviously not ideal, and it would be better to teach it how to allocate more pages, etc. But since the physical page allocator itself currently uses SlabAllocator, it's a little bit tricky :^)
2019-10-10LibHTML: Fix relative URL completion when document URL ends in a slashAndreas Kling
2019-10-09LibHTML: Have TreeNode deref its children before deleting itselfAndreas Kling
This is definitely not the ideal ownership model here, but it's something we'll have to iterate on as the engine grows. At least this prevents us from leaking the entire world. :^)
2019-10-09LibHTML: Tear down the layout tree before changing the Frame's documentAndreas Kling
We don't want to deal with document().frame() being null inside layout tree code, so this makes sure we tear it down before the frame has a chance to get nulled out.
2019-10-09LibHTML: Document::detach_from_frame() should actually detachAndreas Kling
2019-10-09LibHTML: Move is_ancestor_of() from LayoutNode to TreeNodeAndreas Kling
This way it becomes available to all the different TreeNode subclasses.
2019-10-09LibHTML: Implement the <blink> elementAndreas Kling
Just in time for Serenity's 1st birthday, here is the <blink> element! This patch adds a bunch of different mechanisms to enable partial repaints of the layout tree (LayoutNode::set_needs_display())) It also adds LayoutNode::is_visible(), which can be toggled to prevent a LayoutNode from rendering anything (it still takes up space though.)
2019-10-09LibGUI: Add GScrollableWidget::to_widget_position()Andreas Kling
This is a complement to to_content_position() :^)
2019-10-09LibHTML: Add basic <!DOCTYPE> parsing and a DocumentType classAndreas Kling
Plus, Document::fixup() will now make sure that the document always starts with a doctype node, followed by an <html> element.
2019-10-09LibHTML: Rename Document::normalize() to fixup() and always do itAndreas Kling
Node.normalize() is a standard DOM API that coalesces Text nodes. To avoid clashing with that, rename it to fixup(). This patch also makes it happen automagically as part of parsing.
2019-10-09LibHTML: Handle CSS declarations that don't end in ';'Andreas Kling
2019-10-09LibHTML: Collapse whitespace in LayoutText unless white-space: pre;Andreas Kling
Before breaking the Text node contents into words, collapse all of the whitespace into single space (' ') characters. This fixes broken rendering of paragraphs with newlines in them. :^)
2019-10-09LibC: Add a missing mbstowcs() declarationSergey Bugaev
This ensures it gets a C linkage, and so fixes the binutils build.
2019-10-09LibHTML: Use ResourceLoader in HTMLLinkElementAndreas Kling
This makes loading external stylesheets from http:// URLs work. :^)