Sam Atkins
9f71d65005
LibWeb: Extract CanvasPathDrawingStyles class from CRC2D
2022-08-14 11:30:40 +02:00
Sam Atkins
53b9f36413
LibWeb: Extract CanvasImageData class from CRC2D
2022-08-14 11:30:40 +02:00
Sam Atkins
270c60c5e8
LibWeb: Extract CanvasDrawImage class from CRC2D
2022-08-14 11:30:40 +02:00
Sam Atkins
7cf42ede68
LibWeb: Extract CanvasText class from CRC2D
2022-08-14 11:30:40 +02:00
Sam Atkins
62b561e2e1
LibWeb: Extract CanvasDrawPath class from CRC2D
...
Again, this is an entirely virtual class since the methods involve
direct access to the Painter. Though, maybe I could just expose the
Painter...
2022-08-14 11:30:40 +02:00
Sam Atkins
c0494988ed
LibWeb: Extract CanvasRect class from CRC2D
...
This one requires drawing to the canvas, so it doesn't make so much
sense to move the implementation over.
2022-08-14 11:30:40 +02:00
Sam Atkins
aa3cb8b425
LibWeb: Extract CanvasFillStrokeStyles class from CRC2D
2022-08-14 11:30:40 +02:00
Sam Atkins
afabd613bd
LibWeb: Extract CanvasFillStrokeStyles class from CRC2D
2022-08-14 11:30:40 +02:00
Sam Atkins
aa87b9699e
LibWeb: Extract CanvasTransform class from CRC2D
...
The implementation of this got a little funky, because it has to access
methods from CanvasState.
2022-08-14 11:30:40 +02:00
Sam Atkins
08e6071ebb
LibWeb: Extract CanvasState class from CRC2D
...
As with CanvasPath, this is to better match the spec IDL.
2022-08-14 11:30:40 +02:00
Sam Atkins
6644f3ab44
LibWeb: Teach CRC2D to draw Path2Ds :^)
2022-08-14 11:30:40 +02:00
Sam Atkins
2ec52bbbd5
LibWeb: Implement Path2D class
2022-08-14 11:30:40 +02:00
Sam Atkins
a37ab7b9f8
LibWeb: Extract CanvasPath class from CRC2D
...
This better matches the spec, and makes it possible for things like
Path2D to reuse the same implementation without duplicate code. :^)
2022-08-14 11:30:40 +02:00
Sam Atkins
8fd83b56d5
LibWeb: Use "unrestricted float/double" where we should in IDL
2022-08-14 11:30:40 +02:00
Linus Groh
c8f1651761
LibJS+LibWeb: Restore type safety of Realm::set_global_object()
...
The changes from 8a03b17
to allow any JS::Value aren't a good fit, as
shown by the excessive amount of verify_cast needed :^)
2022-08-06 12:02:48 +02:00
Andreas Kling
c77a0974ab
LibWeb: Port web workers to the "create a new JavaScript realm" API
2022-08-05 12:46:42 +02:00
Andreas Kling
2a7924f96c
LibWeb: Bring browsing context creation closer to spec
...
This patch implements the "create a new browsing context" function from
the HTML spec and replaces our existing logic with it.
The big difference is that browsing contexts now initially navigate to
"about:blank" instead of starting out in a strange "empty" state.
This makes it possible for websites to create a new iframe and start
scripting inside it right away, without having to load an URL into it.
2022-08-05 12:46:42 +02:00
Andreas Kling
602f927982
LibWeb: Start implementing "create and initialize a Document" from HTML
...
The way we've been creating DOM::Document has been pretty far from what
the spec tells us to do, and this is a first big step towards getting us
closer to spec.
The new Document::create_and_initialize() is called by FrameLoader after
loading a "text/html" resource.
We create the JS Realm and the Window object when creating the Document
(previously, we'd do it on first access to Document::interpreter().)
The realm execution context is owned by the Environment Settings Object.
2022-08-05 12:46:40 +02:00
Andreas Kling
0781bdb23e
LibWeb: Add HTML::NavigationParams
2022-08-05 12:46:39 +02:00
Andreas Kling
e756b5450d
LibWeb: Add a way to construct HTML::Window without a DOM::Document
...
This will be used to implement the rather intricate construction order
in the HTML spec.
2022-08-05 12:42:46 +02:00
Andreas Kling
2801ddfa76
LibWeb: Implement (naive) version of HTMLIFrameElement.contentWindow
...
This should really return the WindowProxy, but since we don't have the
infrastructure set up just yet, just return the window object itself
for now.
2022-08-05 12:42:46 +02:00
Andreas Kling
8909ef5b90
LibWeb: Add HTML::SandboxingFlagSet
2022-08-05 12:42:46 +02:00
Andreas Kling
5d773732b7
LibWeb: Add HTML::CrossOriginOpenerPolicyEnforcementResult
2022-08-05 12:42:46 +02:00
Andreas Kling
b73bd4f988
LibWeb: Add HTML::CrossOriginOpenerPolicy
2022-08-05 12:42:46 +02:00
Andreas Kling
50d951aea2
LibJS: Let Shape store a Realm instead of a GlobalObject
...
This is a cautious first step towards being able to create JS objects
before a global object has been instantiated.
2022-08-05 12:42:46 +02:00
Andreas Kling
69a45adfbe
LibWeb: Remove page_did_set_document_in_top_level_browsing_context()
...
This PageClient callback was never used for anything.
2022-08-05 12:42:46 +02:00
Andreas Kling
ffb23db57f
LibWeb: Add browsing context "still on its initial about:blank Document"
2022-08-05 12:42:46 +02:00
Andreas Kling
c4a0b7057b
LibWeb: Add basic skeleton of HTML "session history" to BrowsingContext
2022-08-05 12:42:46 +02:00
Sam Atkins
b456adcb59
LibWeb: Extract the WindowOrWorkerGlobalScope IDL mixin
...
`Window` itself isn't generated from an IDL file so it doesn't get to
make use of this mixin, but it ideally would do so.
2022-07-29 17:15:49 +01:00
Sam Atkins
899fa30bdd
LibWeb: Extract the LinkStyle IDL mixin
2022-07-29 17:15:49 +01:00
Sam Atkins
8d2d315858
LibWeb: Extract the HTMLHyperlinkElementUtils IDL mixin
...
Also added FIXMEs for some missing methods while I was at it.
2022-07-29 17:15:49 +01:00
Andreas Kling
2ad98fdf80
LibWeb: Add fast_is<HTMLElement>()
...
This avoids slow RTTI lookups in selector matching.
2022-07-27 17:29:48 +02:00
Andreas Kling
9f32da1dbc
LibWeb: Add fast_is<HTMLBaseElement>()
...
This avoids slow RTTI lookups in Document::base_url().
2022-07-27 17:29:48 +02:00
MacDue
57c6792458
LibWeb: Support appearance: none
for <progress>
elements
...
This disables this system progress bar, and instead creates one
out of pseudo elements, that can be selected and styled with the
::-webkit-progress-bar/value selectors.
2022-07-23 01:45:49 +02:00
MacDue
ee7e9e7c86
LibWeb: Allow having a linear-gradient() as a background-image
2022-07-17 20:11:38 +01:00
Linus Groh
2b06e4b98b
LibWeb: Mark Origin::serialize() as const
2022-07-15 14:15:30 +02:00
Linus Groh
de74ba587f
LibWeb: Add a stub PolicyContainer struct
2022-07-14 00:42:26 +01:00
Linus Groh
22a627fc1a
LibWeb: Move Origin into the HTML namespace
...
Origin is defined in the HTML Standard, and therefore belongs into the
HTML directory and namespace in LibWeb.
https://html.spec.whatwg.org/multipage/origin.html#origin
2022-07-14 00:42:26 +01:00
sin-ack
c8585b77d2
Everywhere: Replace single-char StringView op. arguments with chars
...
This prevents us from needing a sv suffix, and potentially reduces the
need to run generic code for a single character (as contains,
starts_with, ends_with etc. for a char will be just a length and
equality check).
No functional changes.
2022-07-12 23:11:35 +02:00
sin-ack
3f3f45580a
Everywhere: Add sv suffix to strings relying on StringView(char const*)
...
Each of these strings would previously rely on StringView's char const*
constructor overload, which would call __builtin_strlen on the string.
Since we now have operator ""sv, we can replace these with much simpler
versions. This opens the door to being able to remove
StringView(char const*).
No functional changes.
2022-07-12 23:11:35 +02:00
Luke Wilde
38696dc626
LibWeb: Store MessageEvent::m_data in a JS::Handle
...
This protects it from GC.
2022-07-11 14:49:25 +01:00
Luke Wilde
de88e119a0
LibWeb: Implement XMLSerializer
...
The main thing that is missing is validating certain pieces of data
against XML productions in well-formed mode, but nothing uses
well-formed mode right now.
Required by Closure Library for sanitising HTML.
e687b3d8ab/closure/goog/html/sanitizer/safedomtreeprocessor.js (L117)
2022-07-05 21:25:05 +02:00
networkException
6805baeedd
LibWeb: Add the type field to DOM::Document
...
This patch adds the document type concept to documents and sets it in
various places.
2022-07-04 12:39:48 +02:00
Luke Wilde
1e36224321
LibWeb: Print unhandled rejections the same way as unhandled exceptions
2022-06-29 21:21:50 +01:00
Luke Wilde
1d5b03ce17
LibWeb: Store PromiseRejectionEvent::m_reason in a JS::Handle
2022-06-29 21:21:50 +01:00
Luke Wilde
17a26853e1
LibWeb: Move ClassicScript::m_settings_object into the Script base
...
All Scripts have an associated settings object.
https://html.spec.whatwg.org/multipage/webappapis.html#settings-object
2022-06-29 21:21:50 +01:00
Luke Wilde
3fe66bddf4
LibWeb: Implement WindowEventHandlers
2022-06-29 21:21:50 +01:00
Luke Wilde
ebf2184636
LibWeb: Only make certain <body> and <frameset> events apply to Window
...
Previously we forwarded all event handler attributes to Window from
these two elements, however, we are only supposed to forward blur,
error, focus, load, resize and scroll.
2022-06-29 21:21:50 +01:00
Luke Wilde
adf8341c4e
LibWeb: Forward CRC2D's ref count to HTMLCanvasElement
...
This allows HTMLCanvasElement and CRC2D to share their lifetime, as JS
allows them to arbitrarily access them at any time and CRC2D.canvas
expects a non-null return value.
2022-06-27 22:54:41 +01:00
Luke Wilde
0a989d1bfd
LibWeb: Implement HTMLBaseElement.href
2022-06-19 16:35:43 +01:00