summaryrefslogtreecommitdiff
path: root/Userland/Libraries
AgeCommit message (Collapse)Author
2021-07-10LibVideo/VP9: Finish implementing block decoding (6.4.4)FalseHonesty
Though technically block decoding calls into some other incomplete methods, so it isn't functionally complete yet. However, we are very close to being done with the 6.4.X sections :)
2021-07-10LibVideo/VP9: Implement parsing Token and MoreCoefs treesFalseHonesty
These elements were being used in the new tokens implementation, so support for them in the TreeParser has been added. Additionally, this uncovered a bug where the nonzero contexts were being cleared with the wrong size.
2021-07-10LibVideo/VP9: Implement token parsing (6.4.24-6.4.26)FalseHonesty
Note that this now requires a couple new syntax types to be parsed in the TreeParser, so a follow-up commit will implement that behavior.
2021-07-10LibVideo/VP9: Implement sections 6.1.2 and 8.4.1-8.4.4FalseHonesty
These section implement the behavior to refresh the probability tables after parsing a frame.
2021-07-10LibVideo/VP9: Begin reference frame update process (8.10)FalseHonesty
This was required for correctly parsing more than one frame's height/width data properly. Additionally, start handling failure a little more gracefully. Since we don't fully parse a tile before starting to parse the next tile, we will now no longer make it past the first tile mark, meaning we should not handle that scenario well.
2021-07-10LibVideo/VP9: Rename Decoder -> Parser & create an actual Decoder classFalseHonesty
The class that was previously named Decoder handled section 6.X.X of the spec, which actually deals with parsing out the syntax of the data, not the actual decoding logic which is specified in section 8.X.X. The new Decoder class will be in charge of owning and running the Parser, as well as implementing all of the decoding behavior.
2021-07-10LibVideo/VP9: Start parsing residuals (6.4.21-6.4.23)FalseHonesty
Additionally, this uncovered a couple bugs with existing code, so those have been fixed. Currently, parsing a whole video does fail because we are now using a new calculation for frame width, but it hasn't been fully implemented yet.
2021-07-10LibVideo/VP9: Refactor how above & left contexts are stored & clearedFalseHonesty
These make more sense as Vectors, and it makes it much easier to manage their sizing.
2021-07-10LibVideo/VP9: Specify which spec section defines certain behaviorsFalseHonesty
2021-07-10LibVideo/VP9: Clean up formatting & use range-based for loopsFalseHonesty
2021-07-10LibVideo/VP9: Implement simple FIXMEs that use now supported dataFalseHonesty
2021-07-10LibVideo/VP9: Implement more TreeParser probability calculationsFalseHonesty
Now TreeParser has mostly complete probability calculation implementations for all currently used syntax elements. Some of these calculation methods aren't actually finished because they use data we have yet to parse in the Decoder, but they're close to finished.
2021-07-10LibVideo/VP9: Implement syntax element counting for supported elementsFalseHonesty
With the progress made in the Decoder thus far, we have the ability to support most of the syntax element counters in the tree parser. Additionally, it will now crash when trying to count unsupported elements.
2021-07-10LibJS: Pad abs(year) < 1000 with zeros in Date.prototype.toString()Linus Groh
2021-07-10LibJS: Make parse_simplified_iso8601() use Optional<int> instead of -1Linus Groh
...for the non-success state. This fixes a crash when parsing dates with the year -1, as we would assert successful parsing ("year != -1"). Mixing Optional and -1 seems worse and more complicated than just using Optional for all the values, so I did that instead.
2021-07-10LibJS: Make Date.now() return a floor()'d milliseconds valueLinus Groh
It is defined as follows: 21.4.3.1 Date.now ( ) https://tc39.es/ecma262/#sec-date.now The now function returns the time value designating the UTC date and time of the occurrence of the call to now. "Time value" is defined as: 21.4.1.1 Time Values and Time Range https://tc39.es/ecma262/#sec-time-values-and-time-range An ECMAScript time value is a Number, either a finite integral Number representing an instant in time to millisecond precision or NaN representing no specific instant. By flooring the value we match the behavior in the Temporal proposal's Temporal.ZonedDateTime.prototype.epochMilliseconds getter: 4. Let ms be RoundTowardsZero(ℝ(ns) / 10^6). With that being defined as: 13.30 RoundTowardsZero ( x ) https://tc39.es/proposal-temporal/#sec-temporal-roundtowardszero 1. Return the mathematical value that is the same sign as x and whose magnitude is floor(abs(x)). This is makes the last of the currently 15 Temporal tests in test262 work, which compares Temporal.now.instant() with Date.now() :^)
2021-07-10LibRegex: Use the parser state capture group count in BREAli Mohammad Pur
Otherwise the users won't know how many capture groups are in the parsed regular expression.
2021-07-10LibRegex: Correctly parse BRE bracket expressionsAli Mohammad Pur
Commonly, bracket expressions are in fact, enclosed in brackets.
2021-07-10LibGUI: Only repaint the affected indices on AbstractView item hoverAndreas Kling
Previously, moving the cursor over items in an item view would cause it to repaint itself completely. Now we only repaint the two affected items (the old hovered item and the new hovered item.)
2021-07-10LibGUI: Tighten paint invalidation rects in item views :^)Andreas Kling
AbstractView now has a paint_invalidation_rect(index) function that subclasses can override to provide a tighter invalidation rect for an index.
2021-07-10LibGUI: Add AbstractView::editing_rect() to allow custom editing rectsAndreas Kling
This allows view classes to customize the editing rect for an index.
2021-07-10LibJS: Implement RegExp.prototype.hasIndices proposalTimothy Flynn
https://tc39.es/proposal-regexp-match-indices/
2021-07-10LibJS: Parse the RegExp.prototype.hasIndices flagTimothy Flynn
2021-07-10LibJS: Remove ECMAScriptFlags value from JS_ENUMERATE_REGEXP_FLAGSTimothy Flynn
All regex flags supported by LibJS currently correspond to a LibRegex option, but this is not the case for the RegExp.prototype.hasIndices proposal, which is handled entirely in RegExpBuiltinExec. Remove the flag mapping to prepare for this. This incurs a bit of an optimization loss in the flag getters, as we now do a substring search, but we can revisit the getter implementation if it becomes an issue.
2021-07-10LibJS: Implement RegExp.prototype.source according to the specTimothy Flynn
RegExp.prototype.source must check if "this" object is the RegExp.prototype object before raising a TypeError.
2021-07-10LibJS: Implement RegExp.prototype.<flag name> according to the specTimothy Flynn
The flag getters (e.g. RegExp.prototype.unicode) must specially handle when "this" object is the RegExp.prototype object.
2021-07-10LibJS: Add Temporal.Instant.prototype.valueOfIdan Horowitz
2021-07-10LibJS: Add a couple of missing specification links to Temporal.InstantIdan Horowitz
2021-07-10Terminal: Put debug spam in unimplemented_control_code() behind a flagAndreas Kling
2021-07-10LibGUI: Convert TextEditor to east-const styleTimothy
2021-07-10TextEditor+LibGUI: Use unveil and FileSystemAccessServerTimothy
Making use of the new FileSystemAccessServer we are able to use unveil without restricting our ability to open and save files. A file argument will be unveiled automatically however all other files require user action via the FileSystemAccessServer to gain access.
2021-07-10LibRegex: Add support for non-extended regular expressions in regcomp()Ali Mohammad Pur
Fixes part of #8506.
2021-07-10LibRegex: Add support for the Basic POSIX regular expressionsAli Mohammad Pur
This implements the internal regex stuff for #8506.
2021-07-10LibRegex: Make the bytecode transformation functions staticAli Mohammad Pur
They were pretty confusing when compared with other non-transforming functions.
2021-07-10LibWeb: Avoid HashMap copy in BrowsingContext::set_frame_nesting_levelsAndreas Kling
2021-07-10LibGUI: Rename "to_gmousebutton" => "to_mouse_button"networkException
2021-07-10LibELF: Make sure calls to _fixup_plt_entry use a properly aligned stackGunnar Beutner
2021-07-10Kernel+Userland: Make the stack alignment comply with the System V ABIGunnar Beutner
The System V ABI for both x86 and x86_64 requires that the stack pointer is 16-byte aligned on entry. Previously we did not align the stack pointer properly. As far as "main" was concerned the stack alignment was correct even without this patch due to how the C++ _start function and the kernel interacted, i.e. the kernel misaligned the stack as far as the ABI was concerned but that misalignment (read: it was properly aligned for a regular function call - but misaligned in terms of what the ABI dictates) was actually expected by our _start function.
2021-07-10LibGUI: Only repaint grabbable part of Splitter when hovered/unhoveredAndreas Kling
Before this change, we would repaint the Splitter and all of its split children when hovering over it. Now we only repaint the grabbable part.
2021-07-10LibVT: Reset scrollbar after switching to/from the alternate bufferDaniel Bertalan
We did not call the history change callback after switching to the alternate screen buffer, which caused the scrollbar to not change its maximum value. If we already had lines in the scrollback buffer, this meant that we could drag the scrollbar, which then tried to access non-existent lines from the scrollback. Fixes #8581
2021-07-09LibGUI: Remove left margin on MessageBox text when icon is unsetLuK1337
It looks better when text is properly centered.
2021-07-09LibJS: Add %TypedArray%.prototype.toLocaleStringIdan Horowitz
2021-07-09LibJS: Use PropertyName instead of StringOrSymbol in Object::invoke()Idan Horowitz
This prevents the unnecessary PropertyName -> StringOrSymbol -> PropertyName conversion.
2021-07-09LibGfx: Improve Painter::draw_line() alignment with (thickness > 1)Andreas Kling
Thicker lines are drawn by filling rectangles along the path. Previously these rectangles used the points as their top left corner. This patch changes it to use the points as the center of the rectangles which makes the PixelPaint line tool feel a lot more natural. :^)
2021-07-09LibC: Make sure crt0 and crt0_shared are built before LibCGunnar Beutner
We need these two object files in order for ld to work. Fixes #4538.
2021-07-09LibJS: Implement RegExp.prototype [ @@split ]Timothy Flynn
2021-07-09LibJS: Implement RegExpBuiltinExec closer to the specTimothy Flynn
Our RegExpBuiltinExec implementation differed from the spec in some areas such as handling of the sticky/global flags and updating the lastIndex property.
2021-07-09LibRegex: Break from execution loop when the sticky flag is setTimothy Flynn
If the sticky flag is set, the regex execution loop should break immediately even if the execution was a failure. The specification for several RegExp.prototype methods (e.g. exec and @@split) rely on this behavior.
2021-07-09LibJS: Implement RegExp constructor according to the specTimothy Flynn
This allows passing an existing RegExp object (or an object that is sufficiently like a RegExp object) as the "pattern" argument of the RegExp constructor.
2021-07-09LibJS: Do not use "this" object in RegExpExecTimothy Flynn
As an abstraction, RegExpExec should not assume that the RegExp object being used is "this" object. Instead, it should only interact with the provided object. This prepares for some methods, such as @@split, which invoke RegExpExec with a secondary RegExp object.