Andreas Kling
3006e15c94
LibWeb: Support Element.client{Top,Left,Width,Height}
2021-09-30 02:17:23 +02:00
Andreas Kling
9d852623f2
LibWeb: Support Element.matches(selectors)
...
This returns whether an element matches any of a set of selectors.
2021-09-30 02:16:36 +02:00
Andreas Kling
439be913cf
LibWeb: Support HTMLElement.offset{Width,Height}
2021-09-30 01:35:19 +02:00
Linus Groh
e5409c6ead
LibJS: Convert internal_set() to ThrowCompletionOr
2021-09-29 23:49:53 +01:00
Linus Groh
6c2b974db2
LibJS: Convert internal_get() to ThrowCompletionOr
2021-09-29 23:49:53 +01:00
Linus Groh
d9895ec12d
LibJS: Convert internal_has_property() to ThrowCompletionOr
2021-09-29 23:49:53 +01:00
Linus Groh
5da210125e
LibJS: Convert internal_define_own_property() to ThrowCompletionOr
2021-09-29 23:49:53 +01:00
Linus Groh
73bae7d779
LibJS: Convert internal_prevent_extensions() to ThrowCompletionOr
2021-09-29 23:49:53 +01:00
Linus Groh
9b4362f10a
LibJS: Convert internal_is_extensible() to ThrowCompletionOr
2021-09-29 23:49:53 +01:00
Linus Groh
8c81c84c18
LibJS: Convert internal_set_prototype_of() to ThrowCompletionOr
2021-09-29 23:49:53 +01:00
Andreas Kling
c8bf7f9c41
LibWeb: Expose CSSStyleRule on the window object
2021-09-30 00:05:40 +02:00
Andreas Kling
d462a6720a
LibWeb: Reimplement the <style> element following the spec
...
We now follow the "update a style block" algorithm from the HTML spec
instead of using the ad-hoc CSSLoader mechanism.
This necessitated improving our StyleSheet and CSSStyleSheet classes as
well, so that's baked into this commit.
2021-09-30 00:00:55 +02:00
Andreas Kling
6cda24097b
LibWeb: Add the CSSStyleRule interface with some limited functionality
2021-09-30 00:00:55 +02:00
Andreas Kling
71087422f6
LibWeb: Add Node::in_a_document_tree()
...
This is "in a document tree" from the DOM spec.
2021-09-30 00:00:55 +02:00
Andreas Kling
994e33b0f7
LibWeb: Implement most of CSSStyleRule.insertRule()
2021-09-29 21:21:57 +02:00
Andreas Kling
f53d0ddba2
LibWeb: Make CSSStyleDeclaration.camelCaseProperty work :^)
...
This resolves a long-standing FIXME about exposing CSS properties to
JavaScript via "camelCase" names rather than "dash-separated" names.
2021-09-29 21:21:57 +02:00
Andreas Kling
30d710a0a2
LibWeb: Add CSSStyleSheet.{insert,delete,remove}Rule() APIs
...
Note that insertRule() is really just a big TODO right now.
2021-09-29 21:21:57 +02:00
Andreas Kling
3a4565beec
LibWeb: Make CSSRule and CSSRuleList available to JavaScript :^)
...
This patch makes both of these classes inherit from RefCounted and
Bindings::Wrappable, plus some minimal rejigging to allow us to keep
using them internally while also exposing them to web content.
2021-09-29 21:21:57 +02:00
Idan Horowitz
3b9e8ec597
LibWeb: Add the missing CustomEvent IDL constructor
2021-09-29 19:38:41 +02:00
Sam Atkins
0b23a20ad5
LibWeb: Add CSSConditionRule
...
https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface
This simply exposes a condition string, which is implemented differently
in each sub-class.
2021-09-29 18:57:48 +02:00
Sam Atkins
06f9395056
LibWeb: Add CSSGroupingRule
...
This is an abstract base class for CSSRules that hold a CSSRuleList.
2021-09-29 18:57:48 +02:00
Sam Atkins
eb83d2617c
LibWeb: Use a CSSRuleList inside CSSStyleSheet
...
This better matches the spec. :^)
2021-09-29 18:57:48 +02:00
Sam Atkins
97a78cdd28
LibWeb: Add CSSRuleList
...
"The CSSRuleList interface represents an ordered collection of CSS style
rules." - https://www.w3.org/TR/cssom-1/#the-cssrulelist-interface
2021-09-29 18:57:48 +02:00
Luke Wilde
7bdf0be667
LibWeb: Implement ChildNode.remove
2021-09-29 17:56:13 +02:00
Tobias Christiansen
610f14992a
LibWeb: Flexbox: Wrap inline Nodes if their parent is display: flex
2021-09-29 17:55:57 +02:00
Luke Wilde
881e9d1341
LibWeb: Make StyleSheetList.item an IDL getter
2021-09-29 14:57:59 +01:00
Idan Horowitz
e22d9dc360
LibWeb: Add the missing EventInit property to Event constructor
2021-09-29 10:09:33 +03:00
Andreas Kling
63d971d33b
LibWeb: Support window.screen{X,Y,Left,Top}
...
Some sites query these properties for whatever reason, so let's support
them. (But let's always pretend the screen coordinates are (0, 0))
2021-09-29 00:22:46 +02:00
Andreas Kling
0a90d466a0
LibWeb: Expose CSSStyleDeclaration on the window object
2021-09-28 23:28:44 +02:00
Ali Mohammad Pur
f0e2c517fc
LibWeb: Implement the dns-prefetch and preconnect link relationships
2021-09-28 22:32:31 +02:00
Ali Mohammad Pur
e9b9f89e70
LibWeb: Use Document::parse_url() for preload links
2021-09-28 22:32:31 +02:00
Andreas Kling
0af0ee4293
LibWeb: Fire "keyup" events as well :^)
...
This was easy, now that we have KeyboardEvent.
2021-09-28 16:56:24 +02:00
Andreas Kling
554c344ffe
LibWeb: Add a basic KeyboardEvent and fire "keydown" events :^)
2021-09-28 16:56:24 +02:00
Idan Horowitz
01417c82c5
LibWeb: Make URLSearchParams iterable
...
This uses the new support for the iterable IDL property.
2021-09-28 16:51:27 +02:00
Idan Horowitz
cdde3ba5c5
LibWeb: Add partial support for IDL Iterable declarations
...
This currently only supports pair iterables (i.e. iterable<key, value>)
support for value iterables (i.e. iterable<value>) is left as TODO().
Since currently our cmake setup calls the WrapperGenerator separately
and unconditionally for each (hard-coded) output file iterable wrappers
have to be explicitly marked so in the CMakeLists.txt declaration, we
could likely improve this in the future by querying WrapperGenerator
for the outputs based on the IDL.
2021-09-28 16:51:27 +02:00
Luke Wilde
f7ac3545cc
LibWeb: Add initial support for CustomEvent
...
This is used surprisingly often. For example, it is used by a core
YouTube library called Structured Page Fragments.
It allows you to manually dispatch an event with arbitrary data
attached to it.
The only thing missing from this implementation is the constructor.
This is because WrapperGenerator is currently missing dictionary
capabilities.
2021-09-27 18:45:45 +02:00
Luke Wilde
b04fafee74
LibWeb: Add some missing events in EventWrapperFactory
...
I noticed some events we being wrapped into a generic Event while
working on CustomEvent. This also adds PageTransitionEvent's
constructor to the WindowObject.
I'm not sure if this is all of them.
2021-09-27 18:45:45 +02:00
Andreas Kling
8da21583db
LibWeb: Make SVG <path> tolerate relative first path coordinates
...
If the first element of an SVG path spec uses relative coordinates,
we'll now treat them as absolute. This is achieved by defaulting to
(0,0) as the initial "last point" in the path.
2021-09-27 18:29:10 +02:00
Andreas Kling
975a71de45
LibWeb: Implement the Document.activeElement attribute
...
We were already tracking the active element in DOM::Document, so all we
had to do here was add the attribute to Document.idl :^)
2021-09-27 16:52:22 +02:00
Andreas Kling
7410736b0f
LibWeb: Support window.devicePixelRatio
...
This always returns 1 for now. I've added a FIXME about returning 2 in
HiDPI mode.
2021-09-27 16:52:22 +02:00
Andreas Kling
e26e85a3d2
LibWeb: Support Document.hidden and Document.visibilityState
...
These just act as if the document is always visible for now.
2021-09-27 16:52:22 +02:00
Sam Atkins
d36e3af7be
LibWeb: Don't try to ad-block data: urls
...
In some cases these can be several KiB or more in size, making checking
very slow, and it doesn't make sense to filter them out anyway. This
change speeds up loading pages with large data: urls, which previously
took up to 1ms per byte to process.
2021-09-27 16:13:29 +02:00
Andreas Kling
a79bdd2bd5
LibWeb+Browser: Make ad blocking work in the multi-process world
...
We now send the list of content filters over to new WebContent processes
after creating an OutOfProcessWebView. :^)
2021-09-27 11:40:56 +02:00
Andreas Kling
5bb2e6597a
LibWeb: Preload resources hinted by <link rel="preload">
...
If a page is nice enough to give us some preload hints, we can tell
RequestServer to get started on downloading the resources right away,
instead of waiting until discovering them later on during parsing.
2021-09-27 02:07:55 +02:00
Andreas Kling
ed5c807c99
LibWeb: Allow passing a (String) body to XMLHttpRequest.send()
...
This patch implements the simplest form of send(body): strings.
2021-09-27 01:56:08 +02:00
Andreas Kling
43d378940f
LibWeb: Add DOMRect and Element.getBoundingClientRect()
...
This marks our entry into the Web::Geometry namespace, based on the
"Geometry" spec at https://drafts.fxtf.org/geometry/
2021-09-27 01:01:29 +02:00
Andreas Kling
7c6f229ec0
LibWeb: Make navigator.onLine always true for now
...
Some pages refuse to load if they think we are offline, so let's say
we're online. :^)
2021-09-26 19:14:19 +02:00
Andreas Kling
0ab31d8c84
LibWeb: Support simplest form of CSSStyleDeclaration.setProperty()
...
This patch adds the setProperty(name, value) API to CSSStyleDeclaration.
Setting an invalid or empty value will cause the property to be removed
from the declaration.
Note that this only works on mutable declarations (i.e element.style)
and not on resolved declarations (i.e window.getComputedStyle(element)).
2021-09-26 19:07:03 +02:00
Luke Wilde
e0e41116a4
LibWeb: Make WindowObject's prototype immutable
...
While I was implementing IDL special operations, I noticed that for
global platform objects (e.g. WindowObject), the IDL spec makes their
prototype immutable.
https://heycam.github.io/webidl/#platform-object-setprototypeof
2021-09-26 18:59:56 +02:00
Luke Wilde
f6b24a72ee
LibWeb: Add support for HTMLOrSVGElement.dataset
2021-09-26 18:59:56 +02:00