Commit Graph

41358 Commits

Author SHA1 Message Date
Andreas Kling
ba065faa54 LibWeb: Remove unused capture in queue_a_microtask() 2022-09-24 13:48:38 +02:00
Andreas Kling
a8e1599ae1 LibWeb: Use automatic_content_height() in flex item internal layouts 2022-09-24 13:47:58 +02:00
Andreas Kling
5656173e00 LibWeb: Use automatic_content_height() when computing intrinsic heights 2022-09-24 13:47:17 +02:00
Andreas Kling
62974160da LibWeb: Add FormattingContext::automatic_content_height()
This function should return the automatic height of the formatting
context's root box.

Until now, we've been relying on some magical handshakes between parent
and child context, when negotiating the height of child context root
boxes. This is a step towards something more reasonable.
2022-09-24 13:41:08 +02:00
Andreas Kling
b52165c5d7 LibWeb+LibGfx: Move the blit image through 2D transfrom to Gfx::Painter
Even though this code is obnoxiously slow, it still belongs in LibGfx
and should not be hidden away in LibWeb's CanvasRenderingContext2D.
2022-09-24 13:00:53 +02:00
Andreas Kling
37ea6de772 LibWeb: Remove now-unnecessary JS::Handles in microtask capture lists 2022-09-24 12:23:29 +02:00
Andreas Kling
874e64d664 LibWeb: Make queue_an_element_task() use JS::SafeFunction 2022-09-24 12:23:29 +02:00
Andreas Kling
2ccb9bef49 LibWeb: Remove now-unnecessary JS::Handles in HTML task capture lists
JS::SafeFunction will protect anything captures for HTML tasks now.
2022-09-24 12:23:29 +02:00
Andreas Kling
d505192014 LibWeb: Use JS::SafeFunction in the HTML task queues
This means that HTML tasks automatically protect anything in their
capture lists, and we no longer need to jump through hoops with
JS::Handle etc.
2022-09-24 12:23:29 +02:00
Andreas Kling
131c3f50de LibJS: Add JS::SafeFunction, like Function but protects captures from GC
SafeFunction automatically registers its closure memory area in a place
where the JS garbage collector can find it.

This means that you can capture JS::Value and arbitrary pointers into
the GC heap in closures, as long as you're using a SafeFunction, and the
GC will not zap those values!

There's probably some performance impact from this, and there's a lot of
things that could be nicer/smarter about it, but let's build something
that ensures safety first, and we can worry about performance later. :^)
2022-09-24 12:23:29 +02:00
Xexxa
585072fce3 Base: Add more emoji
🏃‍♂️ - U+1F3C3 U+200D U+2642 MAN RUNNING
🏃‍♀️ - U+1F3C3 U+200D U+2640 WOMAN RUNNING
🤸‍♂️ - U+1F938 U+200D U+2642 MAN CARTWHEELING
🤸‍♀️ - U+1F938 U+200D U+2640 WOMAN CARTWHEELING
🫎 - U+1FACE MOOSE
🍛 - U+1F35B CURRY RICE
🛹 - U+1F6F9 SKATEBOARD
🎰 - U+1F3B0 SLOT MACHINE
👙 - U+1F459 BIKINI
📶 - U+1F4F6 ANTENNA BARS
🛜 - U+1F6DC WIRELESS
🇱🇮 - U+1F1F1 U+1F1EE FLAG: LIECHTENSTEIN
🇲🇷 - U+1F1F2 U+1F1F7 FLAG: MAURITANIA
🇳🇮 - U+1F1F3 U+1F1EE FLAG: NICARAGUA
🇵🇫 - U+1F1F5 U+1F1EB FLAG: FRENCH POLYNESIA
2022-09-24 08:39:48 +01:00
MacDue
f5052e5017 LibWeb: Don't trigger page_did_layout() on non-active documents
PageHost assumes page_did_layout() to be called when the layout
of the active document changes, however, it seems that sometimes
the layout can change on another document before the layout of
the active document has been calculated. This leads to a VERIFY()
being hit.

This commit now makes it so page_did_layout() is only called when
the document is the active document.

Fixes #15328
2022-09-24 00:38:10 +02:00
Xexxa
29260d1480 Base: Add more emoji
🦒 - U+1F992 GIRAFFE
🦚 - U+1F99A PEACOCK
🌷 - U+1F337 TULIP
♠️ - U+2660 SPADE SUIT
♥️ - U+2665 HEART SUIT
♦️ - U+2666 DIAMOND SUIT
♣️ - U+2663 CLUB SUIT
👗 - U+1F457 DRESS
🇭🇰 - U+1F1ED U+1F1F0 FLAG: HONG KONG SAR CHINA
2022-09-23 22:35:10 +01:00
Xexxa
d3cf06deba Base: Adjust size of more emoji flags
🇦🇴 - U+1F1E6 U+1F1F4 FLAG: ANGOLA
🇦🇼 - U+1F1E6 U+1F1FC FLAG: ARUBA
🇦🇽 - U+1F1E6 U+1F1FD FLAG: ÅLAND ISLANDS
🇧🇪 - U+1F1E7 U+1F1EA FLAG: BELGIUM
🇧🇫 - U+1F1E7 U+1F1EB FLAG: BURKINA FASO
🇧🇮 - U+1F1E7 U+1F1EE FLAG: BURUNDI
🇧🇻 - U+1F1E7 U+1F1FB FLAG: BOUVET ISLAND
🇧🇼 - U+1F1E7 U+1F1FC FLAG: BOTSWANA
🇨🇩 - U+1F1E8 U+1F1E9 FLAG: CONGO - KINSHASA
🇨🇬 - U+1F1E8 U+1F1EC FLAG: CONGO - BRAZZAVILLE
🇨🇭 - U+1F1E8 U+1F1ED FLAG: SWITZERLAND
🇨🇮 - U+1F1E8 U+1F1EE FLAG: CÔTE D’IVOIRE
🇪🇭 - U+1F1EA U+1F1ED FLAG: WESTERN SAHARA
🇫🇴 - U+1F1EB U+1F1F4 FLAG: FAROE ISLANDS
🇮🇶 - U+1F1EE U+1F1F6 FLAG: IRAQ
🇯🇴 - U+1F1EF U+1F1F4 FLAG: JORDAN
🇰🇿 - U+1F1F0 U+1F1FF FLAG: KAZAKHSTAN
🇱🇦 - U+1F1F1 U+1F1E6 FLAG: LAOS
🇱🇧 - U+1F1F1 U+1F1E7 FLAG: LEBANON
🇱🇨 - U+1F1F1 U+1F1E8 FLAG: ST. LUCIA
🇱🇷 - U+1F1F1 U+1F1F7 FLAG: LIBERIA
🇲🇿 - U+1F1F2 U+1F1FF FLAG: MOZAMBIQUE
🇸🇩 - U+1F1F8 U+1F1E9 FLAG: SUDAN
🇸🇳 - U+1F1F8 U+1F1F3 FLAG: SENEGAL
🇸🇹 - U+1F1F8 U+1F1F9 FLAG: SÃO TOMÉ & PRÍNCIPE
🇹🇱 - U+1F1F9 U+1F1F1 FLAG: TIMOR-LESTE
🇹🇹 - U+1F1F9 U+1F1F9 FLAG: TRINIDAD & TOBAGO
🇻🇳 - U+1F1FB U+1F1F3 FLAG: VIETNAM
2022-09-23 22:35:10 +01:00
Luke Wilde
7b8a6b8e7a LibWeb: Set HTMLParser::m_scripting_enabled as according to the spec
This allows <noscript> elements to display their content as proper HTML
instead of raw text when scripting is disabled.
2022-09-23 22:25:09 +01:00
Luke Wilde
dfe57543a4 LibWeb: Keep message alive in postMessage task callback lambda
Tasks can run at any time in the future and GC can run in the time
between postMessage and running the task, meaning the message can be
reaped if we don't keep a handle to it.

Fixes Google Syndication ads crashing 100% of the time on rpcs3.net
2022-09-23 17:23:55 +01:00
Liav A
f46cc90f82 Documentation: Add a document about the Kernel IOWindow concept 2022-09-23 17:22:15 +01:00
Liav A
05ba034000 Kernel: Introduce the IOWindow class
This class is intended to replace all IOAddress usages in the Kernel
codebase altogether. The idea is to ensure IO can be done in
arch-specific manner that is determined mostly in compile-time, but to
still be able to use most of the Kernel code in non-x86 builds. Specific
devices that rely on x86-specific IO instructions are already placed in
the Arch/x86 directory and are omitted for non-x86 builds.

The reason this works so well is the fact that x86 IO space acts in a
similar fashion to the traditional memory space being available in most
CPU architectures - the x86 IO space is essentially just an array of
bytes like the physical memory address space, but requires x86 IO
instructions to load and store data. Therefore, many devices allow host
software to interact with the hardware registers in both ways, with a
noticeable trend even in the modern x86 hardware to move away from the
old x86 IO space to exclusively using memory-mapped IO.

Therefore, the IOWindow class encapsulates both methods for x86 builds.
The idea is to allow PCI devices to be used in either way in x86 builds,
so when trying to map an IOWindow on a PCI BAR, the Kernel will try to
find the proper method being declared with the PCI BAR flags.
For old PCI hardware on non-x86 builds this might turn into a problem as
we can't use port mapped IO, so the Kernel will gracefully fail with
ENOTSUP error code if that's the case, as there's really nothing we can
do within such case.

For general IO, the read{8,16,32} and write{8,16,32} methods are
available as a convenient API for other places in the Kernel. There are
simply no direct 64-bit IO API methods yet, as it's not needed right now
and is not considered to be Arch-agnostic too - the x86 IO space doesn't
support generating 64 bit cycle on IO bus and instead requires two 2
32-bit accesses. If for whatever reason it appears to be necessary to do
IO in such manner, it could probably be added with some neat tricks to
do so. It is recommended to use Memory::TypedMapping struct if direct 64
bit IO is actually needed.
2022-09-23 17:22:15 +01:00
Liav A
6bafbd64e2 Kernel/Memory: Introduce a method to allocate TypedMapping on the heap
This will be used later on to allocate such structure on the heap when
it is necessary to do so.
2022-09-23 17:22:15 +01:00
Liav A
fe2bd8e3dd Kernel: Move x86-specific timer code handling to Arch/x86/Time directory
The APICTimer, HPET and RTC (the RTC timer is in the context of the PC
RTC here) are timers that exist only in x86 platforms, therefore, we
move the handling code and the initialization code to the Arch/x86/Time
directory. Other related code patterns in the TimeManagement singleton
and in the Random.cpp file are guarded with #ifdef to ensure they are
only compiled for x86 builds.
2022-09-23 17:22:15 +01:00
Liav A
48f3d762af Kernel/Graphics: Move x86-specific support for VGA to Arch/x86 directory
The new VGAIOArbiter class is now responsible to conduct x86-specific
instructions to control VGA hardware from the old ISA ports. This allows
us to ensure the GraphicsManagement code doesn't use x86-specific code,
thus allowing it to be compiled within non-x86 kernel builds.
2022-09-23 17:22:15 +01:00
Joel Hansen
8b9c056c5a Base: Modify Check Box emoji
Make it look more like the SerenityOS checkbox.
2022-09-23 16:03:54 +01:00
Joel Hansen
f4cea4139f Base: Add emoji
- U+1F0CF Joker 🃏
- U+1F3AB Ticket 🎫
- U+1F5DC Clamp 🗜️
- U+1F48D Ring 💍
- U+1F371 Bento Box 🍱
- U+1F380 Ribbon 🎀
- U+1F436 Dog Face 🐶
- U+1F518 Radio Button 🔘
- U+1F528 Hammer 🔨
- U+1F531 Trident Emblem 🔱
- U+1FA74 Thong Sandal 🩴
- U+2622 Radioactive ☢️
2022-09-23 16:03:54 +01:00
Liav A
36f2e85823 WindowServer: Fix mapping the correct framebuffer size
If we don't support double buffering for a certain type of hardware,
don't try to map with size calculated with (pitch * height * 2), as it
will result in trying to map more memory than is available in the
framebuffer memory range.
2022-09-23 14:04:00 +01:00
Linus Groh
76ace3629a LibWeb: Make Fetch::Infrastructure::Body::stream() const 2022-09-22 21:01:13 +01:00
Linus Groh
c7c6d7d9e1 LibWeb: Make FileAPI::Blob::create() buffer/type overload infallible 2022-09-22 21:01:13 +01:00
Linus Groh
54a987ad45 LibWeb: Update extract_body() to use BodyInit 2022-09-22 21:01:13 +01:00
Linus Groh
8f5620b5d9 LibWeb: Add BodyInit union type 2022-09-22 21:01:13 +01:00
Linus Groh
571f4e3ebb LibWeb: Move extract_body() into Fetch 2022-09-22 21:01:13 +01:00
Linus Groh
f98ce156c4 LibWeb: Remove ReadableStreamDummy in favor of ReadableStream 2022-09-22 21:01:13 +01:00
Linus Groh
87654f5b51 LibWeb: Start fleshing out the ReadableStream interface
This is so we can just assume it exists in Fetch APIs (while still
skipping functionality that relies on a full implementation, of
course).
2022-09-22 21:01:13 +01:00
Linus Groh
1ace80235b LibWeb: Move XMLHttpRequestBodyInit into Fetch
https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit
2022-09-22 21:01:13 +01:00
thankyouverycool
1bba8589fe LibGUI: Hide unnecessary Scrollbars in ComboBox windows
And simplify rect calculations using content size.
2022-09-22 21:37:26 +02:00
thankyouverycool
7858f885fe LibGUI: Update ListView content size on relevant layout changes
Fixes incorrect content sizing when unnecessary scrollbars are hidden.
2022-09-22 21:37:26 +02:00
thankyouverycool
8b4bf96db3 LibGUI: Apply horizontal padding evenly for ListView items 2022-09-22 21:37:26 +02:00
thankyouverycool
930e5c27df ClockSettings: Increase max visible items for time zone ComboBox 2022-09-22 21:37:26 +02:00
thankyouverycool
f86c5b1fa7 LibGUI: Allow setting max visible items for ComboBoxes
This will govern the maximum number of items ComboBox windows display
before scrolling content.
2022-09-22 21:37:26 +02:00
thankyouverycool
aa8e7aba42 LibGUI: Don't show empty ComboBox windows 2022-09-22 21:37:26 +02:00
thankyouverycool
a0de3860cc LibGUI: Make ListView item_count() public 2022-09-22 21:37:26 +02:00
thankyouverycool
04a9562601 LibGUI: Don't open windows for editable ComboBoxes when typing
Fixes inability to type custom values into ComboBox editors.

CaptureInput preempts typing while the ListView window is open.
For now, searching can still be done by manually opening the window.
2022-09-22 21:37:26 +02:00
thankyouverycool
7c2edd232d LibGUI: Reset Windows as visible for timer purposes on show()
Fixes scrolling timers failing to fire if a ComboBox window
had previously become occluded.
2022-09-22 21:37:26 +02:00
thankyouverycool
db2a1d3620 LibGUI: Always activate ComboBox ListView selections on MouseUp
Fixes having to doubleclick selected items to activate them if
the selection index hasn't changed since last activation.
2022-09-22 21:37:26 +02:00
thankyouverycool
7ac30f53a0 LibGUI: Block ComboBox windows from using CommandPalette 2022-09-22 21:37:26 +02:00
Andrew Kaster
8f38367d46 LibCore: Only include Account.h on Serenity in EventLoop and System
Core::Acount is only used within ``#ifdef __serenity__`` blocks in these
files, so guard the inclusion of Account.h in the same way.

This fixes the Android build of these files.
2022-09-22 11:07:21 -04:00
Andrew Kaster
d6a741af6c Meta: Don't build Core::LocalServer on Android
We won't be able to use local servers on Android without some serious
Android work to create background tasks, so just disable this for now,
as it currently relies on Core::Account to take over from SystemServer.
2022-09-22 11:07:21 -04:00
Andrew Kaster
cca54e9535 CI: Remove Android NDK Cache
This actually never worked as a cache, the build has failed since it
tried to use it. This should restore the Android nightly build.
2022-09-22 11:07:21 -04:00
Andreas Kling
a52d346839 LibWeb: Take coordinate spaces into account when clearing past floats
We were forgetting to convert to and from BFC root relative coordinates
when calculating how much clearance was needed to get past floats.

This fixes the last remaining issue on Acid1, which is now perfect. :^)
2022-09-22 17:06:49 +02:00
Andreas Kling
5efd63741f LibWeb: Perform horizontal inline alignment based on available space
Previously, we were using the full containing block width as a reference
for text-align values "right" and "center". This didn't take intruding
floats into account.
2022-09-22 17:06:48 +02:00
Andreas Kling
d43ef27761 LibWeb: Only include containing blocks in coordinate space translation
Layout box offset coordinates are always relative to their containing
block. Therefore, the functions that convert between coordinate spaces
should only visit containing blocks and apply their offsets, not *every*
box in the parent chain.

This fixes an issue where some floating boxes were unexpectedly far away
from their containing block.
2022-09-22 16:54:12 +02:00
Andreas Kling
54fb5af9ee LibWeb: Use entire margin box of floats when testing for intrusions 2022-09-22 16:54:12 +02:00