LibWeb: Honor the various margin attributes in HTMLBodyElement

This one is particularly weird as there's a priority order, and we even
have to look at attributes from the container element if we're inside a
subframe.
This commit is contained in:
Andreas Kling 2024-11-23 11:44:06 +01:00 committed by Andreas Kling
parent 97aa608c13
commit e781aab274
Notes: github-actions[bot] 2024-11-23 13:43:53 +00:00
3 changed files with 297 additions and 259 deletions

View file

@ -32,6 +32,7 @@ namespace AttributeNames {
__ENUMERATE_HTML_ATTRIBUTE(axis) \
__ENUMERATE_HTML_ATTRIBUTE(background) \
__ENUMERATE_HTML_ATTRIBUTE(behavior) \
__ENUMERATE_HTML_ATTRIBUTE(bottommargin) \
__ENUMERATE_HTML_ATTRIBUTE(bgcolor) \
__ENUMERATE_HTML_ATTRIBUTE(border) \
__ENUMERATE_HTML_ATTRIBUTE(cellpadding) \
@ -104,6 +105,7 @@ namespace AttributeNames {
__ENUMERATE_HTML_ATTRIBUTE(label) \
__ENUMERATE_HTML_ATTRIBUTE(lang) \
__ENUMERATE_HTML_ATTRIBUTE(language) \
__ENUMERATE_HTML_ATTRIBUTE(leftmargin) \
__ENUMERATE_HTML_ATTRIBUTE(link) \
__ENUMERATE_HTML_ATTRIBUTE(list) \
__ENUMERATE_HTML_ATTRIBUTE(loading) \
@ -241,6 +243,7 @@ namespace AttributeNames {
__ENUMERATE_HTML_ATTRIBUTE(required) \
__ENUMERATE_HTML_ATTRIBUTE(rev) \
__ENUMERATE_HTML_ATTRIBUTE(reversed) \
__ENUMERATE_HTML_ATTRIBUTE(rightmargin) \
__ENUMERATE_HTML_ATTRIBUTE(rows) \
__ENUMERATE_HTML_ATTRIBUTE(rowspan) \
__ENUMERATE_HTML_ATTRIBUTE(rules) \
@ -274,6 +277,7 @@ namespace AttributeNames {
__ENUMERATE_HTML_ATTRIBUTE(target) \
__ENUMERATE_HTML_ATTRIBUTE(text) \
__ENUMERATE_HTML_ATTRIBUTE(title) \
__ENUMERATE_HTML_ATTRIBUTE(topmargin) \
__ENUMERATE_HTML_ATTRIBUTE(truespeed) \
__ENUMERATE_HTML_ATTRIBUTE(type) \
__ENUMERATE_HTML_ATTRIBUTE(usemap) \

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2020, Andreas Kling <andreas@ladybird.org>
* Copyright (c) 2018-2024, Andreas Kling <andreas@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -8,8 +8,10 @@
#include <LibWeb/CSS/StyleProperties.h>
#include <LibWeb/CSS/StyleValues/CSSColorValue.h>
#include <LibWeb/CSS/StyleValues/ImageStyleValue.h>
#include <LibWeb/CSS/StyleValues/LengthStyleValue.h>
#include <LibWeb/DOM/Document.h>
#include <LibWeb/HTML/HTMLBodyElement.h>
#include <LibWeb/HTML/Numbers.h>
#include <LibWeb/HTML/Parser/HTMLParser.h>
#include <LibWeb/HTML/Window.h>
#include <LibWeb/Layout/Node.h>
@ -57,6 +59,38 @@ void HTMLBodyElement::apply_presentational_hints(CSS::StyleProperties& style) co
style.set_property(CSS::PropertyID::BackgroundImage, *m_background_style_value);
}
});
auto get_margin_value = [&](auto const& first_body_attr_name, auto const& second_body_attr_name, auto const& container_frame_attr_name) -> Optional<String> {
if (auto value = get_attribute(first_body_attr_name); value.has_value())
return value.value();
if (auto value = get_attribute(second_body_attr_name); value.has_value())
return value.value();
auto navigable = document().navigable();
if (!navigable)
return {};
auto container = navigable->container();
if (!container)
return {};
if (auto value = container->get_attribute(container_frame_attr_name); value.has_value())
return value;
return {};
};
auto margin_top_value = get_margin_value(HTML::AttributeNames::marginheight, HTML::AttributeNames::topmargin, HTML::AttributeNames::marginheight);
auto margin_bottom_value = get_margin_value(HTML::AttributeNames::marginheight, HTML::AttributeNames::bottommargin, HTML::AttributeNames::marginheight);
auto margin_left_value = get_margin_value(HTML::AttributeNames::marginwidth, HTML::AttributeNames::leftmargin, HTML::AttributeNames::marginwidth);
auto margin_right_value = get_margin_value(HTML::AttributeNames::marginwidth, HTML::AttributeNames::rightmargin, HTML::AttributeNames::marginwidth);
auto apply_margin_value = [&](CSS::PropertyID property_id, Optional<String> const& value) {
if (!value.has_value())
return;
if (auto parsed_value = parse_non_negative_integer(value.value()); parsed_value.has_value())
style.set_property(property_id, CSS::LengthStyleValue::create(CSS::Length::make_px(*parsed_value)));
};
apply_margin_value(CSS::PropertyID::MarginTop, margin_top_value);
apply_margin_value(CSS::PropertyID::MarginBottom, margin_bottom_value);
apply_margin_value(CSS::PropertyID::MarginLeft, margin_left_value);
apply_margin_value(CSS::PropertyID::MarginRight, margin_right_value);
}
void HTMLBodyElement::attribute_changed(FlyString const& name, Optional<String> const& old_value, Optional<String> const& value, Optional<FlyString> const& namespace_)

View file

@ -6,340 +6,340 @@ Rerun
Found 588 tests
244 Pass
344 Fail
500 Pass
88 Fail
Details
Result Test Name MessageFail <iframe marginwidth="200"> mapping to marginLeft
Fail <iframe marginwidth="1007"> mapping to marginLeft
Fail <iframe marginwidth=" 00523 "> mapping to marginLeft
Fail <iframe marginwidth="200."> mapping to marginLeft
Fail <iframe marginwidth="200.25"> mapping to marginLeft
Fail <iframe marginwidth="200.7"> mapping to marginLeft
Fail <iframe marginwidth="0"> mapping to marginLeft
Fail <iframe marginwidth="-0"> mapping to marginLeft
Fail <iframe marginwidth="+0"> mapping to marginLeft
Fail <iframe marginwidth="+200"> mapping to marginLeft
Fail <iframe marginwidth="200in"> mapping to marginLeft
Fail <iframe marginwidth="200.25in"> mapping to marginLeft
Fail <iframe marginwidth=" +200in "> mapping to marginLeft
Fail <iframe marginwidth="200%"> mapping to marginLeft
Fail <iframe marginwidth="200.%"> mapping to marginLeft
Fail <iframe marginwidth="200.25%"> mapping to marginLeft
Result Test Name MessagePass <iframe marginwidth="200"> mapping to marginLeft
Pass <iframe marginwidth="1007"> mapping to marginLeft
Pass <iframe marginwidth=" 00523 "> mapping to marginLeft
Pass <iframe marginwidth="200."> mapping to marginLeft
Pass <iframe marginwidth="200.25"> mapping to marginLeft
Pass <iframe marginwidth="200.7"> mapping to marginLeft
Pass <iframe marginwidth="0"> mapping to marginLeft
Pass <iframe marginwidth="-0"> mapping to marginLeft
Pass <iframe marginwidth="+0"> mapping to marginLeft
Pass <iframe marginwidth="+200"> mapping to marginLeft
Pass <iframe marginwidth="200in"> mapping to marginLeft
Pass <iframe marginwidth="200.25in"> mapping to marginLeft
Pass <iframe marginwidth=" +200in "> mapping to marginLeft
Pass <iframe marginwidth="200%"> mapping to marginLeft
Pass <iframe marginwidth="200.%"> mapping to marginLeft
Pass <iframe marginwidth="200.25%"> mapping to marginLeft
Pass <iframe marginwidth="-200"> mapping to marginLeft
Pass <iframe marginwidth="-200px"> mapping to marginLeft
Pass <iframe marginwidth=" -200"> mapping to marginLeft
Pass <iframe marginwidth="+-200"> mapping to marginLeft
Pass <iframe marginwidth="-+200"> mapping to marginLeft
Fail <iframe marginwidth="200"> mapping to marginRight
Fail <iframe marginwidth="1007"> mapping to marginRight
Fail <iframe marginwidth=" 00523 "> mapping to marginRight
Fail <iframe marginwidth="200."> mapping to marginRight
Fail <iframe marginwidth="200.25"> mapping to marginRight
Fail <iframe marginwidth="200.7"> mapping to marginRight
Fail <iframe marginwidth="0"> mapping to marginRight
Fail <iframe marginwidth="-0"> mapping to marginRight
Fail <iframe marginwidth="+0"> mapping to marginRight
Fail <iframe marginwidth="+200"> mapping to marginRight
Fail <iframe marginwidth="200in"> mapping to marginRight
Fail <iframe marginwidth="200.25in"> mapping to marginRight
Fail <iframe marginwidth=" +200in "> mapping to marginRight
Fail <iframe marginwidth="200%"> mapping to marginRight
Fail <iframe marginwidth="200.%"> mapping to marginRight
Fail <iframe marginwidth="200.25%"> mapping to marginRight
Pass <iframe marginwidth="200"> mapping to marginRight
Pass <iframe marginwidth="1007"> mapping to marginRight
Pass <iframe marginwidth=" 00523 "> mapping to marginRight
Pass <iframe marginwidth="200."> mapping to marginRight
Pass <iframe marginwidth="200.25"> mapping to marginRight
Pass <iframe marginwidth="200.7"> mapping to marginRight
Pass <iframe marginwidth="0"> mapping to marginRight
Pass <iframe marginwidth="-0"> mapping to marginRight
Pass <iframe marginwidth="+0"> mapping to marginRight
Pass <iframe marginwidth="+200"> mapping to marginRight
Pass <iframe marginwidth="200in"> mapping to marginRight
Pass <iframe marginwidth="200.25in"> mapping to marginRight
Pass <iframe marginwidth=" +200in "> mapping to marginRight
Pass <iframe marginwidth="200%"> mapping to marginRight
Pass <iframe marginwidth="200.%"> mapping to marginRight
Pass <iframe marginwidth="200.25%"> mapping to marginRight
Pass <iframe marginwidth="-200"> mapping to marginRight
Pass <iframe marginwidth="-200px"> mapping to marginRight
Pass <iframe marginwidth=" -200"> mapping to marginRight
Pass <iframe marginwidth="+-200"> mapping to marginRight
Pass <iframe marginwidth="-+200"> mapping to marginRight
Fail <iframe marginheight="200"> mapping to marginTop
Fail <iframe marginheight="1007"> mapping to marginTop
Fail <iframe marginheight=" 00523 "> mapping to marginTop
Fail <iframe marginheight="200."> mapping to marginTop
Fail <iframe marginheight="200.25"> mapping to marginTop
Fail <iframe marginheight="200.7"> mapping to marginTop
Fail <iframe marginheight="0"> mapping to marginTop
Fail <iframe marginheight="-0"> mapping to marginTop
Fail <iframe marginheight="+0"> mapping to marginTop
Fail <iframe marginheight="+200"> mapping to marginTop
Fail <iframe marginheight="200in"> mapping to marginTop
Fail <iframe marginheight="200.25in"> mapping to marginTop
Fail <iframe marginheight=" +200in "> mapping to marginTop
Fail <iframe marginheight="200%"> mapping to marginTop
Fail <iframe marginheight="200.%"> mapping to marginTop
Fail <iframe marginheight="200.25%"> mapping to marginTop
Pass <iframe marginheight="200"> mapping to marginTop
Pass <iframe marginheight="1007"> mapping to marginTop
Pass <iframe marginheight=" 00523 "> mapping to marginTop
Pass <iframe marginheight="200."> mapping to marginTop
Pass <iframe marginheight="200.25"> mapping to marginTop
Pass <iframe marginheight="200.7"> mapping to marginTop
Pass <iframe marginheight="0"> mapping to marginTop
Pass <iframe marginheight="-0"> mapping to marginTop
Pass <iframe marginheight="+0"> mapping to marginTop
Pass <iframe marginheight="+200"> mapping to marginTop
Pass <iframe marginheight="200in"> mapping to marginTop
Pass <iframe marginheight="200.25in"> mapping to marginTop
Pass <iframe marginheight=" +200in "> mapping to marginTop
Pass <iframe marginheight="200%"> mapping to marginTop
Pass <iframe marginheight="200.%"> mapping to marginTop
Pass <iframe marginheight="200.25%"> mapping to marginTop
Pass <iframe marginheight="-200"> mapping to marginTop
Pass <iframe marginheight="-200px"> mapping to marginTop
Pass <iframe marginheight=" -200"> mapping to marginTop
Pass <iframe marginheight="+-200"> mapping to marginTop
Pass <iframe marginheight="-+200"> mapping to marginTop
Fail <iframe marginheight="200"> mapping to marginBottom
Fail <iframe marginheight="1007"> mapping to marginBottom
Fail <iframe marginheight=" 00523 "> mapping to marginBottom
Fail <iframe marginheight="200."> mapping to marginBottom
Fail <iframe marginheight="200.25"> mapping to marginBottom
Fail <iframe marginheight="200.7"> mapping to marginBottom
Fail <iframe marginheight="0"> mapping to marginBottom
Fail <iframe marginheight="-0"> mapping to marginBottom
Fail <iframe marginheight="+0"> mapping to marginBottom
Fail <iframe marginheight="+200"> mapping to marginBottom
Fail <iframe marginheight="200in"> mapping to marginBottom
Fail <iframe marginheight="200.25in"> mapping to marginBottom
Fail <iframe marginheight=" +200in "> mapping to marginBottom
Fail <iframe marginheight="200%"> mapping to marginBottom
Fail <iframe marginheight="200.%"> mapping to marginBottom
Fail <iframe marginheight="200.25%"> mapping to marginBottom
Pass <iframe marginheight="200"> mapping to marginBottom
Pass <iframe marginheight="1007"> mapping to marginBottom
Pass <iframe marginheight=" 00523 "> mapping to marginBottom
Pass <iframe marginheight="200."> mapping to marginBottom
Pass <iframe marginheight="200.25"> mapping to marginBottom
Pass <iframe marginheight="200.7"> mapping to marginBottom
Pass <iframe marginheight="0"> mapping to marginBottom
Pass <iframe marginheight="-0"> mapping to marginBottom
Pass <iframe marginheight="+0"> mapping to marginBottom
Pass <iframe marginheight="+200"> mapping to marginBottom
Pass <iframe marginheight="200in"> mapping to marginBottom
Pass <iframe marginheight="200.25in"> mapping to marginBottom
Pass <iframe marginheight=" +200in "> mapping to marginBottom
Pass <iframe marginheight="200%"> mapping to marginBottom
Pass <iframe marginheight="200.%"> mapping to marginBottom
Pass <iframe marginheight="200.25%"> mapping to marginBottom
Pass <iframe marginheight="-200"> mapping to marginBottom
Pass <iframe marginheight="-200px"> mapping to marginBottom
Pass <iframe marginheight=" -200"> mapping to marginBottom
Pass <iframe marginheight="+-200"> mapping to marginBottom
Pass <iframe marginheight="-+200"> mapping to marginBottom
Fail <frame marginwidth="200"> mapping to marginLeft
Fail <frame marginwidth="1007"> mapping to marginLeft
Fail <frame marginwidth=" 00523 "> mapping to marginLeft
Fail <frame marginwidth="200."> mapping to marginLeft
Fail <frame marginwidth="200.25"> mapping to marginLeft
Fail <frame marginwidth="200.7"> mapping to marginLeft
Fail <frame marginwidth="0"> mapping to marginLeft
Fail <frame marginwidth="-0"> mapping to marginLeft
Fail <frame marginwidth="+0"> mapping to marginLeft
Fail <frame marginwidth="+200"> mapping to marginLeft
Fail <frame marginwidth="200in"> mapping to marginLeft
Fail <frame marginwidth="200.25in"> mapping to marginLeft
Fail <frame marginwidth=" +200in "> mapping to marginLeft
Fail <frame marginwidth="200%"> mapping to marginLeft
Fail <frame marginwidth="200.%"> mapping to marginLeft
Fail <frame marginwidth="200.25%"> mapping to marginLeft
Pass <frame marginwidth="200"> mapping to marginLeft
Pass <frame marginwidth="1007"> mapping to marginLeft
Pass <frame marginwidth=" 00523 "> mapping to marginLeft
Pass <frame marginwidth="200."> mapping to marginLeft
Pass <frame marginwidth="200.25"> mapping to marginLeft
Pass <frame marginwidth="200.7"> mapping to marginLeft
Pass <frame marginwidth="0"> mapping to marginLeft
Pass <frame marginwidth="-0"> mapping to marginLeft
Pass <frame marginwidth="+0"> mapping to marginLeft
Pass <frame marginwidth="+200"> mapping to marginLeft
Pass <frame marginwidth="200in"> mapping to marginLeft
Pass <frame marginwidth="200.25in"> mapping to marginLeft
Pass <frame marginwidth=" +200in "> mapping to marginLeft
Pass <frame marginwidth="200%"> mapping to marginLeft
Pass <frame marginwidth="200.%"> mapping to marginLeft
Pass <frame marginwidth="200.25%"> mapping to marginLeft
Pass <frame marginwidth="-200"> mapping to marginLeft
Pass <frame marginwidth="-200px"> mapping to marginLeft
Pass <frame marginwidth=" -200"> mapping to marginLeft
Pass <frame marginwidth="+-200"> mapping to marginLeft
Pass <frame marginwidth="-+200"> mapping to marginLeft
Fail <frame marginwidth="200"> mapping to marginRight
Fail <frame marginwidth="1007"> mapping to marginRight
Fail <frame marginwidth=" 00523 "> mapping to marginRight
Fail <frame marginwidth="200."> mapping to marginRight
Fail <frame marginwidth="200.25"> mapping to marginRight
Fail <frame marginwidth="200.7"> mapping to marginRight
Fail <frame marginwidth="0"> mapping to marginRight
Fail <frame marginwidth="-0"> mapping to marginRight
Fail <frame marginwidth="+0"> mapping to marginRight
Fail <frame marginwidth="+200"> mapping to marginRight
Fail <frame marginwidth="200in"> mapping to marginRight
Fail <frame marginwidth="200.25in"> mapping to marginRight
Fail <frame marginwidth=" +200in "> mapping to marginRight
Fail <frame marginwidth="200%"> mapping to marginRight
Fail <frame marginwidth="200.%"> mapping to marginRight
Fail <frame marginwidth="200.25%"> mapping to marginRight
Pass <frame marginwidth="200"> mapping to marginRight
Pass <frame marginwidth="1007"> mapping to marginRight
Pass <frame marginwidth=" 00523 "> mapping to marginRight
Pass <frame marginwidth="200."> mapping to marginRight
Pass <frame marginwidth="200.25"> mapping to marginRight
Pass <frame marginwidth="200.7"> mapping to marginRight
Pass <frame marginwidth="0"> mapping to marginRight
Pass <frame marginwidth="-0"> mapping to marginRight
Pass <frame marginwidth="+0"> mapping to marginRight
Pass <frame marginwidth="+200"> mapping to marginRight
Pass <frame marginwidth="200in"> mapping to marginRight
Pass <frame marginwidth="200.25in"> mapping to marginRight
Pass <frame marginwidth=" +200in "> mapping to marginRight
Pass <frame marginwidth="200%"> mapping to marginRight
Pass <frame marginwidth="200.%"> mapping to marginRight
Pass <frame marginwidth="200.25%"> mapping to marginRight
Pass <frame marginwidth="-200"> mapping to marginRight
Pass <frame marginwidth="-200px"> mapping to marginRight
Pass <frame marginwidth=" -200"> mapping to marginRight
Pass <frame marginwidth="+-200"> mapping to marginRight
Pass <frame marginwidth="-+200"> mapping to marginRight
Fail <frame marginheight="200"> mapping to marginTop
Fail <frame marginheight="1007"> mapping to marginTop
Fail <frame marginheight=" 00523 "> mapping to marginTop
Fail <frame marginheight="200."> mapping to marginTop
Fail <frame marginheight="200.25"> mapping to marginTop
Fail <frame marginheight="200.7"> mapping to marginTop
Fail <frame marginheight="0"> mapping to marginTop
Fail <frame marginheight="-0"> mapping to marginTop
Fail <frame marginheight="+0"> mapping to marginTop
Fail <frame marginheight="+200"> mapping to marginTop
Fail <frame marginheight="200in"> mapping to marginTop
Fail <frame marginheight="200.25in"> mapping to marginTop
Fail <frame marginheight=" +200in "> mapping to marginTop
Fail <frame marginheight="200%"> mapping to marginTop
Fail <frame marginheight="200.%"> mapping to marginTop
Fail <frame marginheight="200.25%"> mapping to marginTop
Pass <frame marginheight="200"> mapping to marginTop
Pass <frame marginheight="1007"> mapping to marginTop
Pass <frame marginheight=" 00523 "> mapping to marginTop
Pass <frame marginheight="200."> mapping to marginTop
Pass <frame marginheight="200.25"> mapping to marginTop
Pass <frame marginheight="200.7"> mapping to marginTop
Pass <frame marginheight="0"> mapping to marginTop
Pass <frame marginheight="-0"> mapping to marginTop
Pass <frame marginheight="+0"> mapping to marginTop
Pass <frame marginheight="+200"> mapping to marginTop
Pass <frame marginheight="200in"> mapping to marginTop
Pass <frame marginheight="200.25in"> mapping to marginTop
Pass <frame marginheight=" +200in "> mapping to marginTop
Pass <frame marginheight="200%"> mapping to marginTop
Pass <frame marginheight="200.%"> mapping to marginTop
Pass <frame marginheight="200.25%"> mapping to marginTop
Pass <frame marginheight="-200"> mapping to marginTop
Pass <frame marginheight="-200px"> mapping to marginTop
Pass <frame marginheight=" -200"> mapping to marginTop
Pass <frame marginheight="+-200"> mapping to marginTop
Pass <frame marginheight="-+200"> mapping to marginTop
Fail <frame marginheight="200"> mapping to marginBottom
Fail <frame marginheight="1007"> mapping to marginBottom
Fail <frame marginheight=" 00523 "> mapping to marginBottom
Fail <frame marginheight="200."> mapping to marginBottom
Fail <frame marginheight="200.25"> mapping to marginBottom
Fail <frame marginheight="200.7"> mapping to marginBottom
Fail <frame marginheight="0"> mapping to marginBottom
Fail <frame marginheight="-0"> mapping to marginBottom
Fail <frame marginheight="+0"> mapping to marginBottom
Fail <frame marginheight="+200"> mapping to marginBottom
Fail <frame marginheight="200in"> mapping to marginBottom
Fail <frame marginheight="200.25in"> mapping to marginBottom
Fail <frame marginheight=" +200in "> mapping to marginBottom
Fail <frame marginheight="200%"> mapping to marginBottom
Fail <frame marginheight="200.%"> mapping to marginBottom
Fail <frame marginheight="200.25%"> mapping to marginBottom
Pass <frame marginheight="200"> mapping to marginBottom
Pass <frame marginheight="1007"> mapping to marginBottom
Pass <frame marginheight=" 00523 "> mapping to marginBottom
Pass <frame marginheight="200."> mapping to marginBottom
Pass <frame marginheight="200.25"> mapping to marginBottom
Pass <frame marginheight="200.7"> mapping to marginBottom
Pass <frame marginheight="0"> mapping to marginBottom
Pass <frame marginheight="-0"> mapping to marginBottom
Pass <frame marginheight="+0"> mapping to marginBottom
Pass <frame marginheight="+200"> mapping to marginBottom
Pass <frame marginheight="200in"> mapping to marginBottom
Pass <frame marginheight="200.25in"> mapping to marginBottom
Pass <frame marginheight=" +200in "> mapping to marginBottom
Pass <frame marginheight="200%"> mapping to marginBottom
Pass <frame marginheight="200.%"> mapping to marginBottom
Pass <frame marginheight="200.25%"> mapping to marginBottom
Pass <frame marginheight="-200"> mapping to marginBottom
Pass <frame marginheight="-200px"> mapping to marginBottom
Pass <frame marginheight=" -200"> mapping to marginBottom
Pass <frame marginheight="+-200"> mapping to marginBottom
Pass <frame marginheight="-+200"> mapping to marginBottom
Fail <body marginwidth="200"> mapping to marginLeft
Fail <body marginwidth="1007"> mapping to marginLeft
Fail <body marginwidth=" 00523 "> mapping to marginLeft
Fail <body marginwidth="200."> mapping to marginLeft
Fail <body marginwidth="200.25"> mapping to marginLeft
Fail <body marginwidth="200.7"> mapping to marginLeft
Fail <body marginwidth="0"> mapping to marginLeft
Fail <body marginwidth="-0"> mapping to marginLeft
Fail <body marginwidth="+0"> mapping to marginLeft
Fail <body marginwidth="+200"> mapping to marginLeft
Fail <body marginwidth="200in"> mapping to marginLeft
Fail <body marginwidth="200.25in"> mapping to marginLeft
Fail <body marginwidth=" +200in "> mapping to marginLeft
Fail <body marginwidth="200%"> mapping to marginLeft
Fail <body marginwidth="200.%"> mapping to marginLeft
Fail <body marginwidth="200.25%"> mapping to marginLeft
Pass <body marginwidth="200"> mapping to marginLeft
Pass <body marginwidth="1007"> mapping to marginLeft
Pass <body marginwidth=" 00523 "> mapping to marginLeft
Pass <body marginwidth="200."> mapping to marginLeft
Pass <body marginwidth="200.25"> mapping to marginLeft
Pass <body marginwidth="200.7"> mapping to marginLeft
Pass <body marginwidth="0"> mapping to marginLeft
Pass <body marginwidth="-0"> mapping to marginLeft
Pass <body marginwidth="+0"> mapping to marginLeft
Pass <body marginwidth="+200"> mapping to marginLeft
Pass <body marginwidth="200in"> mapping to marginLeft
Pass <body marginwidth="200.25in"> mapping to marginLeft
Pass <body marginwidth=" +200in "> mapping to marginLeft
Pass <body marginwidth="200%"> mapping to marginLeft
Pass <body marginwidth="200.%"> mapping to marginLeft
Pass <body marginwidth="200.25%"> mapping to marginLeft
Pass <body marginwidth="-200"> mapping to marginLeft
Pass <body marginwidth="-200px"> mapping to marginLeft
Pass <body marginwidth=" -200"> mapping to marginLeft
Pass <body marginwidth="+-200"> mapping to marginLeft
Pass <body marginwidth="-+200"> mapping to marginLeft
Fail <body marginwidth="200"> mapping to marginRight
Fail <body marginwidth="1007"> mapping to marginRight
Fail <body marginwidth=" 00523 "> mapping to marginRight
Fail <body marginwidth="200."> mapping to marginRight
Fail <body marginwidth="200.25"> mapping to marginRight
Fail <body marginwidth="200.7"> mapping to marginRight
Fail <body marginwidth="0"> mapping to marginRight
Fail <body marginwidth="-0"> mapping to marginRight
Fail <body marginwidth="+0"> mapping to marginRight
Fail <body marginwidth="+200"> mapping to marginRight
Fail <body marginwidth="200in"> mapping to marginRight
Fail <body marginwidth="200.25in"> mapping to marginRight
Fail <body marginwidth=" +200in "> mapping to marginRight
Fail <body marginwidth="200%"> mapping to marginRight
Fail <body marginwidth="200.%"> mapping to marginRight
Fail <body marginwidth="200.25%"> mapping to marginRight
Pass <body marginwidth="200"> mapping to marginRight
Pass <body marginwidth="1007"> mapping to marginRight
Pass <body marginwidth=" 00523 "> mapping to marginRight
Pass <body marginwidth="200."> mapping to marginRight
Pass <body marginwidth="200.25"> mapping to marginRight
Pass <body marginwidth="200.7"> mapping to marginRight
Pass <body marginwidth="0"> mapping to marginRight
Pass <body marginwidth="-0"> mapping to marginRight
Pass <body marginwidth="+0"> mapping to marginRight
Pass <body marginwidth="+200"> mapping to marginRight
Pass <body marginwidth="200in"> mapping to marginRight
Pass <body marginwidth="200.25in"> mapping to marginRight
Pass <body marginwidth=" +200in "> mapping to marginRight
Pass <body marginwidth="200%"> mapping to marginRight
Pass <body marginwidth="200.%"> mapping to marginRight
Pass <body marginwidth="200.25%"> mapping to marginRight
Pass <body marginwidth="-200"> mapping to marginRight
Pass <body marginwidth="-200px"> mapping to marginRight
Pass <body marginwidth=" -200"> mapping to marginRight
Pass <body marginwidth="+-200"> mapping to marginRight
Pass <body marginwidth="-+200"> mapping to marginRight
Fail <body leftmargin="200"> mapping to marginLeft
Fail <body leftmargin="1007"> mapping to marginLeft
Fail <body leftmargin=" 00523 "> mapping to marginLeft
Fail <body leftmargin="200."> mapping to marginLeft
Fail <body leftmargin="200.25"> mapping to marginLeft
Fail <body leftmargin="200.7"> mapping to marginLeft
Fail <body leftmargin="0"> mapping to marginLeft
Fail <body leftmargin="-0"> mapping to marginLeft
Fail <body leftmargin="+0"> mapping to marginLeft
Fail <body leftmargin="+200"> mapping to marginLeft
Fail <body leftmargin="200in"> mapping to marginLeft
Fail <body leftmargin="200.25in"> mapping to marginLeft
Fail <body leftmargin=" +200in "> mapping to marginLeft
Fail <body leftmargin="200%"> mapping to marginLeft
Fail <body leftmargin="200.%"> mapping to marginLeft
Fail <body leftmargin="200.25%"> mapping to marginLeft
Pass <body leftmargin="200"> mapping to marginLeft
Pass <body leftmargin="1007"> mapping to marginLeft
Pass <body leftmargin=" 00523 "> mapping to marginLeft
Pass <body leftmargin="200."> mapping to marginLeft
Pass <body leftmargin="200.25"> mapping to marginLeft
Pass <body leftmargin="200.7"> mapping to marginLeft
Pass <body leftmargin="0"> mapping to marginLeft
Pass <body leftmargin="-0"> mapping to marginLeft
Pass <body leftmargin="+0"> mapping to marginLeft
Pass <body leftmargin="+200"> mapping to marginLeft
Pass <body leftmargin="200in"> mapping to marginLeft
Pass <body leftmargin="200.25in"> mapping to marginLeft
Pass <body leftmargin=" +200in "> mapping to marginLeft
Pass <body leftmargin="200%"> mapping to marginLeft
Pass <body leftmargin="200.%"> mapping to marginLeft
Pass <body leftmargin="200.25%"> mapping to marginLeft
Pass <body leftmargin="-200"> mapping to marginLeft
Pass <body leftmargin="-200px"> mapping to marginLeft
Pass <body leftmargin=" -200"> mapping to marginLeft
Pass <body leftmargin="+-200"> mapping to marginLeft
Pass <body leftmargin="-+200"> mapping to marginLeft
Fail <body rightmargin="200"> mapping to marginRight
Fail <body rightmargin="1007"> mapping to marginRight
Fail <body rightmargin=" 00523 "> mapping to marginRight
Fail <body rightmargin="200."> mapping to marginRight
Fail <body rightmargin="200.25"> mapping to marginRight
Fail <body rightmargin="200.7"> mapping to marginRight
Fail <body rightmargin="0"> mapping to marginRight
Fail <body rightmargin="-0"> mapping to marginRight
Fail <body rightmargin="+0"> mapping to marginRight
Fail <body rightmargin="+200"> mapping to marginRight
Fail <body rightmargin="200in"> mapping to marginRight
Fail <body rightmargin="200.25in"> mapping to marginRight
Fail <body rightmargin=" +200in "> mapping to marginRight
Fail <body rightmargin="200%"> mapping to marginRight
Fail <body rightmargin="200.%"> mapping to marginRight
Fail <body rightmargin="200.25%"> mapping to marginRight
Pass <body rightmargin="200"> mapping to marginRight
Pass <body rightmargin="1007"> mapping to marginRight
Pass <body rightmargin=" 00523 "> mapping to marginRight
Pass <body rightmargin="200."> mapping to marginRight
Pass <body rightmargin="200.25"> mapping to marginRight
Pass <body rightmargin="200.7"> mapping to marginRight
Pass <body rightmargin="0"> mapping to marginRight
Pass <body rightmargin="-0"> mapping to marginRight
Pass <body rightmargin="+0"> mapping to marginRight
Pass <body rightmargin="+200"> mapping to marginRight
Pass <body rightmargin="200in"> mapping to marginRight
Pass <body rightmargin="200.25in"> mapping to marginRight
Pass <body rightmargin=" +200in "> mapping to marginRight
Pass <body rightmargin="200%"> mapping to marginRight
Pass <body rightmargin="200.%"> mapping to marginRight
Pass <body rightmargin="200.25%"> mapping to marginRight
Pass <body rightmargin="-200"> mapping to marginRight
Pass <body rightmargin="-200px"> mapping to marginRight
Pass <body rightmargin=" -200"> mapping to marginRight
Pass <body rightmargin="+-200"> mapping to marginRight
Pass <body rightmargin="-+200"> mapping to marginRight
Fail <body marginheight="200"> mapping to marginTop
Fail <body marginheight="1007"> mapping to marginTop
Fail <body marginheight=" 00523 "> mapping to marginTop
Fail <body marginheight="200."> mapping to marginTop
Fail <body marginheight="200.25"> mapping to marginTop
Fail <body marginheight="200.7"> mapping to marginTop
Fail <body marginheight="0"> mapping to marginTop
Fail <body marginheight="-0"> mapping to marginTop
Fail <body marginheight="+0"> mapping to marginTop
Fail <body marginheight="+200"> mapping to marginTop
Fail <body marginheight="200in"> mapping to marginTop
Fail <body marginheight="200.25in"> mapping to marginTop
Fail <body marginheight=" +200in "> mapping to marginTop
Fail <body marginheight="200%"> mapping to marginTop
Fail <body marginheight="200.%"> mapping to marginTop
Fail <body marginheight="200.25%"> mapping to marginTop
Pass <body marginheight="200"> mapping to marginTop
Pass <body marginheight="1007"> mapping to marginTop
Pass <body marginheight=" 00523 "> mapping to marginTop
Pass <body marginheight="200."> mapping to marginTop
Pass <body marginheight="200.25"> mapping to marginTop
Pass <body marginheight="200.7"> mapping to marginTop
Pass <body marginheight="0"> mapping to marginTop
Pass <body marginheight="-0"> mapping to marginTop
Pass <body marginheight="+0"> mapping to marginTop
Pass <body marginheight="+200"> mapping to marginTop
Pass <body marginheight="200in"> mapping to marginTop
Pass <body marginheight="200.25in"> mapping to marginTop
Pass <body marginheight=" +200in "> mapping to marginTop
Pass <body marginheight="200%"> mapping to marginTop
Pass <body marginheight="200.%"> mapping to marginTop
Pass <body marginheight="200.25%"> mapping to marginTop
Pass <body marginheight="-200"> mapping to marginTop
Pass <body marginheight="-200px"> mapping to marginTop
Pass <body marginheight=" -200"> mapping to marginTop
Pass <body marginheight="+-200"> mapping to marginTop
Pass <body marginheight="-+200"> mapping to marginTop
Fail <body marginheight="200"> mapping to marginBottom
Fail <body marginheight="1007"> mapping to marginBottom
Fail <body marginheight=" 00523 "> mapping to marginBottom
Fail <body marginheight="200."> mapping to marginBottom
Fail <body marginheight="200.25"> mapping to marginBottom
Fail <body marginheight="200.7"> mapping to marginBottom
Fail <body marginheight="0"> mapping to marginBottom
Fail <body marginheight="-0"> mapping to marginBottom
Fail <body marginheight="+0"> mapping to marginBottom
Fail <body marginheight="+200"> mapping to marginBottom
Fail <body marginheight="200in"> mapping to marginBottom
Fail <body marginheight="200.25in"> mapping to marginBottom
Fail <body marginheight=" +200in "> mapping to marginBottom
Fail <body marginheight="200%"> mapping to marginBottom
Fail <body marginheight="200.%"> mapping to marginBottom
Fail <body marginheight="200.25%"> mapping to marginBottom
Pass <body marginheight="200"> mapping to marginBottom
Pass <body marginheight="1007"> mapping to marginBottom
Pass <body marginheight=" 00523 "> mapping to marginBottom
Pass <body marginheight="200."> mapping to marginBottom
Pass <body marginheight="200.25"> mapping to marginBottom
Pass <body marginheight="200.7"> mapping to marginBottom
Pass <body marginheight="0"> mapping to marginBottom
Pass <body marginheight="-0"> mapping to marginBottom
Pass <body marginheight="+0"> mapping to marginBottom
Pass <body marginheight="+200"> mapping to marginBottom
Pass <body marginheight="200in"> mapping to marginBottom
Pass <body marginheight="200.25in"> mapping to marginBottom
Pass <body marginheight=" +200in "> mapping to marginBottom
Pass <body marginheight="200%"> mapping to marginBottom
Pass <body marginheight="200.%"> mapping to marginBottom
Pass <body marginheight="200.25%"> mapping to marginBottom
Pass <body marginheight="-200"> mapping to marginBottom
Pass <body marginheight="-200px"> mapping to marginBottom
Pass <body marginheight=" -200"> mapping to marginBottom
Pass <body marginheight="+-200"> mapping to marginBottom
Pass <body marginheight="-+200"> mapping to marginBottom
Fail <body topmargin="200"> mapping to marginTop
Fail <body topmargin="1007"> mapping to marginTop
Fail <body topmargin=" 00523 "> mapping to marginTop
Fail <body topmargin="200."> mapping to marginTop
Fail <body topmargin="200.25"> mapping to marginTop
Fail <body topmargin="200.7"> mapping to marginTop
Fail <body topmargin="0"> mapping to marginTop
Fail <body topmargin="-0"> mapping to marginTop
Fail <body topmargin="+0"> mapping to marginTop
Fail <body topmargin="+200"> mapping to marginTop
Fail <body topmargin="200in"> mapping to marginTop
Fail <body topmargin="200.25in"> mapping to marginTop
Fail <body topmargin=" +200in "> mapping to marginTop
Fail <body topmargin="200%"> mapping to marginTop
Fail <body topmargin="200.%"> mapping to marginTop
Fail <body topmargin="200.25%"> mapping to marginTop
Pass <body topmargin="200"> mapping to marginTop
Pass <body topmargin="1007"> mapping to marginTop
Pass <body topmargin=" 00523 "> mapping to marginTop
Pass <body topmargin="200."> mapping to marginTop
Pass <body topmargin="200.25"> mapping to marginTop
Pass <body topmargin="200.7"> mapping to marginTop
Pass <body topmargin="0"> mapping to marginTop
Pass <body topmargin="-0"> mapping to marginTop
Pass <body topmargin="+0"> mapping to marginTop
Pass <body topmargin="+200"> mapping to marginTop
Pass <body topmargin="200in"> mapping to marginTop
Pass <body topmargin="200.25in"> mapping to marginTop
Pass <body topmargin=" +200in "> mapping to marginTop
Pass <body topmargin="200%"> mapping to marginTop
Pass <body topmargin="200.%"> mapping to marginTop
Pass <body topmargin="200.25%"> mapping to marginTop
Pass <body topmargin="-200"> mapping to marginTop
Pass <body topmargin="-200px"> mapping to marginTop
Pass <body topmargin=" -200"> mapping to marginTop
Pass <body topmargin="+-200"> mapping to marginTop
Pass <body topmargin="-+200"> mapping to marginTop
Fail <body bottommargin="200"> mapping to marginBottom
Fail <body bottommargin="1007"> mapping to marginBottom
Fail <body bottommargin=" 00523 "> mapping to marginBottom
Fail <body bottommargin="200."> mapping to marginBottom
Fail <body bottommargin="200.25"> mapping to marginBottom
Fail <body bottommargin="200.7"> mapping to marginBottom
Fail <body bottommargin="0"> mapping to marginBottom
Fail <body bottommargin="-0"> mapping to marginBottom
Fail <body bottommargin="+0"> mapping to marginBottom
Fail <body bottommargin="+200"> mapping to marginBottom
Fail <body bottommargin="200in"> mapping to marginBottom
Fail <body bottommargin="200.25in"> mapping to marginBottom
Fail <body bottommargin=" +200in "> mapping to marginBottom
Fail <body bottommargin="200%"> mapping to marginBottom
Fail <body bottommargin="200.%"> mapping to marginBottom
Fail <body bottommargin="200.25%"> mapping to marginBottom
Pass <body bottommargin="200"> mapping to marginBottom
Pass <body bottommargin="1007"> mapping to marginBottom
Pass <body bottommargin=" 00523 "> mapping to marginBottom
Pass <body bottommargin="200."> mapping to marginBottom
Pass <body bottommargin="200.25"> mapping to marginBottom
Pass <body bottommargin="200.7"> mapping to marginBottom
Pass <body bottommargin="0"> mapping to marginBottom
Pass <body bottommargin="-0"> mapping to marginBottom
Pass <body bottommargin="+0"> mapping to marginBottom
Pass <body bottommargin="+200"> mapping to marginBottom
Pass <body bottommargin="200in"> mapping to marginBottom
Pass <body bottommargin="200.25in"> mapping to marginBottom
Pass <body bottommargin=" +200in "> mapping to marginBottom
Pass <body bottommargin="200%"> mapping to marginBottom
Pass <body bottommargin="200.%"> mapping to marginBottom
Pass <body bottommargin="200.25%"> mapping to marginBottom
Pass <body bottommargin="-200"> mapping to marginBottom
Pass <body bottommargin="-200px"> mapping to marginBottom
Pass <body bottommargin=" -200"> mapping to marginBottom