LibWeb: Use Reflect for HTMLAnchorElement.referrerPolicy

This commit is contained in:
Jamie Mansfield 2024-05-31 21:14:26 +01:00 committed by Nico Weber
parent ade7c6c8fb
commit a6fd653afa
7 changed files with 10 additions and 51 deletions

View file

@ -1,3 +1,10 @@
a referrerPolicy initial value: ''
a referrerPolicy value after setting to "invalid": ''
a referrerPolicy value after setting to "no-referrer": 'no-referrer'
a referrerPolicy value after setting to null: ''
a referrerPolicy value after setting to "NO-REFERRER": 'no-referrer'
a referrerPolicy value after setting to "": ''
a referrerPolicy value after calling removeAttribute: ''
script referrerPolicy initial value: ''
script referrerPolicy value after setting to "invalid": ''
script referrerPolicy value after setting to "no-referrer": 'no-referrer'

View file

@ -1,5 +0,0 @@
referrerPolicy = ''
referrerPolicy = 'no-referrer'
referrerPolicy = ''

View file

@ -2,7 +2,7 @@
<script src="../include.js"></script>
<script>
test(() => {
for (const elementName of ["script"]) {
for (const elementName of ["a", "script"]) {
const element = document.createElement(elementName);
println(`${elementName} referrerPolicy initial value: '${element.referrerPolicy}'`);
element.referrerPolicy = "invalid";

View file

@ -1,18 +0,0 @@
<script id="testScript"></script>
<script src="../include.js"></script>
<script>
test(() => {
const script = document.getElementById('testScript');
println(`referrerPolicy = '${script.referrerPolicy}'`);
println('');
script.referrerPolicy = 'no-referrer';
println(`referrerPolicy = '${script.referrerPolicy}'`);
println('');
script.referrerPolicy = 'invalid-value';
println(`referrerPolicy = '${script.referrerPolicy}'`);
});
</script>

View file

@ -156,27 +156,4 @@ void HTMLAnchorElement::set_text(String const& text)
string_replace_all(text);
}
// https://html.spec.whatwg.org/multipage/text-level-semantics.html#dom-a-referrerpolicy
StringView HTMLAnchorElement::referrer_policy() const
{
// FIXME: This should probably be `Reflect` in the IDL.
// The IDL attribute referrerPolicy must reflect the referrerpolicy content attribute, limited to only known values.
auto maybe_policy_string = attribute(HTML::AttributeNames::referrerpolicy);
if (!maybe_policy_string.has_value())
return ""sv;
auto maybe_policy = ReferrerPolicy::from_string(maybe_policy_string.value());
if (!maybe_policy.has_value())
return ""sv;
return ReferrerPolicy::to_string(maybe_policy.value());
}
// https://html.spec.whatwg.org/multipage/text-level-semantics.html#dom-a-referrerpolicy
WebIDL::ExceptionOr<void> HTMLAnchorElement::set_referrer_policy(String const& referrer_policy)
{
// The IDL attribute referrerPolicy must reflect the referrerpolicy content attribute, limited to only known values.
return set_attribute(HTML::AttributeNames::referrerpolicy, referrer_policy);
}
}

View file

@ -29,9 +29,6 @@ public:
String text() const;
void set_text(String const&);
StringView referrer_policy() const;
WebIDL::ExceptionOr<void> set_referrer_policy(String const&);
// ^EventTarget
// https://html.spec.whatwg.org/multipage/interaction.html#the-tabindex-attribute:the-a-element
virtual bool is_focusable() const override { return has_attribute(HTML::AttributeNames::href); }

View file

@ -1,3 +1,4 @@
#import <Fetch/Request.idl>
#import <HTML/HTMLElement.idl>
#import <HTML/HTMLHyperlinkElementUtils.idl>
@ -17,7 +18,7 @@ interface HTMLAnchorElement : HTMLElement {
[CEReactions] attribute DOMString text;
[CEReactions] attribute DOMString referrerPolicy;
[CEReactions, Reflect=referrerpolicy, Enumerated=ReferrerPolicy] attribute DOMString referrerPolicy;
// Obsolete
[CEReactions, Reflect] attribute DOMString coords;