Commit graph

41747 commits

Author SHA1 Message Date
Marco Cutecchia
d8b54b7dd0 HackStudio: Open files in dedicated tabs
Previously when trying to open a file from the tree view the file
would open in the currently selected tab, substituting the file
we were previously reading.
This change makes it so that clicking on a file from the tree view
opens it in a new tab, or selects the tab containing that file if
it's already open in the selected editor group.
2022-10-06 11:53:23 +01:00
Andreas Kling
2ac385f4db CMake: Don't mess with absolute compile_ipc() source paths
If given an absolute path, compile_ipc() should just use it verbatim
instead of trying to be helpful.
2022-10-06 11:23:53 +02:00
Andreas Kling
b5681992e1 LibIPC: Allow overriding the use of deferred_invoke()
This will allow Ladybird to use IPC::Connection without having an
actively running Core::EventLoop.

The abstraction here is not great, and we should think of something
nicer, but we have to start somewhere.
2022-10-06 09:51:04 +02:00
Andreas Kling
f877782117 WebContent: Use Web::Platform::Timer instead of Core::Timer
This will allow WebContent to operate without a Core::EventLoop.
2022-10-06 09:51:04 +02:00
Andreas Kling
e75645bbf8 WebContent: Add ConnectionFromClient::fd() accessor 2022-10-06 09:51:04 +02:00
Andreas Kling
eb709ddd63 LibCore: Add fd() and notifier() accessors to Core::Stream::LocalSocket 2022-10-06 09:51:04 +02:00
Andreas Kling
35966cabe4 LibIPC: Remove platform-specific #ifdefs around FD passing in Connection
Let the LocalSocket class decide if FD passing is supported or not.
2022-10-06 09:51:04 +02:00
Andreas Kling
4d762fd3a6 Lagom: Add Build WebContentClient as part of Lagom's LibWebView
This will allow us to use it in Ladybird. :^)
2022-10-06 09:51:04 +02:00
Andreas Kling
ceccc2c163 LibWebView: Add abstract virtual base for WebView implementations
This patch adds WebView::ViewImplementation with all the
`notify_server_did_this_or_that()` functions from OOPWV.

This will allow us to share code between different web views, paving the
way for a Qt widget in Ladybird that can talk to a WebContent process.
2022-10-06 09:51:04 +02:00
Andreas Kling
d652794862 LibCore: Implement LocalSocket send_fd() and receive_fd() on Linux
We use a combination of SCM_RIGHTS and fcntl(FD_CLOEXEC) to implement
the equivalent functionality from SerenityOS.
2022-10-06 09:51:04 +02:00
Andreas Kling
ece1b7422f LibIPC: Allow giving Connection a separate socket for FD passing
Our IPC protocol currently relies on the behavior of recvfd() and
sendfd() on SerenityOS, which provide an out-of-band queue that can be
accessed independently of the in-band data stream.

To make LibIPC usable on other platforms, this patch adds a mechanism
where IPC::Connection can be given a dedicated socket for FD passing.
This gives us the same behavior as the syscalls on SerenityOS, without
having to change the protocol implementation.
2022-10-06 09:51:04 +02:00
Xexxa
3bb25ef227 Base: Adjust sizing of more emoji flags
🇦🇲 - U+1F1E6 U+1F1F2 FLAG: ARMENIA
🇦🇶 - U+1F1E6 U+1F1F6 FLAG: ANTARCTICA
🇦🇹 - U+1F1E6 U+1F1F9 FLAG: AUSTRIA
🇦🇺 - U+1F1E6 U+1F1FA FLAG: AUSTRALIA
🇦🇿 - U+1F1E6 U+1F1FF FLAG: AZERBAIJAN
🇧🇦 - U+1F1E7 U+1F1E6 FLAG: BOSNIA & HERZEGOVINA
🇧🇧 - U+1F1E7 U+1F1E7 FLAG: BARBADOS
🇧🇩 - U+1F1E7 U+1F1E9 FLAG: BANGLADESH
🇧🇬 - U+1F1E7 U+1F1EC FLAG: BULGARIA
🇧🇭 - U+1F1E7 U+1F1ED FLAG: BAHRAIN
🇧🇯 - U+1F1E7 U+1F1EF FLAG: BENIN
🇧🇴 - U+1F1E7 U+1F1F4 FLAG: BOLIVIA
🇧🇷 - U+1F1E7 U+1F1F7 FLAG: BRAZIL
🇧🇸 - U+1F1E7 U+1F1F8 FLAG: BAHAMAS
🇧🇹 - U+1F1E7 U+1F1F9 FLAG: BHUTAN
🇨🇫 - U+1F1E8 U+1F1EB FLAG: CENTRAL AFRICAN REPUBLIC
🇨🇲 - U+1F1E8 U+1F1F2 FLAG: CAMEROON
2022-10-05 16:09:31 -04:00
Linus Groh
1c12f5c31d LibWeb: Make Fetch::Infrastructure::{Request,Response} ref-counted
With the addition of the 'fetch params' struct, the single ownership
model we had so far falls apart completely.

Additionally, this works nicely for FilteredResponse's internal response
instead of risking a dangling reference.

Replacing the public constructor with a create() function also found a
few instances of a Request being stack-allocated!
2022-10-05 09:14:49 +01:00
Linus Groh
886ca9c7b6 LibWeb: Add missing Request::policy_container() getter and setter 2022-10-05 09:14:49 +01:00
Linus Groh
16d6c62193 LibWeb: Make Fetch::Infrastructure::Request::set_client() take a pointer 2022-10-05 09:14:49 +01:00
Linus Groh
72a752685f LibWeb: Add missing link to Fetch::Infrastructure::Response member 2022-10-05 09:14:49 +01:00
Linus Groh
7b50e96434 LibWeb: Add missing links to Fetch::Infrastructure::Request members 2022-10-05 09:14:49 +01:00
Linus Groh
32ad939e44 LibWeb: Rename HighResolutionTime/{CoarsenTime => TimeOrigin}.cpp/h
This is being used for more than just time coarsening now, so let's use
the spec's section title for the name.
2022-10-05 09:12:59 +01:00
Linus Groh
4ea6cc56be LibWeb: Move unsafe_shared_current_time() to HighResolutionTime
This doesn't belong on the EventLoop at all, as far as I can tell.
2022-10-05 09:12:59 +01:00
Linus Groh
ff9a80f54f LibWeb: Implement 'coarsened shared current time' 2022-10-05 09:12:59 +01:00
Linus Groh
5c4eb90d65 LibWeb: Add DOMHighResTimeStamp typedef 2022-10-05 09:12:59 +01:00
Linus Groh
398e44b27b LibWeb: Pass status code to ResourceLoader error callback when available 2022-10-05 09:12:59 +01:00
Linus Groh
25909dcc05 LibWeb: Prepare to run callback in host_enqueue_promise_job()
...and clean up afterwards, of course. Additionally to preparing to run
a script, we also prepare to run a callback here. This matches WebIDL's
invoke_callback() / call_user_object_operation() functions, and prevents
a crash in host_make_job_callback() when getting the incumbent settings
object.

Running the following JS no longer crashes after this change:

```js
new Promise((resolve) => {
    setTimeout(resolve, 0);
}).then(() => {
    return Promise.reject();
});
```

See further discussion/investigation here:
https://discord.com/channels/830522505605283862/830525031720943627/995019647214694511
https://discord.com/channels/830522505605283862/830525031720943627/1026824624358576158
https://discord.com/channels/830522505605283862/830525031720943627/1026922985581457458

Many thanks to Luke for doing the hard work here, tracking this down,
and suggesting the fix!

Co-authored-by: Luke Wilde <lukew@serenityos.org>
2022-10-05 09:12:59 +01:00
Nico Weber
2af028132a AK+Everywhere: Add AK_COMPILER_{GCC,CLANG} and use them most places
Doesn't use them in libc headers so that those don't have to pull in
AK/Platform.h.

AK_COMPILER_GCC is set _only_ for gcc, not for clang too. (__GNUC__ is
defined in clang builds as well.) Using AK_COMPILER_GCC simplifies
things some.

AK_COMPILER_CLANG isn't as much of a win, other than that it's
consistent with AK_COMPILER_GCC.
2022-10-04 23:35:07 +01:00
Nico Weber
ff4b912b7c LibGfx: Remove a workaround for clang before 11
This bug has long been fixed.
2022-10-04 23:35:07 +01:00
Andrew Kaster
636602a54e LibWeb: Implement <input type=file> behavior
This includes punting on the actual file picker implementation all the
way out to the PageClient. It's likely that some of the real details
should be implemented somewhere closer, like the BrowsingContext or the
Page, but we'll get there.

For now, this allows https://copy.sh/v86 to load the emulation of the
preselected images all the way until it hits a call to
URL.createObjectURL.
2022-10-04 22:05:14 +02:00
Andrew Kaster
ffab9fb44e LibWeb: Add FileList from the FileAPI spec 2022-10-04 22:05:14 +02:00
Andreas Kling
162e4179fc LibWeb: Implement a simple version of Element.scrollIntoView()
We parse the arguments that come in, but since we don't yet track
scrollable overflow, we can't do the full "scroll an element into view"
algorithm. For now, we just call out to the PageClient and ask it to
bring the nearest principal box into the visible viewport.
2022-10-04 21:46:56 +02:00
Andreas Kling
3ca44e2258 BindingsGenerator: Allow the word "inline" in IDL identifiers
This has to be treated carefully since it's a C++ keyword.
2022-10-04 21:30:58 +02:00
Andreas Kling
f5844b85ff LibWeb: Let FFC parent context "handle" sizing of child FFC container
When we have nested flexbox layouts within one another, and the child
context wants to call up to the parent context and ask for help with
dimensioning the child flex container, we now simply do nothing.

As far as I can tell, this works out just fine, since the child flex
container will already be dimensioned by the flex layout algorithm.
2022-10-04 21:30:58 +02:00
Andreas Kling
97ca45d9c6 LibWeb: Store HTML tag name token data as FlyString while parsing
This makes checking if a token is a specific tag O(1) instead of O(n).
2022-10-04 21:30:58 +02:00
Andreas Kling
d39f4edc99 LibWeb: Avoid a bunch of unnecessary copying in CSS::ComputedValues 2022-10-04 21:30:58 +02:00
Linus Groh
58b0edef7d LibWeb: Remove redundant JS::Value() calls in XMLHttpRequest::response() 2022-10-04 20:05:09 +01:00
Linus Groh
183462acfd LibWeb: Use Infra AO for JSON parsing in XMLHttpRequest::response() 2022-10-04 20:05:09 +01:00
Linus Groh
d2e9faf2da LibWeb: Run 'UTF-8 decode' in parse_json_bytes_to_javascript_value() 2022-10-04 20:05:09 +01:00
Linus Groh
0db55693a9 LibWeb: Fix ReadableStream's WEB_PLATFORM_OBJECT() class name 2022-10-04 20:05:09 +01:00
Timothy Flynn
08ce8cb996 Applications: Use title-case for group box titles in settings
Capitalization was quite inconsistent, even amongst single settings
applications. This aligns group box titles to all be title case.
2022-10-04 18:19:45 +01:00
Timothy Flynn
5d15fdd6e6 BrowserSettings: Remove overly verbose dbgln statement
This is a bit much, especially with 850+ filters.
2022-10-04 18:19:45 +01:00
Tobias Christiansen
4fdd916f26 LibGUI: Shade Weekends in a slightly different background color
Now, weekends can finally be displayed in the Calender Widget as they
are supposed to. They even update when the settings are changed!
2022-10-04 12:13:54 -04:00
Tobias Christiansen
170b8cad04 LibGUI: Teach Calendar about the new Config Items
Now the Calendar living in LibGUI knows about FirstDayOfWeekend and
WeekendLength.
2022-10-04 12:13:54 -04:00
Tobias Christiansen
eca559d65d CalendarSettings: Add Weekend-specific settings
In some calendars, weekends start on other days than saturday and can
also have different lengths than 2 days. This patch allows you to set
these values, however they don't do anything yet as Serenity's Calendar
doesn't care about Weekends at the moment.
2022-10-04 12:13:54 -04:00
Andreas Kling
2a0a274898 LibWeb: Identify as "Ladybird" instead of "Browser"
Here's a small step towards integrating Ladybird and Browser. We now
identify ourselves as "Ladybird" to websites.
2022-10-04 15:27:04 +02:00
Andreas Kling
c48931d15c LibWeb: Only calculate intrinsic size in the desired flex axis
Previously, FlexFormattingContext would calculate intrinsic sizes in
both axes simultaneously, despite only one being needed.

This patch reduces the amount of unnecessary work by only calculating
the requested intrinsic size.
2022-10-04 11:56:59 +02:00
Andreas Kling
4d84e349ae LibWeb: Recreate flex lines before calculating intrinsic cross size
This will allow us to do intrinsic cross sizing without depending on
intrinsic main sizing happening first.
2022-10-04 11:55:58 +02:00
Andreas Kling
181fc6cead LibWeb: Pack flex container from opposite end in *-reverse directions 2022-10-04 09:42:17 +02:00
Andreas Kling
b13a8706e1 LibWeb: Make intrinsic heights dependent on available width
After speaking with fantasai at CSSWG about this, it turns out I had
misunderstood intrinsic heights. I originally believed all intrinsic
sizes had to be computed with no influence from the surrounding context.

As it turns out, intrinsic heights *are* influenced by the available
width, since it's needed to determine where lines break.

The APIs for calculating min-content and max-content heights now take
the available width as inputs. This instantly improves layout in many
cases where we'd previously make things way too wide.
2022-10-03 23:49:23 +02:00
Andreas Kling
b4f9db84ca LibWeb: Add missing null check while dispatching mouseenter events 2022-10-03 23:49:23 +02:00
Andreas Kling
3408f7a3c5 LibWeb: Get rid of FormattingContext::run_intrinsic_sizing()
Now that we have AvailableSpace, it's actually quite convenient to
simply set up the available space and call run() with that directly.
2022-10-03 23:49:23 +02:00
Kenneth Myhra
1464ce6fbb LibC: Remove stubbed out xattr.h and xattr.cpp
Serenity does not support extended attributes (xattr) and the only port
that needed those were the GLib port. The GLib port has now been updated
to compiled without xattr support.
2022-10-03 22:48:56 +01:00
Kenneth Myhra
8989482293 Ports/glib: Do not flag support for extended attributes (xattr) 2022-10-03 22:48:56 +01:00