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
Linus Groh
25f53a577d
LibWeb/HTML: Port Window.inner{Width,Height} to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
0c691087ca
LibWeb/HTML: Port Window.screen to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
2beb99b76e
LibWeb/HTML: Port Window.matchMedia() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
198db2ebd9
LibWeb/HTML: Port Window.crypto to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
7de9179a6d
LibWeb/HTML: Port Window.performance to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
95ce5735ce
LibWeb/HTML: Port Window.event to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
8c0f0726d1
LibWeb/HTML: Include the WindowOrWorkerGlobalScope mixin in Window.idl
2023-03-07 23:33:34 +00:00
Linus Groh
6dd1934ed8
LibWeb/HTML: Port Window.atob() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
192f5e61f6
LibWeb/HTML: Port Window.btoa() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
94f1eff291
LibWeb/HTML: Port Window.isSecureContext to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
188aac5077
LibWeb/HTML: Port Window.origin to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
376fb9ae40
LibWeb/HTML: Hook up WindowOrWorkerGlobalScopeMixin to Window
...
This prepares us to use the shared implementations from this class.
2023-03-07 23:33:34 +00:00