summaryrefslogtreecommitdiff
path: root/Userland
AgeCommit message (Collapse)Author
2021-10-17LibDebug: Make use of the newly supported data formsDaniel Bertalan
With this change, our DWARF 5 support is nearly feature-complete.
2021-10-17LibDebug: Support `DW_FORM_data16`Daniel Bertalan
Clang emits this form at all debug levels.
2021-10-17LibDebug: Support `addrx*`, `strx*` and `rnglistx` formsDaniel Bertalan
These forms were introduced in DWARF5, and have a fair deal of advantages over the more traditional encodings: they reduce the size of the binary and the number of relocations. GCC does not emit these with `-g1` by default, but Clang does at all debug levels.
2021-10-17LibDebug: Don't expose AttributeValue internals, use getters insteadDaniel Bertalan
This will be needed when we add `DW_FORM_strx*` and `DW_FORM_addrx*` support, which requires us to fetch `DW_AT_str_offsets_base` and `DW_AT_addr_base` attributes from the parent compilation unit. This can't be done as we read the values, because it would create infinite recursion (as we might try to parse the compilation unit's `DW_FORM_strx*` encoded name before we get to the attribute). Having getters ensures that we will perform lookups if they are needed.
2021-10-17LibCoredump: Accept dynamic libraries with versioned namesDaniel Bertalan
Our Clang toolchain uses versioned names for its shared libraries, meaning that our applications link against `libc++.so.1.0`, not simply `libc++.so`. Without this change, the LLVM runtime libraries are excluded from backtraces, which makes debugging toolchain issues harder.
2021-10-17LibC: Primitively implement wcsxfrmDaniel Bertalan
The `wcsxfrm` function copies a wide character string into a buffer, such that comparing the new string against any similarly pre-processed string with `wcscmp` produces the same result as if the original strings were compared with `wcscoll`. Our current `wcscoll` implementation is simply an alias for `wcscmp`, so `wcsxfrm` needs to perform no actions other than copying the string.
2021-10-17LibC: Implement wcslcpyDaniel Bertalan
2021-10-17LibC: Fix wcsrchr declaration to return a non-const wchar*Daniel Bertalan
This is how the standard specifies it; similarly to the already correctly declared wcschr function.
2021-10-17LibC: Stub out mbsnrtowcsDaniel Bertalan
2021-10-17LibC: Stub out wcsnrtombsDaniel Bertalan
2021-10-17LibC: Implement wmemcmpDaniel Bertalan
2021-10-17LibC: Add ELAST errno macroDaniel Bertalan
The ELAST macro is used on many systems to refer to the largest possible valid errno value. LLVM's libc++ uses errno values of ELAST+1 and ELAST+2 internally, and defines an arbitrary fallback value for platforms which don't have the macro. This means that it's possible for their internal errno numbers could coincide with values we actually use, which would be a very bad thing.
2021-10-17LibC: Forward-declare `struct tm` in wchar.hDaniel Bertalan
The C standard specifies that this forward-declaration be present in wchar.h, and is needed in order to build libstdc++.
2021-10-17FontEditor: Accept file dropsKarol Kosek
2021-10-17FontEditor: Add FontEditorWidget::open_file() functionKarol Kosek
This part is also quite needed when opening files from drag-and-drop events.
2021-10-17FontEditor: Reuse the request_close() function in Open actionKarol Kosek
2021-10-17LibWeb: Implement the Element attributes getterTimothy Flynn
2021-10-17LibWeb: Reimplement Element attribute related methods with NamedNodeMapTimothy Flynn
2021-10-17LibWeb: Implement (most of) NamedNodeMap to store attributesTimothy Flynn
2021-10-17LibWeb: Set an attribute's owning element when it is knownTimothy Flynn
2021-10-17LibWeb: Implement Attribute closer to the spec and with an IDL fileTimothy Flynn
Note our Attribute class is what the spec refers to as just "Attr". The main differences between the existing implementation and the spec are just that the spec defines more fields. Attributes can contain namespace URIs and prefixes. However, note that these are not parsed in HTML documents unless the document content-type is XML. So for now, these are initialized to null. Web pages are able to set the namespace via JavaScript (setAttributeNS), so these fields may be filled in when the corresponding APIs are implemented. The main change to be aware of is that an attribute is a node. This has implications on how attributes are stored in the Element class. Nodes are non-copyable and non-movable because these constructors are deleted by the EventTarget base class. This means attributes cannot be stored in a Vector or HashMap as these containers assume copyability / movability. So for now, the Vector holding attributes is changed to hold RefPtrs to attributes instead. This might change when attribute storage is implemented according to the spec (by way of NamedNodeMap).
2021-10-17LibWeb: Alphabetize LibWeb's forward and JS wrapper declarationsTimothy Flynn
2021-10-17sysctl: Allow showing or setting multiple variablesSeekingBlues
The `-w` option is enforced when setting variables.
2021-10-17LibC: Implement wctobTim Schumacher
2021-10-17LibC: Implement mbstowcsTim Schumacher
2021-10-17LibC: Implement wctombTim Schumacher
2021-10-17LibJS: Convert to_property_key() to ThrowCompletionOrIdan Horowitz
2021-10-17LibJS: Convert to_double() to ThrowCompletionOrIdan Horowitz
2021-10-17LibJS: Convert to_bigint_uint64() to ThrowCompletionOrIdan Horowitz
2021-10-17LibJS: Convert to_bigint_int64() to ThrowCompletionOrIdan Horowitz
2021-10-17LibJS: Convert to_bigint() to ThrowCompletionOrIdan Horowitz
2021-10-17LibJS: Convert to_numeric() to ThrowCompletionOrIdan Horowitz
2021-10-17LibWeb: Implement Event.composedPathLuke Wilde
I originally implemented this as something to use the new sequence wrapper, however, after having a look at uses with grep.app, it's used often, for example: - Bootstrap 5 Dropdowns - Polymer - Angular - Closure
2021-10-16PixelPaint: Create an empty layer when the last layer is removedFelix Rauch
Previously, when the last layer got deleted, the active layer was set to nullptr, causing a crash. Now, we create a new transparent background layer with the image dimensions instead.
2021-10-16LibWeb: Serialize selectors only in CSSStyleRule::selector_text()Sam Atkins
Previously, this was returning the serialization for the whole style rule, which isn't what we want.
2021-10-16LibWeb: Use the serialize_a_{identifier,string} algorithms for selectorsSam Atkins
Also fixed that serializing an attribute selector never output the value.
2021-10-16LibWeb: Insert commas between serialized CSS selectorsSam Atkins
For convenience, we create a Formatter for Selector, so we can use `StringBuilder.join()`.
2021-10-16LibWeb: Fix pseudo-element selector serializationSam Atkins
We want to check the last SimpleSelector, not the first one. We don't have to check that a SimpleSelector exists since a CompoundSelector without one is invalid.
2021-10-16LibWeb: Fix CSS selector combinator serializationSam Atkins
Two bugs here: - We were looking at the wrong CompoundSelector's combinator. - We weren't adding a space after the combinator.
2021-10-16LibWeb: Move CSS selector-serialization code to Selector.{h,cpp}Sam Atkins
Also, renamed `builder` to `s` to match spec comments, and fixed a find-and-replace typo where some pseudo-class names were "last-of-pseudo_class" instead of "last-of-type".
2021-10-16LibWeb: Implement more CSS serializers and make them more ergonomicSam Atkins
This implements these algorithms from the CSSOM-1 spec: - serialize a string - serialize a URL Also, we now have two versions of each of the serialization functions: One that returns a String as before, and the other that takes a StringBuilder to write into. This saves creating extra StringBuilders when they are not needed. :^)
2021-10-16LibWeb: Remove old ANPlusB parsing codeSam Atkins
This was left over from the old CSS parser, so we no longer need it. :^)
2021-10-16LibWeb: Implement Node.getRootNodeLuke Wilde
2021-10-15SystemMonitor: Use a TableView to display the thread stackRodrigo Tobar
Using a table display this information in a much more organised and flexible way than than what can be achieved with a TextEditor.
2021-10-15SystemMonitor: Remove unnecessary header inclusionRodrigo Tobar
2021-10-15LibSymbolication: Make Symbol comparableRodrigo Tobar
All its members are comparable themselves, so this can be defaulted. Making it comparable will allow us, among other things, to check if a list of symbols (i.e., the result of calling the symbolicate functions) is equal or not to another, which in turn will allow us to avoid refreshing the SystemMonitor's Stack tab when successive symbolicated stacks are the same.
2021-10-15LibC: Implement mbsrtowcsTim Schumacher
2021-10-15LibC: Implement wcsrtombsTim Schumacher
2021-10-15LibC: Implement wcrtombDaniel Bertalan
This function converts a single wide character into its multibyte representation (UTF-8 in our case). It is called from libc++'s `std::basic_ostream<wchar_t>::flush`, which gets called at program exit from a global destructor in order to flush `std::wcout`.
2021-10-15LibC: Partially implement wcwidthTim Schumacher