mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 23:07:34 +00:00
LibWeb: Add HTMLPreElement width property
This commit is contained in:
parent
2e8ff1855c
commit
089a98607c
5 changed files with 54 additions and 1 deletions
3
Tests/LibWeb/Text/expected/HTML/pre-width.txt
Normal file
3
Tests/LibWeb/Text/expected/HTML/pre-width.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
1. 20
|
||||||
|
2. 0
|
||||||
|
3. 0
|
29
Tests/LibWeb/Text/input/HTML/pre-width.html
Normal file
29
Tests/LibWeb/Text/input/HTML/pre-width.html
Normal 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>
|
|
@ -8,6 +8,7 @@
|
||||||
#include <LibWeb/CSS/StyleProperties.h>
|
#include <LibWeb/CSS/StyleProperties.h>
|
||||||
#include <LibWeb/CSS/StyleValues/IdentifierStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/IdentifierStyleValue.h>
|
||||||
#include <LibWeb/HTML/HTMLPreElement.h>
|
#include <LibWeb/HTML/HTMLPreElement.h>
|
||||||
|
#include <LibWeb/HTML/Numbers.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
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)));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
#include <LibWeb/ARIA/Roles.h>
|
#include <LibWeb/ARIA/Roles.h>
|
||||||
#include <LibWeb/HTML/HTMLElement.h>
|
#include <LibWeb/HTML/HTMLElement.h>
|
||||||
|
#include <LibWeb/WebIDL/Types.h>
|
||||||
|
|
||||||
namespace Web::HTML {
|
namespace Web::HTML {
|
||||||
|
|
||||||
|
@ -21,6 +22,9 @@ public:
|
||||||
// https://www.w3.org/TR/html-aria/#el-pre
|
// https://www.w3.org/TR/html-aria/#el-pre
|
||||||
virtual Optional<ARIA::Role> default_role() const override { return ARIA::Role::generic; }
|
virtual Optional<ARIA::Role> default_role() const override { return ARIA::Role::generic; }
|
||||||
|
|
||||||
|
WebIDL::Long width() const;
|
||||||
|
WebIDL::ExceptionOr<void> set_width(WebIDL::Long);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HTMLPreElement(DOM::Document&, DOM::QualifiedName);
|
HTMLPreElement(DOM::Document&, DOM::QualifiedName);
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,6 @@ interface HTMLPreElement : HTMLElement {
|
||||||
[HTMLConstructor] constructor();
|
[HTMLConstructor] constructor();
|
||||||
|
|
||||||
// Obsolete
|
// Obsolete
|
||||||
// FIXME: [CEReactions, Reflect] attribute long width;
|
[CEReactions] attribute long width;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue