LibURL+LibWeb: Port URL::complete_url to Optional

Removing one more source of the URL::is_valid API.
This commit is contained in:
Shannon Booth 2025-02-15 22:55:46 +13:00 committed by Tim Ledbetter
commit 53826995f6
Notes: github-actions[bot] 2025-02-15 17:07:12 +00:00
14 changed files with 57 additions and 52 deletions

View file

@ -45,8 +45,8 @@ WebIDL::ExceptionOr<GC::Ref<CSSStyleSheet>> CSSStyleSheet::construct_impl(JS::Re
sheet_location_url = sheet->location().release_value();
// AD-HOC: This isn't explicitly mentioned in the specification, but multiple modern browsers do this.
URL::URL url = sheet->location().has_value() ? sheet_location_url->complete_url(options->base_url.value()) : options->base_url.value();
if (!url.is_valid())
Optional<URL::URL> url = sheet->location().has_value() ? sheet_location_url->complete_url(options->base_url.value()) : options->base_url.value();
if (!url.has_value())
return WebIDL::NotAllowedError::create(realm, "Constructed style sheets must have a valid base URL"_string);
sheet->set_base_url(url);

View file

@ -1761,7 +1761,7 @@ bool Parser::is_parsing_svg_presentation_attribute() const
// https://www.w3.org/TR/css-values-4/#relative-urls
// FIXME: URLs shouldn't be completed during parsing, but when used.
URL::URL Parser::complete_url(StringView relative_url) const
Optional<URL::URL> Parser::complete_url(StringView relative_url) const
{
return m_url.complete_url(relative_url);
}

View file

@ -460,7 +460,7 @@ private:
JS::Realm& realm() const;
bool in_quirks_mode() const;
bool is_parsing_svg_presentation_attribute() const;
URL::URL complete_url(StringView) const;
Optional<URL::URL> complete_url(StringView) const;
GC::Ptr<DOM::Document const> m_document;
GC::Ptr<JS::Realm> m_realm;

View file

@ -2470,7 +2470,7 @@ Optional<URL::URL> Parser::parse_url_function(TokenStream<ComponentValue>& token
auto convert_string_to_url = [&](StringView url_string) -> Optional<URL::URL> {
auto url = complete_url(url_string);
if (url.is_valid()) {
if (url.has_value()) {
transaction.commit();
return url;
}