Commit graph

1257 commits

Author SHA1 Message Date
sin-ack
436262ea3a Meta: Use the ImplementedAs value in the attribute setter
Co-Authored-By: Luke Wilde <lukew@serenityos.org>
2022-03-16 00:38:31 +01:00
Linus Groh
4260638121 Meta: Add copy-src to commands in ZSH autocomplete script 2022-03-14 22:20:35 +00:00
Linus Groh
7560f61b71 Meta: Add aarch64 to targets in ZSH autocomplete script 2022-03-14 22:20:24 +00:00
Andreas Kling
74fda2a761 LibWeb: Make CSS::property_initial_value() use an Array internally
Since we want to store an initial value for every CSS::PropertyID,
it's pretty silly to use a HashMap when we can use an Array.

This takes the function from ~2.8% when mousing around on GitHub all the
way down to ~0.6%. :^)
2022-03-13 18:09:43 +01:00
Jakub V. Flasar
6d2c298b66 Kernel: Move aarch64 Prekernel into Kernel
As there is no need for a Prekernel on aarch64, the Prekernel code was
moved into Kernel itself. The functionality remains the same.

SERENITY_KERNEL_AND_INITRD in run.sh specifies a kernel and an inital
ramdisk to be used by the emulator. This is needed because aarch64
does not need a Prekernel and the other ones do.
2022-03-12 14:54:12 -08:00
Sam Atkins
eb6e4e6775 Meta: Port Generate_CSS_PropertyID_cpp to LibMain/Core::Stream 2022-03-10 09:49:13 -05:00
Sam Atkins
a850465a4b Meta: Port Generate_CSS_PropertyID_h to LibMain/Core::Stream 2022-03-10 09:49:13 -05:00
Sam Atkins
e80038d938 Meta: Port Generate_CSS_ValueID_cpp to LibMain/Core::Stream 2022-03-10 09:49:13 -05:00
Sam Atkins
dd238df42d Meta: Port Generate_CSS_ValueID_h to LibMain/Core::Stream 2022-03-10 09:49:13 -05:00
Sam Atkins
7ce8a91341 Meta: Generate functions for validating media-query values
These work differently from how we validate StyleValues. There, we parse
a StyleValue from the CSS, and then see if it is allowed in the
property. That causes problems when the syntax is ambiguous - for
example, `0` can be a number or a Length.

Here instead, we ask what kinds of value are allowed for a
media-feature, and then only attempt to parse those kinds of value.
This makes the ambiguity problem go away. :^)

Each media-feature in the spec only accepts one type of value, and/or
some identifiers. This makes the switch statements for the type a bit
excessive, but the spec does not *require* that only one type is
allowed, so this is more future-proof.
2022-03-09 23:06:30 +01:00
Sam Atkins
0371d33132 LibWeb+Meta: Stop discrete media-features from parsing as ranges
Only "range" type media-features are allowed to appear in range syntax,
or have a `min-/max-` prefix.
2022-03-09 23:06:30 +01:00
Sam Atkins
b7bb86462b Meta: Generate CSS::MediaFeatureID enum
This works largely the same as the PropertyID and ValueID generators,
but using LibMain, Core::Stream, and TRY().

Rather than have a MediaFeatureID::Invalid, I decided to return an
Optional. We'll see if that turns out better or not. :^)
2022-03-09 23:06:30 +01:00
Sam Atkins
e986331a4f Meta: Move title/camel_casify() functions into their own file
These were duplicated among the CSS generators.
2022-03-09 23:06:30 +01:00
Andreas Kling
fabcee016f LibWeb: Add basic support for DOM's NodeIterator and NodeFilter
This patch adds NodeIterator (created via Document.createNodeIterator())
which allows you to iterate through all the nodes in a subtree while
filtering with a provided NodeFilter callback along the way.

This first cut implements the full API, but does not yet handle nodes
being removed from the document while referenced by the iterator. That
will be done in a subsequent patch.
2022-03-09 16:43:00 +01:00
Sahan Fernando
04849c9561 Meta: Add SERENITY_GL environment variable to run.sh 2022-03-09 14:58:48 +03:30
Daniel Bertalan
a25cc9619d Base+Meta: Make /usr/local read-write
This directory has to be writable if we want to install ports that have
been built inside Serenity. It's owned by root anyway, so having it be
read-only does not provide many security benefits.
2022-03-08 23:30:47 +01:00
davidot
6dd8ef485a Meta: Fix that the processor count was output to stderr and ignored
Because of ninja's default behavior of using all processors this gave
the correct behaviour because MAKEJOBS was empty. However this meant
that the processor count was printed to stderr when building.
2022-03-08 17:56:20 +01:00
davidot
3192cabc0e Meta: Read MAKEJOBS to limit jobs for ninja in serenity.sh
The default behavior of using all cores will still apply if no
MAKEJOBS variable is supplied.
2022-03-08 17:12:35 +01:00
Linus Groh
1422bd45eb LibWeb: Move Window from DOM directory & namespace to HTML
The Window object is part of the HTML spec. :^)
https://html.spec.whatwg.org/multipage/window-object.html
2022-03-08 00:30:30 +01:00
Matthew Olsson
73cf8205b4 LibPDF: Propagate errors in Parser and Document 2022-03-07 10:53:57 +01:00
Idan Horowitz
59e9e7cc61 LibWeb: Add a very basic and ad-hoc version of IDL overload resolution
This initial version lays down the basic foundation of IDL overload
resolution, but much of it will have to be replaced with the actual IDL
overload resolution algorithms once we start implementing more complex
IDL overloading scenarios.
2022-03-05 23:40:08 +01:00
Linus Groh
1719862d12 LibWeb: Hide some debug logging behind CANVAS_RENDERING_CONTEXT_2D_DEBUG
This can be quite noisy and isn't generally useful information.
2022-03-04 23:03:29 +01:00
Jelle Raaijmakers
ae2591657d Meta: Add "SerenityOS" to the QEMU window title
Just a small quality of life improvement :^)
2022-03-03 11:47:18 +01:00
Liav A
629eed3a4c Meta: Add option to run SerenityOS on a QEMU MicroVM machine
The microvm machine type is a modern tool for kernel and firmware
developers to test their software against features like FDTs, second
IOAPIC, lack of legacy devices by default, the ability of using PCIe
without using PCI x86 IO ports, etc.

We can boot into such machine but we are limited in the functionality we
support currently for this type of virtual machine.
2022-03-02 18:41:54 +01:00
Liav A
2dbbec66e4 Meta: Add option to run SerenityOS on a QEMU ISA-PC machine
The ISA-PC machine type provides no PCI bus support, no IOAPIC support
and other modern PC features of our generation.

This is mainly a good environment for testing abstractions in the kernel
space, and can help with improving on them for the sake of porting the
OS to other chipsets and CPU architectures.
2022-03-02 18:41:54 +01:00
kleines Filmröllchen
084347becc Utilities+Meta: Check icons in markdown-check
We use the environment variable SERENITY_SOURCE_DIR to resolve and check
icon links. This is a bit inconvenient as SERENITY_SOURCE_DIR needs to
be set correctly before invoking the markdown checker, but as we use it
through the check-markdown script anyways, I think it's not a problem.
2022-02-26 20:05:06 +02:00
Luke Wilde
0568229d81 Lagom/Fuzzers: Add MP3 fuzzer 2022-02-26 19:31:16 +02:00
Itamar
3a71748e5d Userland: Rename IPC ClientConnection => ConnectionFromClient
This was done with CLion's automatic rename feature and with:
find . -name ClientConnection.h
    | rename 's/ClientConnection\.h/ConnectionFromClient.h/'

find . -name ClientConnection.cpp
    | rename 's/ClientConnection\.cpp/ConnectionFromClient.cpp/'
2022-02-25 22:35:12 +01:00
networkException
9279dd783b Everywhere: Use title case for man section titles
In addition to the section headings on man.serenityos.org,
all occurances of man section titles are now formatted in title case.
2022-02-25 12:06:31 -05:00
Linus Groh
967300e1e3 Meta: Title case 'File Formats' on man.serenityos.org 2022-02-24 23:04:22 +00:00
networkException
156e8a80c7 Meta: Use correct man page title for section 5 on man.serenityos.org 2022-02-24 22:49:03 +00:00
Sam Atkins
53a3937c34 LibWeb: Allow Angle/Frequency/Resolution/Time values for CSS properties 2022-02-24 08:04:25 +01:00
Ali Mohammad Pur
bed129a69f LibTest+Spreadsheet: Add some basic spreadsheet runtime behaviour tests
As there's a somewhat active development going on, let's keep the
expected behaviour under tests to make sure nothing blows up :^)
2022-02-23 03:17:12 +03:30
Filiph Sandström
b9dbe248aa Lagom: Port LibSyntax
LibSyntax was already building for lagom without any extra changes
so let's just enable it :^)
2022-02-21 16:42:23 +00:00
Sviatoslav Peleshko
9399698aaa Meta: Add "vdagent" character device for both qemu-vdagent and spicevmc
Previously we added it only if spice was available, but it's possible to
build qemu with --disable-spice --enable-spice-protocol, which provides
qemu-vdagent but no spicevmc. In such case we still configured
qemu-vdagent to use "vdagent" device, but never actually defined it, so
the qemu-vdagent was never working.
2022-02-20 20:32:22 -08:00
Andrew Kaster
fb179bc289 Fuzzers: Avoid unnecessary ByteBuffer copies in FuzzWAVLoader
Avoid trying to memcpy from 0-byte sources as well, by bailing early on
nullptr data inputs.
2022-02-20 19:04:59 +00:00
Andrew Kaster
0c95d9962c Lagom: Add two-stage build for Fuzzers to enable fuzzing generated code
This allows us to fuzz the generated unicode and timezone database
helpers, and to fuzz things like LibJS using Fuzzilli to get proper
coverage of our unicode handling code.

Update the Azure CI to use the new two-stage build as well, and cleanup
some unused CMake options there.
2022-02-20 19:04:59 +00:00
Brian Gianforcaro
f01e1d0c17 Ports/gdb: Add descriptions to all gdb patches and remove dead code
Before working on the gdb port some more, I wanted to get these patches
cleaned up to have a good base to build upon.
2022-02-20 11:49:41 +01:00
Luke Wilde
0e6c7eea0f LibWeb: Add AbortSignal as a wrappable type 2022-02-20 02:03:24 +01:00
Luke Wilde
ced7e8ab28 LibWeb: Add support for dictionary types to union types
This also fixes some indentation issues in the generated code.
2022-02-20 02:03:24 +01:00
Luke Wilde
d0ebe80f69 LibWeb: Add dictionary types to idl_type_name_to_cpp_type
This allows dictionaries to appear in sequences, records and unions.
2022-02-20 02:03:24 +01:00
Luke Wilde
567abd52a3 LibWeb: Add support for optional, non-nullable wrapper types 2022-02-20 02:03:24 +01:00
Luke Wilde
86650e37fe LibWeb: Don't perform ToObject when converting values to wrapper types
WebIDL checks the type of the value is Object instead of performing
ToObject on the value.

https://webidl.spec.whatwg.org/#implements
2022-02-20 02:03:24 +01:00
Gunnar Beutner
6b9913f010 Meta: Explicitly set number of available inodes for genext2fs
According to its manpage genext2fs tries to create the file system with
as few inodes as possible. This causes SerenityOS to fail at boot time
when creating temporary files.
2022-02-19 13:13:22 +02:00
Daniel Bertalan
0f2e18403c Meta: Make serenity.sh gdb work with the Clang toolchain
We now pass along the toolchain type to all subcommands. This ensures
that gdb will load the correct debug information for kernels compiled
with Clang, and the following warning won't appear with the GNU
toolchain:

> WARNING: unknown toolchain 'gdb'. Defaulting to GNU.
>         Valid values are 'Clang', 'GNU' (default)
2022-02-19 11:36:08 +01:00
Linus Groh
fb1dca2c4b LibWeb: Move WebSocket into the Web::WebSockets namespace
WebSockets got moved from the HTML standard to their own, the new
WebSockets Standard (https://websockets.spec.whatwg.org).

Move the IDL file and implementation into a new WebSockets directory and
C++ namespace accordingly.
2022-02-18 19:34:08 +00:00
Ben Abraham
ae346cff6b LibWeb: Add partially functioning Worker API
Add a partial implementation of HTML5 Worker API.
Messages can be sent from the inner context externally.
2022-02-17 22:45:21 +01:00
Ali Mohammad Pur
144ef3eb9f WrapperGenerator: Don't emit code for imported enumerations 2022-02-17 19:55:27 +01:00
Ali Mohammad Pur
c38163494a WrapperGenerator: Add support for IDL mixin interfaces 2022-02-17 19:55:27 +01:00
Ali Mohammad Pur
e9c76d339b Meta: Split and refactor the WrapperGenerator a bit
The single 4000-line WrapperGenerator.cpp file was proving to be a pain
to hack, and was filled with spaghetti, split it into a bunch of files
to lessen the impact of the spaghetti.
Also refactor the whole parser to use a class instead of a giant
function with a million lambdas.
2022-02-17 19:55:27 +01:00