Sam Atkins
c7cd489689
LibWeb: Parse @media
rules into CSSMediaRule objects
...
This is not yet actually useful, since we only have a stub for parsing
the query part, but now I have a nice way to test that things are
working. :^)
2021-10-01 20:03:03 +02:00
Sam Atkins
9c5430b9ee
LibWeb: Make consume_a_qualified_rule() understand block tokens
...
This now matches the spec, and fixes the situation where if it was given
a TokenStream of StyleComponentValueRules, it would drop any Blocks on
the floor instead of adding them to the result StyleRule.
2021-10-01 20:03:03 +02:00
Sam Atkins
f1af136925
LibWeb: Make MediaQueryList store MediaQueries instead of a String
2021-10-01 20:03:03 +02:00
Sam Atkins
5bbbdb81dc
LibWeb: Sketch out media-query parsing
...
This does everything except actually parse the individual media queries.
2021-10-01 20:03:03 +02:00
Sam Atkins
3e74c194f9
LibWeb: Add CSSMediaRule
...
This is the class corresponding to a `@media` rule. It contains a list
of media queries and a list of child css rules.
2021-10-01 20:03:03 +02:00
Sam Atkins
8ac622f056
LibWeb: Add MediaList
...
This is a list of MediaQuery objects. Not to be confused with
`MediaQueryList`, which is concerned with firing events when a media
query's match-state changes.
2021-10-01 20:03:03 +02:00
Sam Atkins
0a4d9c6d31
LibWeb: Partially implement MediaQuery class :^)
...
The main thing that's missing is the actual matching, but this is enough
to get started.
2021-10-01 20:03:03 +02:00
Tobias Christiansen
33a9f908a6
LibWeb: Flexbox: Check for relative resolvability on the cross axis
...
If an element has a relative specified length on the cross axis, but in
the lineage there are no parents that have any fixed cross size, this
would have resulted in a 0 cross size.
We now catch that and check whether the relative length would result in
an actual definite length if resolved.
2021-10-01 13:52:41 +02:00
Luke Wilde
c0a64f7317
LibWeb: Check for HTML integration points in the tree constructor
...
This particularly implements these two points:
- "If the adjusted current node is an HTML integration point and the
token is a start tag"
- "If the adjusted current node is an HTML integration point and the
token is a character token"
This also adds spec comments to the tree constructor.
2021-10-01 12:26:41 +02:00
Luke Wilde
46686f7f94
LibWeb: Implement MediaQueryList.onchange
2021-10-01 01:35:30 +01:00
Nico Weber
6c9bc18a79
Userland: Fix typos
2021-10-01 01:18:52 +01:00
Luke Wilde
971d60c329
LibWeb: Implement AbortSignal.onabort
2021-10-01 02:10:56 +02:00
Nico Weber
de72332920
Libraries: Fix typos
2021-10-01 01:06:40 +01:00
Luke Wilde
10d4f2fc1e
LibWeb: Implement HTMLStyleElement.sheet
2021-10-01 00:17:24 +01:00
Idan Horowitz
2c6c9b73c8
LibWeb: Add the Web::Crypto namespace, built-in, and getRandomValues
...
Since we don't support IDL typedefs or unions yet, the responsibility
of verifying the type of the argument is temporarily moved from the
generated Wrapper to the implementation.
2021-09-30 20:02:09 +02:00
Andreas Kling
198bb322ef
LibWeb: Fix null dereference when assigning an ImageStyleValue via JS
...
When parsing a CSS value in the context of a CSSStyleDeclaration
camelCase property setter, we don't necessarily have a Document to
provide the CSS parser for context.
So the parser can't go assuming that there's always a Document in the
ParsingContext. And ImageStyleValue can't go assuming that there's
always a Document either. This will require some more work to get things
right, I'm just patching up the null dereference for now.
2021-09-30 02:18:30 +02:00
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