Mathis Wiehl
8169b878f8
LibWeb: Invalidate sibling styles on input element checked state change
...
Checkedness of an input element can influence sibling style, as well as
style of their children, when they use the `:checked` pseudo-class in
combination with a kind of sibling selector. That means its not
sufficient to just invalidate the input elements on style.
This is actually more commonly observable than one might expect, because
this pattern is often used as a JS-free toggle solution for things like
menus.
2023-03-18 16:01:12 +01:00
Timothy Flynn
13dfadba79
LibJS: Propagate errors from VM creation
2023-03-17 16:39:08 +00:00
MacDue
a2f3b6543b
LibWeb: Fix is<HTML::HTMLProgressElement>() check
...
Previously HTMLProgressElement implemented is_html_input_element() not
is_html_progress_element(), so is_html_progress_element() defaulted to
always returning false. This broke is<HTML::HTMLProgressElement>().
2023-03-17 08:39:37 +01:00
Timothy Flynn
57646c86ef
LibWeb: Port the WebAssembly namespace to IDL
2023-03-16 19:39:17 +00:00
Aliaksandr Kalenik
7061322606
LibWeb: Create new tab if a new top level BC is requested
...
With current process architecture where every top level browsing
context lives in a separate WebContent process we need to request
a browser to spawn new WebContent process if new top level BC is
requested.
2023-03-16 13:17:37 -04:00
Aliaksandr Kalenik
8026c63e10
LibWeb: Introduce RemoteBrowsingContext
...
Remote browsing context represents top level browsing context that
lives in another WebContent process.
2023-03-16 13:17:37 -04:00
Aliaksandr Kalenik
40ec976781
LibWeb: Inherit BrowsingContext from AbstractBrowsingContext
2023-03-16 13:17:37 -04:00
Aliaksandr Kalenik
c4f94b0846
LibWeb: Introduce AbstractBrowsingContext
...
Introducing class for abstract browsing context is going to make it
possible to have separate implementations for:
1) Local browsing context (Top level BC of current page and iframes)
2) Remote browsing context (BC of a page that lives in another
WebContent process)
2023-03-16 13:17:37 -04:00
Aliaksandr Kalenik
6d91d2fa50
WebContent: Add IPC call to set window handle from WebContent client
2023-03-16 13:17:37 -04:00
Aliaksandr Kalenik
d87a207ca9
LibWeb: Add handle
member in BrowsingContext
...
`handle` is uuid that is going to be used in WebDriver to identify
browsing context.
2023-03-16 13:17:37 -04:00
Timothy Flynn
2d45e1fca5
LibWeb: Port the CSS namespace to IDL
2023-03-15 12:48:25 -04:00
Sam Atkins
6d8f046fd0
LibGfx+Userland: Make TextAttributes::underline_style optional
...
Rather than having a style AND a field saying whether to use the style,
just make the style Optional.
2023-03-15 14:55:49 +01:00
Matthew Olsson
7c0c1c8f49
LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr
2023-03-15 08:48:49 +01:00
Timothy Flynn
9c569e8a0f
LibWeb: Implement the [PutForwards] IDL extended attribute
...
For example, consider the attribute:
interface Element {
[PutForwards=value] readonly attribute DOMTokenList classList;
}
When `classList` is set, we should instead set the attribute `value` on
the `classList` attribute of the Element interface.
2023-03-14 16:30:19 -04:00
Timothy Flynn
0aa4466ce9
LibWeb: Port {set,clear}{Timeout,Interval} to IDL
2023-03-14 09:07:40 -04:00
Timothy Flynn
2895b7e733
LibWeb: Port the WindowOrWorkerGlobalScopeMixin timer handler to String
...
This will make porting to IDL a bit cleaner.
2023-03-14 09:07:40 -04:00
Timothy Flynn
dd992e7dad
LibWeb: Move timer implementations to WindowOrWorkerGlobalScopeMixin
...
This is where it belongs according to the spec, and where these methods'
IDL will be placed.
This forces us to implement a few steps closer to the spec as well.
2023-03-14 09:07:40 -04:00
Timothy Flynn
b579093ad0
LibWeb: Change HTML::Timer to store its owning window as a JS::Object
...
Rather than being limited to a Window object, it will also need to be
ownable by a WorkerGlobalScope.
2023-03-14 09:07:40 -04:00
Timothy Flynn
97536e4684
LibWeb+Ladybird+Userland: Port window.[alert,confirm,prompt] to String
...
LibGUI and WebDriver (read: JSON) API boundaries use DeprecatedString,
so that is as far as these changes can reach.
The one change which isn't just a DeprecatedString to String replacement
is handling the "null" prompt response. We previously checked for the
null DeprecatedString, whereas we now represent this as an empty
Optional<String>.
2023-03-13 22:05:22 +00:00
Timothy Flynn
f5f1a5228e
LibWeb: Escape HTML text fragments with multi-byte code point awareness
...
The UTF-8 encoding of U+00A0 (NBSP) is the bytes 0xc2 0xa0. By looping
over the string to escape byte-by-byte, we replace the second byte with
" ", but leave the first byte in the resulting text. This creates
an invalid UTF-8 string, with a lone leading byte.
2023-03-13 07:29:40 +00:00
Linus Groh
41b8d81d49
LibWeb/HTML: Remove redundant namespace qualifiers from Window.{cpp,h}
2023-03-11 18:26:40 +00:00
Linus Groh
324dacbc5d
LibWeb/HTML: Propagate OOM errors from Window::{local,session}_storage()
...
This requires a bit of error type conversion glue as HashMap::try_ensure
expects the callback to return ErrorOr<T> like the function itself does.
2023-03-11 18:26:40 +00:00
Linus Groh
4da68384e6
LibWeb/HTML: Make Window::m{location,navigator} lazily allocated
...
This now matches the other window-owned objects, which already do this:
m_crypto, m_performance, m_screen.
2023-03-11 17:53:50 +00:00
Linus Groh
22552382ff
LibWeb/HTML: Use CreateMethodProperty for Window namespace properties
...
This makes sure the property attributes are correct (writable and
configurable), which they currently aren't for either CSS or
WebAssembly.
2023-03-11 17:32:07 +00:00
Linus Groh
b6a69f5f03
LibWeb/HTML: Consolidate duplicate public/private sections in Window.h
2023-03-11 17:09:01 +00:00
Andreas Kling
1cf5737e9e
LibWeb: Add fast_is<T>() for various types stood out in a profile
2023-03-11 10:46:26 +01:00
Andreas Kling
ff7b949061
LibWeb: Make HTMLScript private members private once again
...
These were accidentally made public a while ago. Thankfully nobody
started poking into script element internals since then. :^)
2023-03-10 14:59:46 +01:00
Andreas Kling
e8f5085669
LibWeb: Implement Range.createContextualFragment()
2023-03-10 14:58:55 +01:00
Andreas Kling
a504ac3e2a
Everywhere: Rename equals_ignoring_case => equals_ignoring_ascii_case
...
Let's make it clear that these functions deal with ASCII case only.
2023-03-10 13:15:44 +01:00
Andreas Kling
806d32c88f
LibWeb: Use shadow_root_internal() when building <input> UA shadow DOM
2023-03-09 21:54:59 +01:00
Kenneth Myhra
b78ee64415
LibWeb: Do not discard String returned from url_encode() to avoid UAF
...
This caused UAF since the string returned from url_encode() was
immediately discarded.
Co-authored-by: Luke Wilde <lukew@serenityos.org>
2023-03-08 09:26:08 +00:00
Linus Groh
d4d49e00a2
LibWeb/Bindings: Remove now unused REPLACEABLE_PROPERTY_SETTER() macro
2023-03-07 23:33:34 +00:00
Linus Groh
351e5ca917
LibWeb/HTML: Port Window.queueMicrotask() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
129ab02470
LibWeb/HTML: Port Window.structuredClone() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
a31c561a5a
LibWeb/HTML: Port Window.sessionStorage to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
37e9302dd9
LibWeb/HTML: Port Window.localStorage to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
5cc6b1c4db
LibWeb/HTML: Port Window.fetch() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
a2fb3a1653
LibWeb/HTML: Port Window.cancelAnimationFrame() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
211e6c1fbc
LibWeb/HTML: Port Window.requestAnimationFrame() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
86589f09dc
LibWeb/HTML: Port Window.cancelIdleCallback() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
b410804f54
LibWeb/HTML: Port Window.requestIdleCallback() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
606b9ff6f3
LibWeb/HTML: Port Window.getSelection() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
56550b6ec0
LibWeb/HTML: Port Window.focus() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
b59505aba5
LibWeb/HTML: Port Window.getComputedStyle() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
8454eb874f
LibWeb/HTML: Port Window.devicePixelRatio to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
46e547d774
LibWeb/HTML: Port Window.outer{Width,Height} to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
80acf03278
LibWeb/HTML: Port Window.screen{X,Y} / Window.screen{Left,Top} to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
3d075e55f5
LibWeb/HTML: Port Window.scrollBy() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
2b6d9cca1a
LibWeb/HTML: Port Window.scroll() to IDL
...
...with various changes required due to ScrollBehavior / ScrollOptions
moving from Element.idl to Window.idl.
2023-03-07 23:33:34 +00:00
Linus Groh
40b4ee88de
LibWeb/HTML: Port Window.scroll{X,Y} / Window.page{X,Y}Offset to IDL
2023-03-07 23:33:34 +00:00