LibWeb: Add HTMLPreElement width property

This commit is contained in:
Bastiaan van der Plaat 2024-02-20 17:06:36 +01:00 committed by Andrew Kaster
parent 2e8ff1855c
commit 089a98607c
Notes: sideshowbarker 2024-07-16 22:22:13 +09:00
5 changed files with 54 additions and 1 deletions

View File

@ -0,0 +1,3 @@
1. 20
2. 0
3. 0

View File

@ -0,0 +1,29 @@
<script src="../include.js"></script>
<script>
test(() => {
let testCounter = 1;
function testPart(part) {
println(`${testCounter++}. ${JSON.stringify(part())}`);
}
// 1. Set the pre element width attributes
testPart(() => {
const pre = document.createElement('pre');
pre.width = 20;
return pre.width;
});
// 2. Set the pre element width attributes with invalid data
testPart(() => {
const pre = document.createElement('pre');
pre.width = 'dsafds';
return pre.width;
});
// 3. Get the pre element width attribute default value
testPart(() => {
const pre = document.createElement('pre');
return pre.width;
});
});
</script>

View File

@ -8,6 +8,7 @@
#include <LibWeb/CSS/StyleProperties.h>
#include <LibWeb/CSS/StyleValues/IdentifierStyleValue.h>
#include <LibWeb/HTML/HTMLPreElement.h>
#include <LibWeb/HTML/Numbers.h>
namespace Web::HTML {
@ -36,4 +37,20 @@ void HTMLPreElement::apply_presentational_hints(CSS::StyleProperties& style) con
});
}
// https://html.spec.whatwg.org/multipage/obsolete.html#dom-pre-width
WebIDL::Long HTMLPreElement::width() const
{
// The width IDL attribute of the pre element must reflect the content attribute of the same name.
if (auto width_string = get_attribute(HTML::AttributeNames::width); width_string.has_value()) {
if (auto width = parse_integer(*width_string); width.has_value())
return *width;
}
return 0;
}
WebIDL::ExceptionOr<void> HTMLPreElement::set_width(WebIDL::Long width)
{
return set_attribute(HTML::AttributeNames::width, MUST(String::number(width)));
}
}

View File

@ -8,6 +8,7 @@
#include <LibWeb/ARIA/Roles.h>
#include <LibWeb/HTML/HTMLElement.h>
#include <LibWeb/WebIDL/Types.h>
namespace Web::HTML {
@ -21,6 +22,9 @@ public:
// https://www.w3.org/TR/html-aria/#el-pre
virtual Optional<ARIA::Role> default_role() const override { return ARIA::Role::generic; }
WebIDL::Long width() const;
WebIDL::ExceptionOr<void> set_width(WebIDL::Long);
private:
HTMLPreElement(DOM::Document&, DOM::QualifiedName);

View File

@ -7,6 +7,6 @@ interface HTMLPreElement : HTMLElement {
[HTMLConstructor] constructor();
// Obsolete
// FIXME: [CEReactions, Reflect] attribute long width;
[CEReactions] attribute long width;
};