1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 20:17:44 +00:00
Commit graph

18375 commits

Author SHA1 Message Date
Itamar
cbb49f26d9 LibCpp: Support parsing binary "==" Operator 2021-04-06 21:51:58 +02:00
Itamar
1f9f6ea9d6 LibCpp: Support parsing function qualifiers 2021-04-06 21:51:58 +02:00
Itamar
ee35fc0da3 LibCpp: Support parsing empty return statements 2021-04-06 21:51:58 +02:00
Itamar
0babb39cae LibCpp: Parse variable declarations in global scope 2021-04-06 21:51:58 +02:00
Itamar
9545c156b5 LibGUI: Fix typo in AutocompleteBox::show 2021-04-06 21:51:58 +02:00
Itamar
68f420ed42 LibCpp: Fix null dereference in IfStatement::declarations() 2021-04-06 21:51:58 +02:00
Itamar
9288dfced8 LanguageServers/Cpp: Don't include declarations bellow the current line 2021-04-06 21:51:58 +02:00
Luke
b82a00d657 LibWeb: Use the new "ensure_pre_insertion_validity" in the HTML document parser
Previously we didn't check if we could insert the element in the
adjusted insertion location's parent.

Also makes the return type NonnullRefPtr, as that's what element is.
2021-04-06 21:42:00 +02:00
Luke
5beacf08a2 LibWeb: Make the node mutation algorithms more spec compliant
The mutation algorithms now more closely follow the spec and
fixes some assertion failures in tests such as Acid3 and Dromaeo.

The main thing that is missing right now is passing exceptions to the
bindings layer. This is because of issue #6075. I spent a while trying
to work it out and got so frustrated I just left it as a FIXME. Besides
that, the algorithms bail at the appropriate points.

This also makes the adopting steps in the document more spec compliant
as it's needed by the insertion algorithm. While I was at it, I added
the adoptNode IDL binding.

This adds a bunch of ancestor/descendant checks to TreeNode as well.
I moved the "remove_all_children" function to Node as it needs to use
the full remove algorithm instead of simply removing it from
the child list.
2021-04-06 21:42:00 +02:00
Luke
5b5d7857e3 LibWeb: Support the "ImplementedAs" IDL attribute on functions 2021-04-06 21:42:00 +02:00
Luke
e56c56128b LibWeb: Add non-inclusive variants of subtree traversal 2021-04-06 21:42:00 +02:00
Luke
ca71ac484b LibWeb: Rename "for_each_in_subtree(_of_type)" to "for_each_in_inclusive_subtree(_of_type)"
This is because it includes the initial node that the function was
called on, which makes it "inclusive" as according to the spec.

This is important as there are non-inclusive variants, particularly
used in the node mutation algorithms.
2021-04-06 21:42:00 +02:00
Luke
f482628fe5 LibWeb: Strip out the mutation event logic from TreeNode
This will instead be done by Node, as they need to occur at precise
steps of the mutation algorithms. Additionally, some of the events
may need to be run multiple times. For example, the removal steps
is run for all the shadow-including descendants of the node that
just got removed.
2021-04-06 21:42:00 +02:00
Luke
be47a94876 LibWeb: Only prepare scripts on insertion if they're not parser inserted
Also updates the "inserted_into" function as per the previous commit.

Changes the FIXME, as according to the spec there is no notification
system to be notified of things such as the node becoming connected.

Instead, "becomes connected" means when the insertion steps are run,
the element is now connected when it previously wasn't.

https://html.spec.whatwg.org/multipage/infrastructure.html#becomes-connected

This is done in this PR because the insertion steps are run when the
start tag is inserted. This made it try to prepare the script too early
for inline scripts.

The order of operations in the HTML document parser ensures that
the parser document is set before the insertion steps are run.
2021-04-06 21:42:00 +02:00
Luke
e3d01c5e10 LibWeb: Make the node mutation event functions spec compliant
This particularly affects the insertion steps and the removed steps.

The insertion steps no longer take into the parent that the node
was inserted to, as per the spec. Due to this, I have renamed the
function from "inserted_into" to simply "inserted". None of the
users of the insertion steps was using it anyway.

The removed steps now take a pointer to the old parent instead of
a reference. This is because it is optional according to the spec
and old parent is null when running the removal steps for the
descendants of a node that just got removed.

This commit does not affect HTMLScriptElement as there is a bit
more to that, which is better suited for a separate commit.

Also adds in the adopted steps as they will be used later.
2021-04-06 21:42:00 +02:00
Luke
9e338a2be2 LibWeb: Add ProcessingInstruction node
Not particuarly useful right now, but is used in
ensure_pre_insertion_validity.

I'm not totally sure on the constructor arguments.
2021-04-06 21:42:00 +02:00
Andreas Kling
c28a3a385b LibGUI: Tweak order of common location buttons in FilePicker
Let's put the root directory up top so the buttons are in order of
directory specificity.
2021-04-06 21:07:04 +02:00
Andreas Kling
33d9b592cd LibGUI: Make FilePicker's common location buttons checkable
We now use the checked state of these buttons to indicate that you are
in that specific folder. The checked state is updated automagically
no matter how you navigate the file system. :^)
2021-04-06 21:07:04 +02:00
Andreas Kling
25de655d43 LibGUI: Add shortcuts to common locations in GUI::FilePicker
This patch adds a handy set of buttons on the left hand side that can
take you to common locations such as:

- Your home directory
- Your desktop directory
- The root directory
2021-04-06 21:07:04 +02:00
Jean-Baptiste Boric
346e0f4dac Kernel: Don't crash if unable to map ramdisk inside kernel address space 2021-04-06 18:17:16 +02:00
Jean-Baptiste Boric
436ca2491d Kernel: Fix KUBSAN crash with RamdiskDevice 2021-04-06 18:17:16 +02:00
Andreas Kling
a7ad0f14bf Minesweeper: Fix UI layout and focus behavior
Click-to-focus was visually annoying. Switch to tab-to-focus.
2021-04-06 17:55:47 +02:00
Andreas Kling
ec1a72b759 FileManager: Set the default menu item in desktop context menus
This makes the "Run TextEditor" action show up in bold text as expected
when opening the context menu for TextEditor on the desktop. :^)
2021-04-06 17:55:47 +02:00
Andreas Kling
7b9754d976 SystemMonitor: Highlight kernel processes a bit better in SystemMonitor
Kernel processes are now displayed with a gear icon and a "(*)" suffix
in the process list.
2021-04-06 17:55:47 +02:00
Andreas Kling
ee2a1f5af7 Kernel+LibCore: Note whether a process is kernel mode in /proc/all 2021-04-06 17:55:47 +02:00
Arthur Mendes
0fd50f0283
Ports: Add flatbuffers library (#6050)
The flatbuffers library is a serialization library, created by Google
for game development and performance-critical applications.
It aims to be fast and efficient.

This commit creates a port of it to SerenityOS.

The flatbuffers build process generates three things: some header files,
a library (libflatbuffers) and a schema compiler (flatc).

There are tests, but they are not compiled, because it runs the
flatbuffers schema compiler, one of the things we are cross-compiling.
The compiler will not run because the target is different from the host
2021-04-06 17:54:28 +02:00
Andreas Kling
380e688123 LibWeb: Remove nodes from their old parent in appendChild/insertBefore 2021-04-06 15:52:09 +02:00
Andreas Kling
c70e0a4f29 LibWeb: Sever parent/child connections in ~TreeNode()
Also make sure to unref the children if there are any. Without this
it was very easy to leak TreeNodes.
2021-04-06 15:51:55 +02:00
Andreas Kling
41e5a0fe02 LibWeb: Remove duplicated code in TreeNode::remove_child()
We were assigning to m_first_child twice.
2021-04-06 14:27:44 +02:00
Andreas Kling
1d065aa51b LibWeb: Support the :last-of-type CSS selector :^) 2021-04-06 13:06:42 +02:00
Andreas Kling
0eb9a9dd13 LibWeb: Support the :first-of-type CSS selector :^) 2021-04-06 13:06:42 +02:00
Manuel Palenzuela
4f690408af Ports: Added a Super-Mario clone port.
Added a minimal dependency super mario port. (Only depends on SDL, SDL_image and SDL_mixer).
2021-04-06 09:32:37 +02:00
Dan MacDonald
ceafc5eea0 Documentation: Add link to network booting guide to install guide 2021-04-06 09:27:45 +02:00
Dan MacDonald
bb39f3097a Documentation: Update supported NICs and mention network boot support within install guide 2021-04-06 09:27:45 +02:00
AnotherTest
c6607719d2 DHCPClient: Retry DISCOVER for interfaces that fail
Attempts are spaced out with exponential backoff, cut at 10 minutes per
attempt.
Also avoid trying to acquire an IP on interfaces that aren't up.
Fixes #6126.
Fixes #6125.
2021-04-06 08:38:44 +02:00
Manuel Palenzuela
8b0f1f816b Ports: Added an oksh port
Currently has some problems such as not killing jobs when (ctrl + c)
and depends on an implementation of sigsuspend.
2021-04-06 08:10:18 +02:00
Andreas Kling
6d8ca9871c LibGfx: Move underline closer to text in draw_ui_text() 2021-04-05 23:15:43 +02:00
Andreas Kling
516868e197 SystemMonitor: Add Alt shortcuts for top-level menus 2021-04-05 23:15:43 +02:00
Andreas Kling
0652c2e4cc FileManager: Add Alt shortcuts for top-level menus 2021-04-05 23:15:43 +02:00
Andreas Kling
1d46e8d50c Browser: Add Alt shortcuts for top-level menus 2021-04-05 23:15:43 +02:00
Andreas Kling
1f4dc670d4 WindowServer: Select first item when opening a menu via Alt shortcut
To make keyboard navigation a little nicer, select the first/top menu
item right away.
2021-04-05 23:15:43 +02:00
Andreas Kling
357f288fef Terminal: Add Alt shortcuts for top-level menus 2021-04-05 23:15:43 +02:00
Andreas Kling
d80fb6d9c0 WindowServer: Support Alt+Character menu shortcuts :^)
This patch adds support for opening menus via keyboard shortcuts.
Use an ampersand in a menu name to automatically create a keyboard
shortcut (Alt + the character following the ampersand.)

Menus with an Alt shortcut have a small underline under the shortcut
character for discoverability.
2021-04-05 23:15:43 +02:00
Andreas Kling
89bc655765 LibGfx: Add Gfx::Painter::draw_ui_text()
This function draw text while interpreting "&" as "underline the next
character" and "&&" as "&".
2021-04-05 23:15:43 +02:00
Manuel Palenzuela
a1815b0f87 Ports: Added the libzip library 2021-04-05 20:04:15 +02:00
Linus Groh
abc7b31079 LibJS: Let Object::get_own_properties() return both strings and symbols
The new default return_type argument is GetOwnPropertyReturnType::All,
which returns properties with both string and symbol keys (which is also
the default for [[OwnPropertyKeys]]). This means that in some cases we
need to iterate the ordered property table twice, as we don't store
string and symbol properties separately but symbols must - there's
certainly room for (performance) improvements here. On the other hand
this makes Reflect.ownKeys() return symbol properties now :^)
2021-04-05 19:30:30 +02:00
Linus Groh
1416027486 LibJS: Add Object::get_enumerable_own_property_names() and use it
Object::get_own_properties() is a bit unwieldy to use - especially as
StringOnly is about to no longer be the default value. The spec has an
abstract operation specifically for this (EnumerateObjectProperties),
so let's use that. No functionality change.
2021-04-05 19:30:30 +02:00
Linus Groh
afc86abe24 LibJS: Remove this_object parameter from get/put own property functions
Specifically:

- Object::get_own_properties()
- Object::put_own_property()
- Object::put_own_property_by_index()

These APIs make no sense (and are inconsistent, get_own_property()
didn't have this parameter, for example) - and as expected we were
always passing in the same object we were calling the method on anyway.
2021-04-05 19:30:30 +02:00
Timothy Flynn
5de0e0068c LibWeb: Support two-value background-repeat
The background-repeat value may be specified as either one- or two-value
identifiers (to be interpreted as horizontal and vertical repeat). This
adds two pseudo-properties, background-repeat-x and background-repeat-y,
to handle this. One-value identifiers are mapped to two-value in
accordance with the spec.
2021-04-05 18:49:04 +02:00
Timothy Flynn
0794d879f3 Base: Update background-repeat test with two-value section 2021-04-05 18:49:04 +02:00