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

10312 commits

Author SHA1 Message Date
Sergey Bugaev
89004a3a40 LibCore: Make sure to disable notifiers when closing a socket
RefPtr<Notifier> doesn't work quite like it appears to, since the notifier
is also a "child" of the socket, in Core::Object sense. Thus we have to both
remove it from the parent (socket) and drop the additional RefPtr<Notifier> for
it to actually go away.

A proper fix for this would be to untangle parent-child relashionship from
refcounting and inspectability.

This fixes use-after-close of client file descriptors in IPC servers.
2020-06-08 13:58:32 +02:00
Sergey Bugaev
bb19eb8f23 IPCCompiler: Properly handle stream read errors
If we exhaust the buffer stream, the reads appear to succeed, but the stream
itself panics when we later attempt to drop it. To prevent it, we check for
errors explicitly.
2020-06-08 13:58:32 +02:00
Sergey Bugaev
fc481552f5 LibIPC+LibGfx+IPCCompiler: Drop some unused includes 2020-06-08 13:58:32 +02:00
Andreas Kling
affc479e83 LibJS+LibWeb: Remove a bunch of calls to Interpreter::global_object()
Objects should get the GlobalObject from themselves instead. However,
it's not yet available during construction so this only switches code
that happens after construction.

To support multiple global objects, Interpreter needs to stop holding
on to "the" global object and let each object graph own their global.
2020-06-08 12:25:45 +02:00
Andreas Kling
ff8bb962b6 LibJS: Always keep a reference to the global object in Shape
We need to move towards supporting multiple global objects, which will
be a large refactoring. To keep it manageable, let's do it in steps,
starting with giving Object a way to find the GlobalObject it lives
inside by asking its Shape for it.
2020-06-08 12:15:58 +02:00
Andreas Kling
10aebabf0b LibJS: BigInts and Symbols values are cells and the GC needs this info
Make Value::is_cell() return true for BigInts and Symbols. This makes
all the tests pass when running run-tests.sh -g (GC after every alloc.)
2020-06-08 12:08:51 +02:00
Matthew Olsson
4e33fbdb67 LibJS: Add interpreter exception checks 2020-06-08 09:57:29 +02:00
Hüseyin ASLITÜRK
f306ddb78b Userland: Remove keymap app from system
We have new KeyboardSettings application and it supports both GUI and CLI.
2020-06-08 09:28:18 +02:00
Hüseyin ASLITÜRK
ddeb0ab1ad Applications: Add new KeyboardSettings application
GUI application to manage Keyboard settings.
2020-06-08 09:28:18 +02:00
Hüseyin ASLITÜRK
57a99015a1 Base: Add Keyboard application icons 2020-06-08 09:28:18 +02:00
Hüseyin ASLITÜRK
eba285bdb8 Base: Move DisplaySettings app to Settings menu 2020-06-08 09:28:18 +02:00
AnotherTest
0fe3b0dbaf functrace: Output colors only when stdout is a tty 2020-06-08 09:27:51 +02:00
AnotherTest
2714bba3f0 Shell: Highlight redirections 2020-06-08 09:27:51 +02:00
AnotherTest
07c070745f ls: Emit plain text when output is not a tty 2020-06-08 09:27:51 +02:00
Matthew Olsson
bc1c556755 LibJS: Move regex logic to main Lexer if statement
This prevents a regex such as /=/ from lexing into TokenType::SlashEquals,
preventing the regex logic from working.
2020-06-08 09:18:27 +02:00
Matthew Olsson
cc7462daeb LibJS: Properly consume escaped backslash in regex literal 2020-06-08 09:18:27 +02:00
AnotherTest
492df51e70 LibLine: Correctly handle line content overflow when on last line
Fixes #2525
2020-06-07 23:54:21 +02:00
AnotherTest
aa3e440a58 LibLine: Use more descriptive names for row/column
The names x and y caused confusion because of their typical use as
horiz/vert.
2020-06-07 23:54:21 +02:00
Andreas Kling
9b17bf3dcd LibWeb: Use HTML::TagNames globals in the new HTML parser 2020-06-07 23:53:16 +02:00
Andreas Kling
992697d99f LibWeb: Add HTML::TagNames namespace for global tag name FlyStrings
Instead of "iframe", we can now say HTML::TagNames::iframe and avoid
a FlyString lookup.
2020-06-07 23:27:03 +02:00
Andreas Kling
10851d87a2 LibWeb: Add (stub) HTMLTable{,Cell,Row}Element C++ classes
We'll need a place to implement the various presentational attributes
for table parts, and more stuff.
2020-06-07 23:10:45 +02:00
Andreas Kling
3654710c41 LibIPC+Services: Support URL as a native IPC type 2020-06-07 22:55:33 +02:00
Andreas Kling
b81b2a85c4 LibGUI: Don't scroll cursor into view while reflows are deferred
We don't have up-to-date visual line rects until after reflow, and we
already do a "scroll cursor into view" when deferral ends anyway.

Fixes #2524.
2020-06-07 21:05:05 +02:00
Andreas Kling
86eeac86a4 AK: Add basic percent encoder/decoder (urlencode and urldecode) 2020-06-07 21:05:05 +02:00
Andreas Kling
83ee76a53e AK: Add StringView::{begin,end} so we can range-for over StringViews 2020-06-07 21:05:05 +02:00
Matthew Olsson
1fadde2483 LibJS: Fix big int division lexing as UnterminatedRegexLiteral 2020-06-07 20:05:16 +02:00
Linus Groh
0ff9d7e189 LibJS: Add BigInt 2020-06-07 19:29:40 +02:00
AnotherTest
40829b849a Meta: Run Crypto tests in CI
We skip the tests that are not self-contained (TLS) to avoid adding
extra variables to the tests.
2020-06-07 19:29:40 +02:00
AnotherTest
a3ff4ff8a1 test-crypto: Return 1 if any test failed 2020-06-07 19:29:40 +02:00
AnotherTest
02c53fd1f9 LibCrypto: Add bitwise operations (and/or/xor) 2020-06-07 19:29:40 +02:00
Linus Groh
fbb1d9afe5 LibCrypto: Make ModularFunctions.h compile as part of Lagom
Compiler was complaining about two ambiguous overloads.

Also make some functions "inline" to fix warnings about unused
functions.
2020-06-07 19:29:40 +02:00
Linus Groh
75b4cc13a0 LibCrypto: Fix to_base10() for zero-value BigIntegers
All the magic is happening in a "while != 0" loop, so we ended up with
an empty string for zero-value BigIntegers. Now we just check that
upfront and return early.
2020-06-07 19:29:40 +02:00
Linus Groh
5b88aa8e96 LibJS: Move Value::as_accessor() to Value.h 2020-06-07 19:29:40 +02:00
Linus Groh
5a983c238b LibJS: Use switch/case for Value::to_{string{_w/o_side_effects},boolean}
This makes them a bit more compact and improves consistency as
to_boolean() and to_number() already use this style as well.

Also re-order the types to match the table in the spec document.
2020-06-07 19:29:40 +02:00
Linus Groh
9f399f7341 LibJS: Remove reduntant set_prototype() calls
If we're inheriting from Object() we already call its constructor which
sets the prototype - no need to do it again.
2020-06-07 19:29:40 +02:00
Andreas Kling
1d94ca7cfc LibWeb: Fix codepoint_from_entity() never returning an error
If we don't find a matching entity, return an empty Optional.
2020-06-07 19:13:56 +02:00
Andreas Kling
ec83555b87 AK: Don't try to complete relative data: URLs 2020-06-07 19:09:03 +02:00
Andreas Kling
ab4c03ce2d LibWeb: Fix tokenizer swallowing an extra token after a named entity 2020-06-07 19:09:03 +02:00
Andreas Kling
767daf1c12 LibWeb: Unbreak <a title> tooltips in the main frame
The main frame doesn't have a host element, so we can't go trying to
offset things by the host element's layout rect.
2020-06-07 19:09:03 +02:00
Matthew Olsson
61ac1d3ffa LibJS: Lex and parse regex literals, add RegExp objects
This adds regex parsing/lexing, as well as a relatively empty
RegExpObject. The purpose of this patch is to allow the engine to not
get hung up on parsing regexes. This will aid in finding new syntax
errors (say, from google or twitter) without having to replace all of
their regexes first!
2020-06-07 19:06:55 +02:00
Andreas Kling
984a6ff97b LibGUI: Fix broken clip rect when scrolling a TextEditor 2020-06-07 18:02:43 +02:00
Andreas Kling
731685468a LibWeb: Start fleshing out support for relative CSS units
This patch introduces support for more than just "absolute px" units in
our Length class. It now also supports "em" and "rem", which are units
relative to the font-size of the current layout node and the <html>
element's layout node respectively.
2020-06-07 17:55:46 +02:00
Andreas Kling
d93bf78346 LibWeb: Fix broken paint invalidation after subframe changes
Now that PageView actually respects the invalidation rect provided by
the layout system, it turns out we were invalidating too little.

Unfortunately, this is not really fixable until the initial containing
block starts having the right size (same as viewport), but that will
require a bunch of work to make overflow work again. So it's a FIXME
for now, and we'll return to this.
2020-06-07 17:12:42 +02:00
Andreas Kling
3ae3729b4e LibWeb: Let subframes propagate paint invalidations via host element
When a paint invalidation occurs inside a subframe, it bubbles up to
Frame::set_needs_display(). From there, we call PageView if this is
the main frame, or otherwise invalidate the subframe host element.
2020-06-07 14:56:29 +02:00
Andreas Kling
59f9b32a44 LibWeb: Remove unused Document::on_layout_updated hook 2020-06-07 14:47:33 +02:00
Andreas Kling
747b21782e LibWeb: Open subframe links inside the subframe itself
We now only delegate to the Web::PageView embedded when clicking links
in the main frame. Links in subframes are handled internally.
2020-06-07 14:45:59 +02:00
Andreas Kling
d1852b4547 LibWeb: Add per-Frame EventHandler, handle mouse events recursively
We now handle mouse events by recursing into subframes. This makes
links, tooltips, etc, work inside <iframe> content.
2020-06-07 14:40:38 +02:00
Andreas Kling
896db187e5 LibWeb: Move Frame.{cpp,h} into a new Frame/ directory 2020-06-07 10:14:41 +02:00
Andreas Kling
5e9d1b2165 LibWeb: Whine in debug log instead of asserting on partial layout FIXME
We don't support incremental relayout of subtrees (only single nodes)
but let's not crash the browser just because this happens. We can keep
the browser up and just complain in the debug log instead.
2020-06-06 22:15:17 +02:00
Matthew Olsson
39ad42defd LibJS: Add Proxy objects
Includes all traps except the following: [[Call]], [[Construct]],
[[OwnPropertyKeys]].

An important implication of this commit is that any call to any virtual
Object method has the potential to throw an exception. These methods
were not checked in this commit -- a future commit will have to protect
these various method calls throughout the codebase.
2020-06-06 22:13:01 +02:00