summaryrefslogtreecommitdiff
path: root/Userland/Libraries
AgeCommit message (Collapse)Author
2021-10-15LibJS: Implement ShadowRealm.prototype.importValue()Linus Groh
Well... sort of. This adds the function itself and all the scaffolding from the ShadowRealm API (and basically completes its implementation). However, we do not nearly have enough support for modules and imports, so we currently pretend whatever was attempted to be imported failed - once we have HostImportModuleDynamically it should be relatively easy to complete the implementation.
2021-10-15LibJS: Don't return empty value from PromiseReactionJob::call(), for nowLinus Groh
2021-10-15LibJS/Tests: Test ShadowRealm.prototype.evaluate() this value type checkLinus Groh
2021-10-15LibJS: Fix typo in LHS Object and RHS BigInt loosely equals checkLuke Wilde
Step 12 was using `lhs.is_bigint()` instead of `rhs.is_bigint()`, meaning you got: ```js 1n == Object(1n); // true Object(1n) == 1n; // false ``` This also adds spec comments to is_loosely_equal.
2021-10-15LibWeb: Compute horizontal overflow for the initial containing blockAndreas Kling
This finally allows LibWeb to scroll pages horizontally instead of just clipping things at the right edge.
2021-10-14LibJS: Use GlobalObject::associated_realm() for function object realmsLinus Groh
As outlined in the previous commit, this should be more reliable than Interpreter::realm(), as we don't always have access to an Interpreter.
2021-10-14LibJS: Add a way to get from a GlobalObject to its associated RealmLinus Groh
This is just another workaround, but it should be much more reliable than Interpreter::realm(), especially when allocating NativeFunctions and ECMAScriptFunctionObjects: we're guaranteed to have a GlobalObject at that point, and it likely was set as the GlobalObject of a Realm and can lead us back to it. We're however not guaranteed that the VM can give us an Interpreter, which is why functions in LibWeb can be a bit crashy at the moment. We use a WeakPtr<Realm> to properly handle the unlikely case where the Realm goes away after associating a GlobalObject to it. We'll always need _something_ of this sort if we want to support OrdinaryFunctionCreate and CreateBuiltinFunction without the explicit realm argument while no JS is running, because they want to use the current Realm Record (always in the first and as fallback in the second case).
2021-10-14LibWeb: Implement position:fixed painting at the stacking context levelAndreas Kling
This makes everything within the stacking context stick show up in the correct position.
2021-10-14LibWeb: Cleanup + spec comments in replaced element height computationAndreas Kling
2021-10-14LibWeb: Cleanup + spec comments in replaced element width computationAndreas Kling
2021-10-14LibWeb: Introduce simple scrollable overflow, size ICB to viewportAndreas Kling
Per spec, the initial containing block (ICB) should have the size of the viewport. We have only done this for the width until now, since we had no way to express scrollable overflow. This patch adds Layout::Box::m_overflow_data, an optional struct that can hold on to information about a box's overflow. Then we have BFC set the ICB up with some scrollable overflow instead of sizing it to fit its content vertically. This fixes a number of broken layouts where correctness depends on having the appropriate ICB height.
2021-10-14LibWeb: Make ReplacedBox intrinsic size setters take Optional<float>Andreas Kling
This allows callers to unset the respective intrinsic sizes by passing an empty Optional.
2021-10-14LibWeb: Use Box::has_intrinsic_aspect_ratio() check in FFC step 3Andreas Kling
Now that we can ask any Box about its intrinsic aspect ratio, let's fix a FIXME in FlexFormattingContext.
2021-10-14LibWeb: Rename "intrinsic ratio" => "intrinsic aspect ratio"Andreas Kling
2021-10-14LibWeb: Make intrinsic width/height/ratio a Box concept and simplify itAndreas Kling
Apparently it's not only replaced elements that can have intrinsic sizes, so let's move this concept from ReplacedBox to Box. To avoid bloating Box, we make the accessors virtual.
2021-10-14LibJS: Change normal_completion() parameter to Optional<Value>Linus Groh
The Completion constructor `VERIFY()`s that the passed argument is not an empty Value, so normal_completion({}) would crash (although it's currently not being used anywhere). We want to pass an empty Optional<Value> instead.
2021-10-14LibWeb: Stub out a basic IntersectionObserver interfaceTimothy Flynn
Note there are a couple of type differences between the spec and the IDL file added in this commit. For example, we will need to support a type of Variant to handle spec types such as "(double or sequence<double>)". But for now, this allows web pages to construct an IntersectionObserver with any valid type.
2021-10-14LibJS: Implement ShadowRealm.prototype.evaluate()Linus Groh
2021-10-14LibJS: Implement ShadowRealm.prototype[@@toStringTag]Linus Groh
2021-10-14LibJS: Start implementing ShadowRealmLinus Groh
This commit adds the ShadowRealm object itself, its constructor, and prototype (currently empty).
2021-10-14LibJS: Implement Wrapped Function Exotic ObjectsLinus Groh
This is a new concept from the ShadowRealm API stage 3 proposal: https://tc39.es/proposal-shadowrealm/#sec-wrapped-function-exotic-objects
2021-10-13LibWeb: Add spec comments to FFC layout algorithm step 2Andreas Kling
2021-10-13LibWeb: Add spec comments to FFC layout algorithm step 5Andreas Kling
2021-10-13LibWeb: Tidy up and add spec comments to FFC layout algorithm step 3Andreas Kling
2021-10-13LibWeb: Add CSS::FlexBasisData::is_definite()Andreas Kling
This will allow some more expressive code in FlexFormattingContext.
2021-10-13LibWeb: Add FFC::flex_container() and use throughoutAndreas Kling
Since FFC is only ever run() on the flex container, we can assume (but verify) that the run box is the flex container and use an accessor throughout. The end result: less parameter passing.
2021-10-13LibWeb: Make FFC line and item vectors members instead of localsAndreas Kling
This gives all member functions access to these vectors without having to pass them as arguments.
2021-10-13LibWeb: Make various function parameters const in FlexFormattingContextAndreas Kling
This is mainly to validate that inputs are treated as inputs only and don't get written to.
2021-10-13LibWeb: Move FFC layout algorithm step 16 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 15 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 14 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 12 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 11 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 8 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 7 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 6 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 5 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 4 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 3 to a separate functionAndreas Kling
2021-10-13LibWeb: Move FFC layout algorithm step 2 into a separate functionAndreas Kling
Determining the available main and cross space is now done by a separate function. The signature is a little bit hairy since this function computes some things that are used by subsequent algorithm steps. Factoring can definitely be improved further.
2021-10-13LibWeb: Turn FlexFormattingContext helper lambdas into member functionsAndreas Kling
Continuing on the quest towards making FlexFormattingContext readable.
2021-10-13LibWeb: Call the FlexFormattingContext context box "flow_container"Andreas Kling
This is what the spec calls it and makes the code much less ambiguous.
2021-10-13LibWeb: Split out FFC's "generate anonymous flex items" to a functionAndreas Kling
Let's begin splitting the FlexFormattingContext layout algorithm into separate functions to make it more manageable.
2021-10-13LibWeb: Fix bogus 'none' values for resolved min-width and min-heightAndreas Kling
In CSS 'none' is not a valid value for min-width or min-height. The fallback resolved value should be 'auto' for them.
2021-10-13LibWeb: CSS display:position does not imply definite sizeAndreas Kling
Per css-sizing-3: Additionally, the size of the containing block of an absolutely positioned element is always definite with respect to that element. As I understand this, it doesn't mean that all absolutely positioned boxes have definite size, but that the containing block of an absolutely positioned descendant has definite size from the perspective of the descendant.
2021-10-13LibC: Use the new pread syscall to implement preadRodrigo Tobar
This new implementation of pread saves two lseek system calls and is thread-safe thanks to it simply forwarding the call to the pread system call.
2021-10-13LibJS: Convert to_object() to ThrowCompletionOrLinus Groh
2021-10-13LibJS: Convert to_primitive() to ThrowCompletionOrLinus Groh
2021-10-13LibJS: Convert to_primitive_string() to ThrowCompletionOrLinus Groh
2021-10-13LibJS: Convert to_utf16_string() to ThrowCompletionOrLinus Groh