1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:48:10 +00:00
Commit graph

13140 commits

Author SHA1 Message Date
Timothy Flynn
995f3db384 LibWebView+WebConent: Add an IPC to get an element's absolute rect 2022-11-03 19:15:43 +00:00
Timothy Flynn
99fc94e138 LibJS: Delegate to NumberFormat for DurationFormat unit formatting
This is a normative change in the Intl.DurationFormat proposal. See:
12ba9df
2022-11-03 18:37:48 +00:00
Timothy Flynn
a5bf32018f LibJS+LibUnicode: Add "microsecond" and "nanosecond" as sanctioned units
This is a normative change in the ECMA-402 spec. See:
f627573
2022-11-03 18:37:48 +00:00
Timothy Flynn
8ff0d35386 LibJS: Format sanctioned units such that there is one unit per line
Much easier to manage and view diffs this way, rather than one large
single line. This will soon be the only method in this file, so there's
no concern over taking up too much vertical space here.
2022-11-03 18:37:48 +00:00
Andreas Kling
305cb8a5d1 LibWeb: Treat unresolvable percentage sizes as auto on replaced elements
For replaced elements with percentage width or height, we were treating
them as 0 instead of auto when their containing block had an indefinite
corresponding size.

This produced incorrect layouts in various cases, and although I can't
actually find something about this exact scenario in specs, the new
behavior does match other browsers.
2022-11-03 19:22:40 +01:00
Andreas Kling
db318aece0 LibWeb: Move should_treat_{width,height}_as_auto() to FormattingContext
These are not specific to BFC, so let's move them up to the super class
so that other layout classes can use them.
2022-11-03 19:22:40 +01:00
Andreas Kling
5fbe245406 LibWeb: Don't include object addresses in layout tree dumps
I've used this feature less than 3 times, and it's trivial to hack back
in if/when needed. Let's stop cluttering the layout tree dumps.
2022-11-03 18:52:53 +01:00
Nico Weber
daeaefad17 Everywhere: Clean up "the the" comment typos 2022-11-03 17:38:32 +00:00
Timothy Flynn
92f4f40198 LibJS: Rename the Intl Enumeration Available* AOs to AvailableCanonical*
This is an editorial change to the Intl Enumeration API proposal. See:
807b444

Note that this was followed by a normative change to actually ensure the
returned values are canonical:
075a6dc

But the values we return are already canonical.
2022-11-03 16:36:11 +00:00
Timothy Flynn
b10bbac061 LibXML+LibWeb: Store the XML document's original source
Similar to how we store an HTML document's original source. This allows
the source to be inspected with "View Source" in the Browser.
2022-11-03 14:52:16 +00:00
Timothy Flynn
e7412717b4 LibWeb: Make it obvious that DOM::Document makes a copy of its source 2022-11-03 14:52:16 +00:00
Timothy Flynn
f8cdfb8907 LibXML: Convert some tab characters to spaces 2022-11-03 14:52:16 +00:00
Timothy Flynn
82af1557dd LibWebView+WebContent: Add IPC to run the fragment serialization steps 2022-11-03 14:48:04 +00:00
Timothy Flynn
13b8eeff54 LibWeb: Fully implement the fragment serializing algorithm
Rather than assuming the node's node document is an HTML document,
handle XML documents as well.
2022-11-03 14:48:04 +00:00
Moustafa Raafat
939374a037 LibJS: Use the UnsignedBigInteger compare_to_double algorithm
This also avoids an unnecessary copy
2022-11-02 22:04:34 -06:00
Moustafa Raafat
54b8a2b094 LibCrypto: Add a way to compare UnsignedBigInteger with double
This patch also make SignedBigInteger::compare_to_double make use
of the new function.
2022-11-02 22:04:34 -06:00
Linus Groh
747ba2a88f Browser+LibWebView: Add WebDriver IPC plumbing for executing scripts 2022-11-02 23:46:30 +00:00
Linus Groh
b572a91a6f LibWeb+WebContent: Add WebDriver infrastructure for executing scripts
This cannot be done on the Browser or WebDriver ends, or via the
existing run_javascript() IPC endpoint, as we cannot transfer JS objects
through the IPC boundary (yet), only serialized JSON, so the individual
WebDriver steps around script execution need to run in the WebContent
process.
2022-11-02 23:46:30 +00:00
Andreas Kling
43888b848c LibWeb: Resolve unresolved CSS calc() values in StyleComputer
When mixing calc() and var(), we're forced to delay resolving them until
we're in StyleComputer. Previously we'd just skip over them.

This patch handles calc() in the same pass as attr(). We reparse the
calc() value after var() expansion, and then try to resolve it to a
constant value if possible. If it's not possible, we leave the calc()
where it is, and maybe layout can figure it out later.

Note that I've only implemented resolution to integer and percentage in
this commit. There are more things a calc() could resolve to, and we
should implement those as well.
2022-11-02 22:42:48 +01:00
Andreas Kling
8869dec5fd LibWeb: Add CSS::Parser helper for parsing a standalone "calc()" value 2022-11-02 22:42:48 +01:00
Andreas Kling
f14ad0e8c1 LibWeb: Add helper functions to create CSS parser tokens
These will be used when resolving calc() values in StyleComputer.
It's indeed strange that calc() resolves to tokens, but it's how the
engine currently handles those things. There is room for improvement.
2022-11-02 22:42:48 +01:00
Andreas Kling
ab9aa9da0d LibWeb: Do CSS var() expansion in a separate pass
By expanding all the var() values first, we allow var() to occur
anywhere, even as arguments to CSS functions.
2022-11-02 22:42:48 +01:00
Andreas Kling
767d632ab7 LibWeb: Don't panic on unsupported text-decoration-line values
Instead, just log a FIXME message and move on.
2022-11-02 22:42:48 +01:00
Andreas Kling
628baafefc LibWeb: Fix justify-content: center interaction with flex item margins
When centering flex items on the main axis, we can simply ignore margin
before the first item and after the last item.
2022-11-02 22:42:48 +01:00
Ali Mohammad Pur
922fa2e9d0 LibLine: Avoid crashing on a 0x0 terminal
Some terminals start with a 0x0 buffer, run the shell, then switch to
a normal buffer size; avoid crashing in this case.

Also downgrade the paging TODO to a FIXME, a slightly broken terminal is
okay if all you're doing is using unimplemented features such as putting
too much text into the terminal.
2022-11-03 00:01:42 +03:30
Timothy Flynn
d603585802 Browser+LibWebView: Add a Tab hook to take a screenshot 2022-11-02 17:55:37 +00:00
Timothy Flynn
0d5209cee6 LibGUI+WindowServer: Allow programatically minimizing windows
The backend methods in WindowServer already exist. This just adds the
IPC plumbing to connect those methods to GUI::Window.
2022-11-02 15:41:19 +00:00
Aliaksandr Kalenik
e4db71c88b LibWeb: Support translate3d 2022-11-02 11:04:23 +00:00
Aliaksandr Kalenik
f099e2aa12 LibWeb: Use more verbose input in CSS transform function generator 2022-11-02 11:04:23 +00:00
jack gleeson
4bf587811f PixelPaint+LibGfx: Allow resizing images and layers
This PR adds resize ability to PixelPaint as per issue 11862.
The previous behaviour was to always rescale the canvas when
resizing an image. This adds a checkbox to toggle between
rescaling, and resizing which blits the existing canvas to
the top left of the new, resized canvas.

As part of this, a new ScalingMode is added to
LibGfx - None.
2022-11-02 10:59:18 +00:00
MacDue
fdcc73d4b1 LibWeb: Paint conic-gradient()s
This is a first pass at painting conic-gradient()s, I've yet to try to
optimize this much, but I feel like you could do better than atan2
in a loop.
2022-11-01 23:07:05 +00:00
MacDue
49497044de LibWeb: Parse conic-gradient()s
This parses conic-gradient()s while also attempting to share the bulk
of the parsing code with linear-gradient()s. This is done by extracting
the <color-stop-list> parsing to a "fill in the blacks" generic
function. This is a little awkward but cuts down on a lot of copy
pasting of code.
2022-11-01 23:07:05 +00:00
MacDue
ee72dcd523 LibWeb: Parse CSS <position>s
This parses <position> according to the following grammer:

<position> = [
  [ left | center | right ] || [ top | center | bottom ]
|
  [ left | center | right | <length-percentage> ]
  [ top | center | bottom | <length-percentage> ]?
|
  [ [ left | right ] <length-percentage> ] &&
  [ [ top | bottom ] <length-percentage> ]
]

The code is a little hairy and simply tries each alternative in turn,
manually checking the possible orders. There may be a better way to
represent this.
2022-11-01 23:07:05 +00:00
MacDue
e568c93404 LibWeb: Add PositionValue class to represent CSS <position>s
This class represents a <position> and handles resolving it to a
Gfx::FloatPoint relative to some rectangle.

It can handle all forms of <position>:

- Two presets:
  left center
- A preset + a length percentage:
  10% bottom
- Or relative to some edges:
  right 20% bottom 30px
2022-11-01 23:07:05 +00:00
MacDue
067759c0e9 LibWeb: Add ConicGradientStyleValue
This commit adds a simple style value (which is an abstract image)
to represent conic-gradient()s.

This commit also starts to factor out some reusable parts of the
linear-gradient() style value for other gradient types.
2022-11-01 23:07:05 +00:00
Timothy Flynn
5eeb6bbee3 LibWeb: Define window.outerWidth and window.outerHeight 2022-11-01 21:16:50 +00:00
Timothy Flynn
8cc1997f33 LibWeb: Retrieve the last known window position for window.screenX/Y 2022-11-01 21:16:50 +00:00
Timothy Flynn
6aea60e6ee LibWeb+LibWebView+WebContent: Add IPC to receive window position/size
This information will have to come from the Browser application. This
adds IPCs to receive that information when it is available or changes.
2022-11-01 21:16:50 +00:00
Timothy Flynn
f7e747b68e LibGUI+WindowServer: Create and broadcast an event when a window moves
LibWeb's Window object will need to know the OS-level position and size
of the GUI::Window for e.g. screenX, screenY, outerWidth, outerHeight.
It will also need to know about changes to that data.
2022-11-01 21:16:50 +00:00
Linus Groh
216f68c566 LibWeb: Register PendingResponse with a Request to keep it alive
This was an oversight from when I converted PendingResponse and various
other classes from being ref-counted to GC-allocated last minute - no
one takes care to keep all of them alive. Some are on the stack, and
some might be captured in another PendingResponse's JS::SafeFunction,
but ultimately, we need a better solution.
Since a PendingResponse is *always* the result of someone having created
a Request, let's just let that keep a list of each PendingResponse that
has been created for it, and visit them until they are resolved. After
that, they can be GC'd with no complaints.
2022-11-01 20:14:12 +00:00
Timothy Flynn
948bd50197 LibSQL: Replace DownPointer copy constructor with move constructor
Avoids awkwardly const-casting the "other" DownPointer.
2022-11-01 14:52:59 +00:00
Timothy Flynn
4283109c13 LibSQL: Fix typo in debugging statement
Also put new lines between these statements as that was the only way I
saw the typo.
2022-11-01 14:52:59 +00:00
Timothy Flynn
3f8a4f69c6 LibSQL: Compute byte buffer offsets using size_t
Also compute specific offset indices rather than hard-coding them.
2022-11-01 14:52:59 +00:00
Timothy Flynn
99a713aa5b LibSQL: Port the backend SQL file to use Core::Stream
This allows surrounding IO operations with TRY, making the code much
easier to reason about. This also replaces surrounding dbgln_if
statements to use "{:hex-dump}" instead of individually writing out
bytes.
2022-11-01 14:52:59 +00:00
Tim Schumacher
ce2f1b845f Everywhere: Mark dependencies of most targets as PRIVATE
Otherwise, we end up propagating those dependencies into targets that
link against that library, which creates unnecessary link-time
dependencies.

Also included are changes to readd now missing dependencies to tools
that actually need them.
2022-11-01 14:49:09 +00:00
Tim Schumacher
678db534ff LibC: Properly implement stack protectors
The shared parts are now firmly compiled into LibC instead of being
defined as a static library and then being copied over manually.
The non-shared ("local") parts are kept as a static library that is
linked into each binary on demand.

This finally allows us to support linking with the -fstack-protector
flag, which now replaces the `ssp` target being linked into each binary
accidentally via CMake.
2022-11-01 14:49:09 +00:00
Tim Schumacher
7834e26ddb Everywhere: Explicitly link all binaries against the LibC target
Even though the toolchain implicitly links against -lc, it does not know
where it should get LibC from except for the sysroot. In the case of
Clang this causes it to pick up the LibC stub instead, which might be
slightly outdated and feature missing symbols.

This is currently not an issue that manifests because we pass through
the dependency on LibC and other libraries by accident, which causes
CMake to link against the LibC target (instead of just the library),
and thus points the linker at the build output directory.

Since we are looking to fix that in the upcoming commits, let's make
sure that everything will still be able to find the proper LibC first.
2022-11-01 14:49:09 +00:00
Tim Schumacher
39fca21e11 LibC: Link against the full LibSystem target
I'm not sure why this wasn't done to begin with, but let's see if this
resolves our "can't find libsystem.so while double-checking undefined
symbols" issues.
2022-11-01 14:49:09 +00:00
Tim Schumacher
ac40197047 LibCrypt: Define it as a normal library
LibCrypt has no need for being -nostdlib, especially since we just link
in LibC manually anyways.
2022-11-01 14:49:09 +00:00
Timothy Flynn
4686989582 LibJS: Map DurationFormat's list style to "short" when it is "digital"
This is a normative change in the Intl.DurationFormat proposal. See:
7495e32
2022-11-01 14:33:07 +00:00