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

16945 commits

Author SHA1 Message Date
Luke Wilde
31b507afbf LibWeb: Introduce Performance Timeline and its Performance functions 2023-03-23 21:00:43 +00:00
Luke Wilde
4c3f1481ea LibWeb: Remove FIXME for existing [Default] object toJSON()functions 2023-03-23 21:00:43 +00:00
Luke Wilde
3f7fdfa807 LibIDL: Add Type::is_json which says if the type is convertible to JSON 2023-03-23 21:00:43 +00:00
Tim Ledbetter
d1a964a43b LibThreading: Resolve BackgroundAction error callback use-after-free
This change ensures that a reference to the BackgroundAction is held
until after the error callback has executed on the event loop.

This fixes an intermittent crash in Assistant :^)
2023-03-23 21:05:12 +01:00
Luke Wilde
ddec4cd7f2 LibWeb: Create the correct error objects in XHR::handle_errors
Aborts and network errors were accidentally creating TimeoutError
exceptions instead of AbortError and NetworkError respectively.
2023-03-23 20:01:38 +01:00
Hendiadyoin1
b76d3f287f LibJS: Make yy{/,-}mm{/,-}dd hh:mm test timezone independent
Otherwise this will fail in non UTC timezones.
2023-03-23 13:33:03 -04:00
Timothy Flynn
6d49eab8a6 LibJS+LibTimeZone: Explicitly canonicalize "GMT" to "UTC"
This is a normative change in the ECMA-402 spec. See:
50eb413

Note that this canonicalization already occurred. As the above commit
alludes to, we parse the rearguard format of the TZDB, so GMT is already
an alias to Etc/GMT. But it doesn't hurt to be explicit here.
2023-03-23 15:30:21 +00:00
Timothy Flynn
c5c6065611 LibJS: Add missing internal slots to creation of Intl.DateTimeFormat
This is an editorial change in the ECMA-402 spec. See:
f6c0c41
2023-03-23 15:30:21 +00:00
Timothy Flynn
a13b6a3cb0 LibJS: Remove ! from AO calls that can't throw from Intl.DateTimeFormat
This is an editorial change in the ECMA-402 spec. See:
8f9080e
2023-03-23 15:30:21 +00:00
Timothy Flynn
b74786d3c3 LibJS: Explicitly provide all GetIterator arguments from Intl.ListFormat
This is an editorial change in the ECMA-402 spec. See:
13895c8
2023-03-23 15:30:21 +00:00
Luke Wilde
f0d0459c3e LibJS: Support the yy{/,-}mm{/,-}dd hh:mm format for Date
Required by a UK news website for loading a Piano configuration.
This is presumably configuration for piano.io Analytics.
2023-03-23 13:38:08 +01:00
Srikavin Ramkumar
5c8be3b072 LibWeb: Add missing constructors to HTMLElement IDLs 2023-03-23 13:37:40 +01:00
Srikavin Ramkumar
6bc6ea8e97 LibIDL: Parse extended attributes for constructors 2023-03-23 13:37:40 +01:00
MacDue
cfc9966654 LibWeb: Add scaleable checkboxes (with theme/accent-color support)
This reworks checkboxes to use a tiny 16x16 SDF for the tick icon along
with an antialiased background/border.

The checkbox now works well at any scale, shows the various checkbox
state (enabled, disabled, being pressed), and supports using the colors
from the active system theme and/or the accent-color property.
2023-03-23 08:27:51 +00:00
MacDue
77456d1d0b LibGfx: Implement simple signed distance field rendering
This is mostly a simple grayscale bilinear scale, with an extra step
of computing the distance and alpha with a little smoothing. This
can be used to paint more scalable UI elements/icons from rather
small distance fields. A tiny 16x16 SDF seems to do a decent job
for simple icons.
2023-03-23 08:27:51 +00:00
MacDue
429d7b002b LibGfx: Add a simple GrayscaleBitmap class
This is very similar to the existing CharacterBitmap class but instead
intended for small static grayscale bitmaps (such as signed distance
fields).
2023-03-23 08:27:51 +00:00
MacDue
87b8a36e56 LibWeb: Parse and plumb the accent-color CSS property 2023-03-23 08:27:51 +00:00
Andreas Kling
d005b1ad1b LibWeb: Support loading file:// URLs via fetch (through ResourceLoader)
This builds on the existing ad-hoc ResourceLoader code for HTTP fetches
which works for files as well.

This also includes a test that checks that stylesheets loaded with the
"file" URL scheme actually work.
2023-03-22 23:34:32 +00:00
Andreas Kling
652676fdc1 LibWeb: Make ResourceLoader insert a Content-Type header for file://
We make a guess using the MIME type guessing API in LibCore. This frees
clients of this code from having to do the guessing.
2023-03-22 23:34:32 +00:00
huttongrabiel
6a5c561a41 FileSystemAccessServer: Implement FileTypeFilter to open_file()
This is the same functionality as in FilePicker. It allows the
specification of what file types are allowed.
2023-03-22 22:33:19 +00:00
huttongrabiel
106ad6bb13 LibGUI: Add IPC encode and decode for FileTypeFilter
Allows the use of GUI::FileTypeFilter in IPC.
2023-03-22 22:33:19 +00:00
Luke Wilde
95da08e035 LibWeb: Add workaround to restore cross-origin stylesheet functionality
CORS cross-origin responses in the No CORS request mode provide an
opaque filtered response, which is the original response with certain
attributes removed/changed.

The relevant effect it has is setting the body to `null`, which means
`body_bytes` has `Empty` in the process_response_consume_body callback.
This effectively disables cross-origin linked resources
(e.g. stylesheets).

However, the web actually depends on this, especially for stylesheets
retrieved from a cross-origin CDN. For example, Shopify websites
request stylesheets from `cdn.shopify.com` and Substack websites
request stylesheets from `substackcdn.com`.

This makes this a specification bug, as this code was written from it.

The workaround is to read the actual body from the unfiltered response
and then call `process_linked_resource` from there.

This _should_ be safe to do, as linked resource fetches do not include
credentials (i.e. cookies and the Authorization header), so it cannot
provide personalized responses.
2023-03-22 22:26:16 +00:00
Sam Atkins
fcd4e68959 LibWeb: Use actual token representations when parsing CSS <urange>
nasty_hacks--; // :^)
2023-03-22 19:45:40 +01:00
Sam Atkins
c138845013 LibWeb: Store the original representation of CSS tokens
This is required for the `<urange>` type, and custom properties, to work
correctly, as both need to know exactly what the original text was.
2023-03-22 19:45:40 +01:00
Sam Atkins
a3d6d9db37 LibWeb: Correct logic when consuming a CSS number in scientific notation
Before, we were classifying the number as a "number" type if it had an
"E", even if that was not followed by an exponent.
2023-03-22 19:45:40 +01:00
Cameron Youell
a8cd6c396b LibFileSystem: Fix leak in read_path 2023-03-22 14:04:24 +00:00
Andreas Kling
96f8cf2971 LibWeb: Consider inline content (line boxes) when measuring overflow
Fixes #13628
2023-03-22 12:56:44 +01:00
Lucas CHOLLET
832478ad0c LibFileSystemAccessClient: Don't make illegal operation on files
`handle_prompt_end` is calling `is_device` and `is_directory` on the
path chosen by the user. However, this path is not necessarily unveiled.
Meaning that it the both functions results in an illegal operation.

This is a regression introduced with the usage of LibFileSystem in
1d24f394. This patch, revert the behavior at its previous state, i.e.
calling both functions with the fd provided by the FSAS.
2023-03-22 09:06:38 +01:00
Julian Offenhäuser
3400779047 LibPDF: Pass the right point width to the font loader in TrueTypeFont 2023-03-22 09:04:00 +01:00
Julian Offenhäuser
fd78875662 LibPDF: Fix navigate_to_before_eof_marker() for PDFs not ending in EOL
The way this was factored before, we would miss the %%EOF marker if it
didn't have a valid end-of-line sequence after it.
2023-03-22 09:04:00 +01:00
Julian Offenhäuser
fca9da4191 LibPDF: Don't consume anything other than EOL in Reader::consume_eol()
This was previously a slightly confusing API. Even when there was no EOL
marker at the current location, we would still consume one byte.
It will now consume either EOL or nothing at all.
2023-03-22 09:04:00 +01:00
Julian Offenhäuser
93062e2b78 LibPDF: Be more cautious of errors when looking for linearization dict
We would previously assume that, following the header, there must be a
valid PDF object that could be a linearization dict.

However, if the file is not linearized, this is not necessarily true.
We now try to detect if there even is an object, and don't treat
parsing errors as fatal.
2023-03-22 09:04:00 +01:00
Julian Offenhäuser
6c0f7d83bb LibPDF: Don't treat a broken document header as a fatal error
As the current goal is to make our best effort loading documents, we
might as well ignore a broken header and power through, giving the user
a warning.
2023-03-22 09:04:00 +01:00
Lucas CHOLLET
f66de973ff LibGfx/JPEG: Replace a FIXME with some explanations
Calling the `ycbcr_to_rgb` function still looks unsuitable for this
usage, but it does the job correctly.
2023-03-22 08:57:51 +01:00
Lucas CHOLLET
a9cc61224d LibGUI: Resolve use-after-free error
Objects taken by reference are no longer valid when used in
`deferred_invoke`. Explicitly copying them solve the issue.
2023-03-22 08:52:48 +01:00
Timothy Flynn
2a410f8985 LibWeb: Change "popup"-related storage types to named enums 2023-03-22 00:12:53 +01:00
Timothy Flynn
bff109ee50 LibWeb: Change the "noreferrer" storage type to a named enum 2023-03-22 00:12:53 +01:00
Timothy Flynn
1b811191cd LibWeb+WebContent: Change the "noopener" storage type to a named enum 2023-03-22 00:12:53 +01:00
Lucas CHOLLET
496b7ffb2b LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
Cameron Youell
752f06f228 LibFileSystem: Move TempFile from LibCore to LibFileSystem
As suggested in commit de18485
2023-03-21 19:03:21 +00:00
Cameron Youell
492e5c3c14 LibCore: Remove all unused DeprecatedFile functions 2023-03-21 19:03:21 +00:00
Cameron Youell
1d24f394c6 Everywhere: Use LibFileSystem where trivial 2023-03-21 19:03:21 +00:00
Cameron Youell
edab0cbf41 LibFileSystem: Create LibFileSystem
Copy over updated `DeprecatedFile` functions
2023-03-21 19:03:21 +00:00
Cameron Youell
e78be03b49 LibCore: Add ErrorOr wrapper for utimensat 2023-03-21 19:03:21 +00:00
LukasACH
b5f0f94757 LibGfx/OpenType: Do not preemptively return while searching for kerning
The kerning value for a particular glyph may not be in
the first table. Continue until we either run out of tables or
we find an applicable value.
2023-03-21 19:11:53 +01:00
LukasACH
b6cfacfd9f LibGfx/OpenType: Get size of ValueRecord from PairPos valueFormat field
The stored ValueRecord in the font file only contains the fields
specified in the valueFormat field of the PairPosFormat1 table.
This means we need to construct the ValueRecord dynamically at runtime
and cannot bit_cast it to a struct.
2023-03-21 19:11:53 +01:00
LukasACH
7eb5fa38c4 LibGfx/OpenType: Move function read_value_record, add argument stream
read_value_record(u16 value_format, FixedMemoryStream& stream) takes
a bitmask value_format that describes the available fields of
the ValueRecord and a FixedMemoryStream at the location of the
next ValueRecord. It then advances the stream and returns a complete
ValueRecord.
2023-03-21 19:11:53 +01:00
Timothy Flynn
24459a44b0 LibJS: Ensure Date tests can pass in any time zone by testing UTC values
When we create a Date object from a timestamp, or set its value by way
of Date.prototype.setTime, the timestamp is interpreted as UTC. Change
test expecatations against such instances to use UTC as well.
2023-03-21 18:05:22 +00:00
Timothy Flynn
8a27180fb8 LibCore: Set tm_isdst to a negative value before invoking mktime
If it is default-initialized to 0, mktime will assume that DST is not in
effect for the specified time. Setting it to a negative value instructs
mktime to determine for itself whether DST is in effect.
2023-03-21 18:05:22 +00:00
implicitfield
a3d43b067a LibWeb: Parse CSS identifiers case-insensitively 2023-03-21 16:07:44 +00:00