Andreas Kling
ec24d7555a
LibWeb: Add a simple internals objects only available during testing
...
This object is available as `window.internals` (or just `internals`) and
is only accessible while running in "test mode".
This first version only has one API: gc(), which triggers a garbage
collection immediately.
In the future, we can add more APIs here to help us test parts of the
engine that are hard or impossible to reach via public web APIs.
2023-08-06 15:26:34 +02:00
Shannon Booth
a975fca42e
LibWeb: Implement size attribute of ByteLengthQueuingStrategy
...
Co-authored-by: Matthew Olsson <mattco@serenityos.org>
2023-06-23 13:27:29 +02:00
Shannon Booth
49689e5d8e
LibWeb: Implement size attribute of CountQueuingStrategy
...
Co-authored-by: Matthew Olsson <mattco@serenityos.org>
2023-06-23 13:27:29 +02:00
Aliaksandr Kalenik
147c3b3d97
LibWeb+WebContent: Forbid access to underlying type of CSSPixels
...
Although DistinctNumeric, which is supposed to abstract the underlying
type, was used to represent CSSPixels, we have a whole bunch of places
in the layout code that assume CSSPixels::value() returns a
floating-point type. This assumption makes it difficult to replace the
underlying type in CSSPixels with a non-floating type.
To make it easier to transition CSSPixels to fixed-point math, one step
we can take is to prevent access to the underlying type using value()
and instead use explicit conversions with the to_float(), to_double(),
and to_int() methods.
2023-06-13 06:08:27 +02:00
stelar7
9c74f49b1d
LibWeb: Implement has_transient_activation
2023-06-01 14:28:52 +02:00
Andreas Kling
655d9d1462
LibWeb: Make CSSPixels and Length use 64-bit (double) floating point
...
This fixes a plethora of rounding problems on many websites.
In the future, we may want to replace this with fixed-point arithmetic
(bug #18566 ) for performance (and consistency with other engines),
but in the meantime this makes the web look a bit better. :^)
There's a lot more things that could be converted to doubles, which
would reduce the amount of casting necessary in this patch.
We can do that incrementally, however.
2023-05-24 14:40:35 +02:00
Kenneth Myhra
cbefab21be
LibWeb: Port fire_a_page_transition_event() to new FlyString
2023-04-09 17:27:27 +02:00
Kenneth Myhra
4d87072201
LibWeb: Port {HTML,UIEvents,XHR}::EventNames to new String
2023-04-06 23:49:08 +02:00
Luke Wilde
034aaf3f51
LibWeb: Introduce CustomElementRegistry and creating custom elements
...
The main missing feature here is form associated custom elements.
2023-04-06 11:36:56 +02:00
Kenneth Myhra
1080281e58
LibWeb: Port AbstractBrowsingContext to String
2023-04-06 08:41:43 +02:00
Luke Wilde
cbe0901706
LibWeb: Implement performance.mark and performance.clearMarks
2023-03-23 21:00:43 +00:00
Timothy Flynn
2a410f8985
LibWeb: Change "popup"-related storage types to named enums
2023-03-22 00:12:53 +01:00
Timothy Flynn
bff109ee50
LibWeb: Change the "noreferrer" storage type to a named enum
2023-03-22 00:12:53 +01:00
Timothy Flynn
1b811191cd
LibWeb+WebContent: Change the "noopener" storage type to a named enum
2023-03-22 00:12:53 +01:00
Timothy Flynn
57646c86ef
LibWeb: Port the WebAssembly namespace to IDL
2023-03-16 19:39:17 +00:00
Timothy Flynn
2d45e1fca5
LibWeb: Port the CSS namespace to IDL
2023-03-15 12:48:25 -04: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
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
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
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
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
Linus Groh
b2409517bd
LibWeb/HTML: Port Window.open() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
efa48142d2
LibWeb/HTML: Port Window.frameElement to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
c6353ac8cd
LibWeb/HTML: Port Window.parent to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
dba8dbe07d
LibWeb/HTML: Port Window.top to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
baaf891c64
LibWeb/HTML: Port Window.length to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
c42496187b
LibWeb/HTML: Port Window.history to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
eccc0d90de
LibWeb/HTML: Port Window.location to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
0e40841990
LibWeb/HTML: Port Window.name to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
0e587420a8
LibWeb/HTML: Port Window.document to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
dcff775ab1
LibWeb/HTML: Port Window.frames to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
437a7c977e
LibWeb/HTML: Port Window.self to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
d57876306c
LibWeb/HTML: Port Window.window to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
eb2425040b
LibWeb/HTML: Port Window.navigator to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
c219e6d9c1
LibWeb/HTML: Port Window.postMessage() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
eb4842dfa1
LibWeb/HTML: Port Window.prompt() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
bbffda5f55
LibWeb/HTML: Port Window.confirm() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
a0b73eb5f7
LibWeb/HTML: Port Window.alert() to IDL
2023-03-07 23:33:34 +00:00
Linus Groh
a6f8b18649
LibWeb/HTML: Define Window's {Global,Window}EventHandlers via IDL
2023-03-07 23:33:34 +00:00
Linus Groh
c130fd6993
LibWeb: Start generating code for the Window object from IDL :^)
2023-03-07 23:33:34 +00:00
Linus Groh
cc1e8a4e9f
LibWeb/HTML: Propagate errors from Window::initialize_web_interfaces()
2023-03-05 21:22:34 +00:00
Kenneth Myhra
eed69e5093
LibWeb: Port MessageEvent to new String
2023-03-05 18:25:59 +00:00
Kenneth Myhra
97947fdffa
LibWeb: Port PageTransitionEvent to new String
2023-03-05 18:25:59 +00:00
Luke Wilde
7b635998a8
LibWeb: Make Window.screen a replaceable attribute
...
Required by Shadertoy.
2023-03-03 22:27:49 +00:00
Linus Groh
51c3967516
Everywhere: Use '_{short_,}string' literals more
...
This mostly updates code what was written before but merged after these
were added.
2023-02-28 15:15:36 +00:00
Andreas Kling
3a5802540e
LibWeb: Follow-up fixes for Linus's comments in #17658
2023-02-28 13:16:39 +01:00
Luke Wilde
4d0277cd9a
LibWeb: Implement navigator.{plugins,mimeTypes}
2023-02-28 12:36:14 +01:00
Andreas Kling
7e76a51cb0
LibWeb: Rename Layout::InitialContainingBlock to Layout::Viewport
...
The name "initial containing block" was wrong for this, as it doesn't
correspond to the HTML element, and that's specifically what it's
supposed to do! :^)
2023-02-28 12:21:56 +01:00
Luke Wilde
1c918e826c
LibWeb: Define navigator/clientInformation with define_native_accessor
...
Defining it as a direct property causes it to have no getter/setter
function, which causes an empty Optional crash when attempting to
access such getter on a cross-origin iframe.
Fixes amazon.com crashing on this particular crash.
2023-02-28 08:45:23 +00:00
Kenneth Myhra
f0fd1cae3d
LibWeb: Make factory method of IdleDeadline fallible
2023-02-22 09:55:33 +01:00
Sam Atkins
2db168acc1
LibTextCodec+Everywhere: Port Decoders to new Strings
2023-02-19 17:15:47 +01:00
Sam Atkins
f2a9426885
LibTextCodec+Everywhere: Return Optional<Decoder&> from decoder_for()
2023-02-19 17:15:47 +01:00
Kenneth Myhra
3e834636a6
LibWeb: Make factory method of HTML::Window fallible
2023-02-18 00:52:47 +01:00
Kenneth Myhra
b41401bab2
LibWeb: Make factory method of HTML::Storage fallible
2023-02-18 00:52:47 +01:00
Kenneth Myhra
d9845bb24b
LibWeb: Make factory method of HTML::PageTransitionEvent fallible
2023-02-18 00:52:47 +01:00
Kenneth Myhra
8fbd43cb27
LibWeb: Make factory method of CSS::ResolvedCSSStyleDeclaration fallible
2023-02-18 00:52:47 +01:00
Kenneth Myhra
bc02686ae9
LibWeb: Make factory method of CSS::MediaQueryList fallible
2023-02-18 00:52:47 +01:00
Kenneth Myhra
7ec444047c
LibWeb: Make factory methods of HTML::MessageEvent fallible
2023-02-18 00:52:47 +01:00
Kenneth Myhra
58af8e2021
LibWeb: Make factory method of Crypto::Crypto fallible
2023-02-18 00:52:47 +01:00
Timothy Flynn
88814acbd3
LibJS+Everywhere: Convert JS::Error to String
...
This includes an Error::create overload to create an Error from a UTF-8
StringView. If creating a String from that view fails, the factory will
return an OOM InternalError instead. VM::throw_completion can also make
use of this overload via its perfect forwarding.
2023-02-17 09:14:23 -05:00
Sam Atkins
d6075ef5b5
LibTextCodec+Everywhere: Make TextCodec::decoder_for() take a StringView
...
We don't need a full String/DeprecatedString inside this function, so we
might as well not force users to create one.
2023-02-15 12:48:26 -05:00
Timothy Flynn
c3abb1396c
LibJS+LibWeb: Convert string view PrimitiveString instances to String
...
First, this adds an overload of PrimitiveString::create for StringView.
This overload will throw an OOM completion if creating a String fails.
This is not only a bit more convenient, but it also ensures at compile
time that all PrimitiveString::create(string_view) invocations will be
handled as String and OOM-aware.
Next, this wraps all invocations to PrimitiveString::create(string_view)
with MUST_OR_THROW_OOM.
A small PrimitiveString::create(DeprecatedFlyString) overload also had
to be added to disambiguate between the StringView and DeprecatedString
overloads.
2023-02-09 17:13:33 +00:00
Timothy Flynn
b75b7f0c0d
LibJS+Everywhere: Propagate Cell::initialize errors from Heap::allocate
...
Callers that are already in a fallible context will now TRY to allocate
cells. Callers in infallible contexts get a FIXME.
2023-01-29 00:02:45 +00:00
Linus Groh
afc055c088
LibWeb: Convert the Location object to IDL
...
This includes:
- Moving it from Bindings/ to HTML/
- Renaming it from LocationObject to Location
- Removing the manual definitions of the constructor and prototype
- Removing special handling of the Location interface from the bindings
generator
- Converting the JS_DEFINE_NATIVE_FUNCTIONs to regular functions
returning DeprecatedString instead of PrimitiveString
- Adding missing (no-op) setters for the various attributes, which are
expected to exist by the bindings generator
2023-01-18 17:36:39 -05:00
Cameron Youell
204257526c
LibWeb: Define window.isSecureContext
2023-01-18 09:52:47 +00:00
Timothy Flynn
afeb7273cc
LibJS+Everywhere: Rename Value::to_string to to_deprecated_string
2023-01-15 01:00:20 +00:00