From 3b45ca3a7644b3b07f3ff2770b9e9b29ac105706 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Tue, 8 Apr 2025 13:35:26 +0100 Subject: [PATCH] LibWeb/CSS: Qualify uses of LibURL To prepare for introducing a CSS::URL type, we need to qualify any use of LibURL as `::URL::foo` instead of `URL::foo` so the compiler doesn't get confused. Many of these uses will be replaced, but I don't want to mix this in with what will likely already be a large change. --- Libraries/LibWeb/CSS/CSSImportRule.cpp | 4 ++-- Libraries/LibWeb/CSS/CSSImportRule.h | 8 +++---- Libraries/LibWeb/CSS/CSSStyleSheet.cpp | 8 +++---- Libraries/LibWeb/CSS/CSSStyleSheet.h | 11 +++++----- Libraries/LibWeb/CSS/ComputedValues.h | 22 +++++++++---------- Libraries/LibWeb/CSS/Fetch.cpp | 2 +- Libraries/LibWeb/CSS/ParsedFontFace.cpp | 2 +- Libraries/LibWeb/CSS/ParsedFontFace.h | 2 +- Libraries/LibWeb/CSS/Parser/Helpers.cpp | 2 +- Libraries/LibWeb/CSS/Parser/Parser.cpp | 16 +++++++------- Libraries/LibWeb/CSS/Parser/Parser.h | 20 ++++++++--------- Libraries/LibWeb/CSS/Parser/RuleParsing.cpp | 2 +- Libraries/LibWeb/CSS/Parser/ValueParsing.cpp | 6 ++--- Libraries/LibWeb/CSS/StyleComputer.cpp | 8 +++---- Libraries/LibWeb/CSS/StyleComputer.h | 4 ++-- Libraries/LibWeb/CSS/StyleSheet.h | 6 ++--- Libraries/LibWeb/CSS/StyleSheetList.cpp | 2 +- Libraries/LibWeb/CSS/StyleSheetList.h | 2 +- .../CSS/StyleValues/FontSourceStyleValue.cpp | 6 ++--- .../CSS/StyleValues/FontSourceStyleValue.h | 2 +- .../CSS/StyleValues/ImageStyleValue.cpp | 2 +- .../LibWeb/CSS/StyleValues/ImageStyleValue.h | 6 ++--- .../LibWeb/CSS/StyleValues/URLStyleValue.h | 8 +++---- Libraries/LibWeb/HTML/HTMLLinkElement.cpp | 2 +- 24 files changed, 77 insertions(+), 76 deletions(-) diff --git a/Libraries/LibWeb/CSS/CSSImportRule.cpp b/Libraries/LibWeb/CSS/CSSImportRule.cpp index 49f61e89b56..7e20b09ea3c 100644 --- a/Libraries/LibWeb/CSS/CSSImportRule.cpp +++ b/Libraries/LibWeb/CSS/CSSImportRule.cpp @@ -23,13 +23,13 @@ namespace Web::CSS { GC_DEFINE_ALLOCATOR(CSSImportRule); -GC::Ref CSSImportRule::create(URL::URL url, DOM::Document& document, RefPtr supports, Vector> media_query_list) +GC::Ref CSSImportRule::create(::URL::URL url, DOM::Document& document, RefPtr supports, Vector> media_query_list) { auto& realm = document.realm(); return realm.create(move(url), document, supports, move(media_query_list)); } -CSSImportRule::CSSImportRule(URL::URL url, DOM::Document& document, RefPtr supports, Vector> media_query_list) +CSSImportRule::CSSImportRule(::URL::URL url, DOM::Document& document, RefPtr supports, Vector> media_query_list) : CSSRule(document.realm(), Type::Import) , m_url(move(url)) , m_document(document) diff --git a/Libraries/LibWeb/CSS/CSSImportRule.h b/Libraries/LibWeb/CSS/CSSImportRule.h index a3712ed3bfa..4426b156787 100644 --- a/Libraries/LibWeb/CSS/CSSImportRule.h +++ b/Libraries/LibWeb/CSS/CSSImportRule.h @@ -21,11 +21,11 @@ class CSSImportRule final GC_DECLARE_ALLOCATOR(CSSImportRule); public: - [[nodiscard]] static GC::Ref create(URL::URL, DOM::Document&, RefPtr, Vector>); + [[nodiscard]] static GC::Ref create(::URL::URL, DOM::Document&, RefPtr, Vector>); virtual ~CSSImportRule() = default; - URL::URL const& url() const { return m_url; } + ::URL::URL const& url() const { return m_url; } // FIXME: This should return only the specified part of the url. eg, "stuff/foo.css", not "https://example.com/stuff/foo.css". String href() const { return m_url.to_string(); } @@ -37,7 +37,7 @@ public: Optional supports_text() const; private: - CSSImportRule(URL::URL, DOM::Document&, RefPtr, Vector>); + CSSImportRule(::URL::URL, DOM::Document&, RefPtr, Vector>); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; @@ -49,7 +49,7 @@ private: void fetch(); void set_style_sheet(GC::Ref); - URL::URL m_url; + ::URL::URL m_url; GC::Ptr m_document; RefPtr m_supports; Vector> m_media_query_list; diff --git a/Libraries/LibWeb/CSS/CSSStyleSheet.cpp b/Libraries/LibWeb/CSS/CSSStyleSheet.cpp index 39cb95964c6..f929a1e7131 100644 --- a/Libraries/LibWeb/CSS/CSSStyleSheet.cpp +++ b/Libraries/LibWeb/CSS/CSSStyleSheet.cpp @@ -24,7 +24,7 @@ namespace Web::CSS { GC_DEFINE_ALLOCATOR(CSSStyleSheet); -GC::Ref CSSStyleSheet::create(JS::Realm& realm, CSSRuleList& rules, MediaList& media, Optional location) +GC::Ref CSSStyleSheet::create(JS::Realm& realm, CSSRuleList& rules, MediaList& media, Optional<::URL::URL> location) { return realm.create(realm, rules, media, move(location)); } @@ -41,12 +41,12 @@ WebIDL::ExceptionOr> CSSStyleSheet::construct_impl(JS::Re // 3. Set sheet’s stylesheet base URL to the baseURL attribute value from options. if (options.has_value() && options->base_url.has_value()) { - Optional sheet_location_url; + Optional<::URL::URL> sheet_location_url; if (sheet->location().has_value()) sheet_location_url = sheet->location().release_value(); // AD-HOC: This isn't explicitly mentioned in the specification, but multiple modern browsers do this. - Optional url = sheet->location().has_value() ? sheet_location_url->complete_url(options->base_url.value()) : URL::Parser::basic_parse(options->base_url.value()); + Optional<::URL::URL> url = sheet->location().has_value() ? sheet_location_url->complete_url(options->base_url.value()) : ::URL::Parser::basic_parse(options->base_url.value()); if (!url.has_value()) return WebIDL::NotAllowedError::create(realm, "Constructed style sheets must have a valid base URL"_string); @@ -95,7 +95,7 @@ WebIDL::ExceptionOr> CSSStyleSheet::construct_impl(JS::Re return sheet; } -CSSStyleSheet::CSSStyleSheet(JS::Realm& realm, CSSRuleList& rules, MediaList& media, Optional location) +CSSStyleSheet::CSSStyleSheet(JS::Realm& realm, CSSRuleList& rules, MediaList& media, Optional<::URL::URL> location) : StyleSheet(realm, media) , m_rules(&rules) { diff --git a/Libraries/LibWeb/CSS/CSSStyleSheet.h b/Libraries/LibWeb/CSS/CSSStyleSheet.h index b3c93b102b6..aba78f28c1c 100644 --- a/Libraries/LibWeb/CSS/CSSStyleSheet.h +++ b/Libraries/LibWeb/CSS/CSSStyleSheet.h @@ -27,12 +27,13 @@ struct CSSStyleSheetInit { bool disabled { false }; }; +// https://drafts.csswg.org/cssom-1/#cssstylesheet class CSSStyleSheet final : public StyleSheet { WEB_PLATFORM_OBJECT(CSSStyleSheet, StyleSheet); GC_DECLARE_ALLOCATOR(CSSStyleSheet); public: - [[nodiscard]] static GC::Ref create(JS::Realm&, CSSRuleList&, MediaList&, Optional location); + [[nodiscard]] static GC::Ref create(JS::Realm&, CSSRuleList&, MediaList&, Optional<::URL::URL> location); static WebIDL::ExceptionOr> construct_impl(JS::Realm&, Optional const& options = {}); virtual ~CSSStyleSheet() override = default; @@ -74,8 +75,8 @@ public: Vector> const& import_rules() const { return m_import_rules; } - Optional base_url() const { return m_base_url; } - void set_base_url(Optional base_url) { m_base_url = move(base_url); } + Optional<::URL::URL> base_url() const { return m_base_url; } + void set_base_url(Optional<::URL::URL> base_url) { m_base_url = move(base_url); } bool constructed() const { return m_constructed; } @@ -94,7 +95,7 @@ public: bool has_associated_font_loader(FontLoader& font_loader) const; private: - CSSStyleSheet(JS::Realm&, CSSRuleList&, MediaList&, Optional location); + CSSStyleSheet(JS::Realm&, CSSRuleList&, MediaList&, Optional<::URL::URL> location); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; @@ -113,7 +114,7 @@ private: GC::Ptr m_owner_css_rule; - Optional m_base_url; + Optional<::URL::URL> m_base_url; GC::Ptr m_constructor_document; HashTable> m_owning_documents_or_shadow_roots; bool m_constructed { false }; diff --git a/Libraries/LibWeb/CSS/ComputedValues.h b/Libraries/LibWeb/CSS/ComputedValues.h index 1498ee729df..115fabef478 100644 --- a/Libraries/LibWeb/CSS/ComputedValues.h +++ b/Libraries/LibWeb/CSS/ComputedValues.h @@ -225,40 +225,40 @@ public: : m_value(color) { } - SVGPaint(URL::URL const& url) + SVGPaint(::URL::URL const& url) : m_value(url) { } bool is_color() const { return m_value.has(); } - bool is_url() const { return m_value.has(); } + bool is_url() const { return m_value.has<::URL::URL>(); } Color as_color() const { return m_value.get(); } - URL::URL const& as_url() const { return m_value.get(); } + ::URL::URL const& as_url() const { return m_value.get<::URL::URL>(); } private: - Variant m_value; + Variant<::URL::URL, Color> m_value; }; // https://drafts.fxtf.org/css-masking-1/#typedef-mask-reference class MaskReference { public: // TODO: Support other mask types. - MaskReference(URL::URL const& url) + MaskReference(::URL::URL const& url) : m_url(url) { } - URL::URL const& url() const { return m_url; } + ::URL::URL const& url() const { return m_url; } private: - URL::URL m_url; + ::URL::URL m_url; }; // https://drafts.fxtf.org/css-masking/#the-clip-path // TODO: Support clip sources. class ClipPathReference { public: - ClipPathReference(URL::URL const& url) + ClipPathReference(::URL::URL const& url) : m_clip_source(url) { } @@ -270,16 +270,16 @@ public: bool is_basic_shape() const { return m_clip_source.has(); } - bool is_url() const { return m_clip_source.has(); } + bool is_url() const { return m_clip_source.has<::URL::URL>(); } - URL::URL const& url() const { return m_clip_source.get(); } + ::URL::URL const& url() const { return m_clip_source.get<::URL::URL>(); } BasicShapeStyleValue const& basic_shape() const { return *m_clip_source.get(); } private: using BasicShape = NonnullRefPtr; - Variant m_clip_source; + Variant<::URL::URL, BasicShape> m_clip_source; }; struct BackgroundLayerData { diff --git a/Libraries/LibWeb/CSS/Fetch.cpp b/Libraries/LibWeb/CSS/Fetch.cpp index 53a3fa6089a..13c102771a7 100644 --- a/Libraries/LibWeb/CSS/Fetch.cpp +++ b/Libraries/LibWeb/CSS/Fetch.cpp @@ -23,7 +23,7 @@ void fetch_a_style_resource(String const& url_value, CSSStyleSheet const& sheet, auto base = sheet.base_url().value_or(environment_settings.api_base_url()); // 3. Let parsedUrl be the result of the URL parser steps with urlValue’s url and base. If the algorithm returns an error, return. - auto parsed_url = URL::Parser::basic_parse(url_value, base); + auto parsed_url = ::URL::Parser::basic_parse(url_value, base); if (!parsed_url.has_value()) return; diff --git a/Libraries/LibWeb/CSS/ParsedFontFace.cpp b/Libraries/LibWeb/CSS/ParsedFontFace.cpp index 94f11f54d40..e451f03d82e 100644 --- a/Libraries/LibWeb/CSS/ParsedFontFace.cpp +++ b/Libraries/LibWeb/CSS/ParsedFontFace.cpp @@ -38,7 +38,7 @@ Vector ParsedFontFace::sources_from_style_value(CSSStyle [&](FontSourceStyleValue::Local const& local) { sources.empend(extract_font_name(local.name), OptionalNone {}); }, - [&](URL::URL const& url) { + [&](::URL::URL const& url) { // FIXME: tech() sources.empend(url, font_source.format()); }); diff --git a/Libraries/LibWeb/CSS/ParsedFontFace.h b/Libraries/LibWeb/CSS/ParsedFontFace.h index b52bcde095e..7322a64d1e9 100644 --- a/Libraries/LibWeb/CSS/ParsedFontFace.h +++ b/Libraries/LibWeb/CSS/ParsedFontFace.h @@ -19,7 +19,7 @@ namespace Web::CSS { class ParsedFontFace { public: struct Source { - Variant local_or_url; + Variant local_or_url; // FIXME: Do we need to keep this around, or is it only needed to discard unwanted formats during parsing? Optional format; }; diff --git a/Libraries/LibWeb/CSS/Parser/Helpers.cpp b/Libraries/LibWeb/CSS/Parser/Helpers.cpp index cfc3e5487d3..6d194b2c954 100644 --- a/Libraries/LibWeb/CSS/Parser/Helpers.cpp +++ b/Libraries/LibWeb/CSS/Parser/Helpers.cpp @@ -42,7 +42,7 @@ GC::Ref internal_css_realm() return *realm; } -CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingParams const& context, StringView css, Optional location, Vector> media_query_list) +CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingParams const& context, StringView css, Optional<::URL::URL> location, Vector> media_query_list) { if (css.is_empty()) { auto rule_list = CSS::CSSRuleList::create_empty(*context.realm); diff --git a/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Libraries/LibWeb/CSS/Parser/Parser.cpp index 811f8999c63..b88e81a6995 100644 --- a/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -45,14 +45,14 @@ ParsingParams::ParsingParams(JS::Realm& realm, ParsingMode mode) { } -ParsingParams::ParsingParams(JS::Realm& realm, URL::URL url, ParsingMode mode) +ParsingParams::ParsingParams(JS::Realm& realm, ::URL::URL url, ParsingMode mode) : realm(realm) , url(move(url)) , mode(mode) { } -ParsingParams::ParsingParams(DOM::Document const& document, URL::URL url, ParsingMode mode) +ParsingParams::ParsingParams(DOM::Document const& document, ::URL::URL url, ParsingMode mode) : realm(const_cast(document.realm())) , document(&document) , url(move(url)) @@ -86,7 +86,7 @@ Parser::Parser(ParsingParams const& context, Vector tokens) // https://drafts.csswg.org/css-syntax/#parse-stylesheet template -Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream& input, Optional location) +Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream& input, Optional<::URL::URL> location) { // To parse a stylesheet from an input given an optional url location: @@ -119,7 +119,7 @@ Vector Parser::parse_a_stylesheets_contents(TokenStream& input) } // https://drafts.csswg.org/css-syntax/#parse-a-css-stylesheet -CSSStyleSheet* Parser::parse_as_css_stylesheet(Optional location, Vector> media_query_list) +CSSStyleSheet* Parser::parse_as_css_stylesheet(Optional<::URL::URL> location, Vector> media_query_list) { // To parse a CSS stylesheet, first parse a stylesheet. auto const& style_sheet = parse_a_stylesheet(m_token_stream, {}); @@ -1772,8 +1772,8 @@ Parser::ContextType Parser::context_type_for_at_rule(FlyString const& name) return ContextType::Unknown; } -template Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream&, Optional); -template Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream&, Optional); +template Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream&, Optional<::URL::URL>); +template Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream&, Optional<::URL::URL>); template Vector Parser::parse_a_stylesheets_contents(TokenStream& input); template Vector Parser::parse_a_stylesheets_contents(TokenStream& input); @@ -1853,10 +1853,10 @@ 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. -Optional Parser::complete_url(StringView relative_url) const +Optional<::URL::URL> Parser::complete_url(StringView relative_url) const { if (!m_url.is_valid()) - return URL::Parser::basic_parse(relative_url); + return ::URL::Parser::basic_parse(relative_url); return m_url.complete_url(relative_url); } diff --git a/Libraries/LibWeb/CSS/Parser/Parser.h b/Libraries/LibWeb/CSS/Parser/Parser.h index d118e6697f3..ad96c2afed9 100644 --- a/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Libraries/LibWeb/CSS/Parser/Parser.h @@ -69,13 +69,13 @@ enum class ParsingMode { struct ParsingParams { explicit ParsingParams(ParsingMode = ParsingMode::Normal); explicit ParsingParams(JS::Realm&, ParsingMode = ParsingMode::Normal); - explicit ParsingParams(JS::Realm&, URL::URL, ParsingMode = ParsingMode::Normal); - explicit ParsingParams(DOM::Document const&, URL::URL, ParsingMode = ParsingMode::Normal); + explicit ParsingParams(JS::Realm&, ::URL::URL, ParsingMode = ParsingMode::Normal); + explicit ParsingParams(DOM::Document const&, ::URL::URL, ParsingMode = ParsingMode::Normal); explicit ParsingParams(DOM::Document const&, ParsingMode = ParsingMode::Normal); GC::Ptr realm; GC::Ptr document; - URL::URL url; + ::URL::URL url; ParsingMode mode { ParsingMode::Normal }; }; @@ -89,7 +89,7 @@ class Parser { public: static Parser create(ParsingParams const&, StringView input, StringView encoding = "utf-8"sv); - CSSStyleSheet* parse_as_css_stylesheet(Optional location, Vector> media_query_list = {}); + CSSStyleSheet* parse_as_css_stylesheet(Optional<::URL::URL> location, Vector> media_query_list = {}); struct PropertiesAndCustomProperties { Vector properties; @@ -142,11 +142,11 @@ private: // "Parse a stylesheet" is intended to be the normal parser entry point, for parsing stylesheets. struct ParsedStyleSheet { - Optional location; + Optional<::URL::URL> location; Vector rules; }; template - ParsedStyleSheet parse_a_stylesheet(TokenStream&, Optional location); + ParsedStyleSheet parse_a_stylesheet(TokenStream&, Optional<::URL::URL> location); // "Parse a stylesheet’s contents" is intended for use by the CSSStyleSheet replace() method, and similar, which parse text into the contents of an existing stylesheet. template @@ -276,7 +276,7 @@ private: Optional parse_repeat(Vector const&); Optional parse_track_sizing_function(ComponentValue const&); - Optional parse_url_function(TokenStream&); + Optional<::URL::URL> parse_url_function(TokenStream&); RefPtr parse_url_value(TokenStream&); Optional parse_shape_radius(TokenStream&); @@ -471,11 +471,11 @@ private: JS::Realm& realm() const; bool in_quirks_mode() const; bool is_parsing_svg_presentation_attribute() const; - Optional complete_url(StringView) const; + Optional<::URL::URL> complete_url(StringView) const; GC::Ptr m_document; GC::Ptr m_realm; - URL::URL m_url; + ::URL::URL m_url; ParsingMode m_parsing_mode { ParsingMode::Normal }; Vector m_tokens; @@ -519,7 +519,7 @@ private: namespace Web { -CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingParams const&, StringView, Optional location = {}, Vector> = {}); +CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingParams const&, StringView, Optional<::URL::URL> location = {}, Vector> = {}); CSS::Parser::Parser::PropertiesAndCustomProperties parse_css_style_attribute(CSS::Parser::ParsingParams const&, StringView); Vector parse_css_list_of_descriptors(CSS::Parser::ParsingParams const&, CSS::AtRuleID, StringView); RefPtr parse_css_value(CSS::Parser::ParsingParams const&, StringView, CSS::PropertyID property_id = CSS::PropertyID::Invalid); diff --git a/Libraries/LibWeb/CSS/Parser/RuleParsing.cpp b/Libraries/LibWeb/CSS/Parser/RuleParsing.cpp index cddd279e031..6896937d359 100644 --- a/Libraries/LibWeb/CSS/Parser/RuleParsing.cpp +++ b/Libraries/LibWeb/CSS/Parser/RuleParsing.cpp @@ -153,7 +153,7 @@ GC::Ptr Parser::convert_to_import_rule(AtRule const& rule) TokenStream tokens { rule.prelude }; tokens.discard_whitespace(); - Optional url = parse_url_function(tokens); + Optional<::URL::URL> url = parse_url_function(tokens); if (!url.has_value() && tokens.next_token().is(Token::Type::String)) url = complete_url(tokens.consume_a_token().token().string()); diff --git a/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp b/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp index 4480460f8f5..80a1f19d86c 100644 --- a/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp +++ b/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp @@ -2014,7 +2014,7 @@ RefPtr Parser::parse_image_value(TokenStream Parser::parse_easing_value(TokenStream& to return nullptr; } -Optional Parser::parse_url_function(TokenStream& tokens) +Optional<::URL::URL> Parser::parse_url_function(TokenStream& tokens) { auto transaction = tokens.begin_transaction(); auto& component_value = tokens.consume_a_token(); - auto convert_string_to_url = [&](StringView url_string) -> Optional { + auto convert_string_to_url = [&](StringView url_string) -> Optional<::URL::URL> { auto url = complete_url(url_string); if (url.has_value()) { transaction.commit(); diff --git a/Libraries/LibWeb/CSS/StyleComputer.cpp b/Libraries/LibWeb/CSS/StyleComputer.cpp index e58c0dfa56f..dda533237c6 100644 --- a/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -185,7 +185,7 @@ StyleComputer::StyleComputer(DOM::Document& document) StyleComputer::~StyleComputer() = default; -FontLoader::FontLoader(StyleComputer& style_computer, FlyString family_name, Vector unicode_ranges, Vector urls, Function on_load, Function on_fail) +FontLoader::FontLoader(StyleComputer& style_computer, FlyString family_name, Vector unicode_ranges, Vector<::URL::URL> urls, Function on_load, Function on_fail) : m_style_computer(style_computer) , m_family_name(move(family_name)) , m_unicode_ranges(move(unicode_ranges)) @@ -3028,11 +3028,11 @@ Optional StyleComputer::load_font_face(ParsedFontFace const& font_f .slope = font_face.slope().value_or(0), }; - Vector urls; + Vector<::URL::URL> urls; for (auto const& source : font_face.sources()) { // FIXME: These should be loaded relative to the stylesheet URL instead of the document URL. - if (source.local_or_url.has()) - urls.append(*m_document->encoding_parse_url(source.local_or_url.get().to_string())); + if (source.local_or_url.has<::URL::URL>()) + urls.append(*m_document->encoding_parse_url(source.local_or_url.get<::URL::URL>().to_string())); // FIXME: Handle local() } diff --git a/Libraries/LibWeb/CSS/StyleComputer.h b/Libraries/LibWeb/CSS/StyleComputer.h index 4fb5ec0cdd1..70747b5909a 100644 --- a/Libraries/LibWeb/CSS/StyleComputer.h +++ b/Libraries/LibWeb/CSS/StyleComputer.h @@ -315,7 +315,7 @@ private: class FontLoader : public ResourceClient { public: - FontLoader(StyleComputer& style_computer, FlyString family_name, Vector unicode_ranges, Vector urls, ESCAPING Function on_load = {}, ESCAPING Function on_fail = {}); + FontLoader(StyleComputer& style_computer, FlyString family_name, Vector unicode_ranges, Vector<::URL::URL> urls, ESCAPING Function on_load = {}, ESCAPING Function on_fail = {}); virtual ~FontLoader() override; @@ -340,7 +340,7 @@ private: FlyString m_family_name; Vector m_unicode_ranges; RefPtr m_vector_font; - Vector m_urls; + Vector<::URL::URL> m_urls; Function m_on_load; Function m_on_fail; }; diff --git a/Libraries/LibWeb/CSS/StyleSheet.h b/Libraries/LibWeb/CSS/StyleSheet.h index 8f03bcdd7e0..98f6f5d68b0 100644 --- a/Libraries/LibWeb/CSS/StyleSheet.h +++ b/Libraries/LibWeb/CSS/StyleSheet.h @@ -27,8 +27,8 @@ public: Optional href() const; - Optional location() const { return m_location; } - void set_location(Optional location) { m_location = move(location); } + Optional<::URL::URL> location() const { return m_location; } + void set_location(Optional<::URL::URL> location) { m_location = move(location); } String title() const { return m_title; } Optional title_for_bindings() const; @@ -68,7 +68,7 @@ private: GC::Ptr m_owner_node; GC::Ptr m_parent_style_sheet; - Optional m_location; + Optional<::URL::URL> m_location; String m_title; String m_type_string; diff --git a/Libraries/LibWeb/CSS/StyleSheetList.cpp b/Libraries/LibWeb/CSS/StyleSheetList.cpp index 18c49b2db11..be0db396e51 100644 --- a/Libraries/LibWeb/CSS/StyleSheetList.cpp +++ b/Libraries/LibWeb/CSS/StyleSheetList.cpp @@ -60,7 +60,7 @@ void StyleSheetList::add_a_css_style_sheet(CSS::CSSStyleSheet& sheet) } // https://www.w3.org/TR/cssom/#create-a-css-style-sheet -void StyleSheetList::create_a_css_style_sheet(String type, DOM::Element* owner_node, String media, String title, bool alternate, bool origin_clean, Optional location, CSS::CSSStyleSheet* parent_style_sheet, CSS::CSSRule* owner_rule, CSS::CSSStyleSheet& sheet) +void StyleSheetList::create_a_css_style_sheet(String type, DOM::Element* owner_node, String media, String title, bool alternate, bool origin_clean, Optional<::URL::URL> location, CSS::CSSStyleSheet* parent_style_sheet, CSS::CSSRule* owner_rule, CSS::CSSStyleSheet& sheet) { // 1. Create a new CSS style sheet object and set its properties as specified. // FIXME: We receive `sheet` from the caller already. This is weird. diff --git a/Libraries/LibWeb/CSS/StyleSheetList.h b/Libraries/LibWeb/CSS/StyleSheetList.h index 317a1865a88..935ab4fca11 100644 --- a/Libraries/LibWeb/CSS/StyleSheetList.h +++ b/Libraries/LibWeb/CSS/StyleSheetList.h @@ -21,7 +21,7 @@ public: void add_a_css_style_sheet(CSS::CSSStyleSheet&); void remove_a_css_style_sheet(CSS::CSSStyleSheet&); - void create_a_css_style_sheet(String type, DOM::Element* owner_node, String media, String title, bool alternate, bool origin_clean, Optional location, CSS::CSSStyleSheet* parent_style_sheet, CSS::CSSRule* owner_rule, CSS::CSSStyleSheet&); + void create_a_css_style_sheet(String type, DOM::Element* owner_node, String media, String title, bool alternate, bool origin_clean, Optional<::URL::URL> location, CSS::CSSStyleSheet* parent_style_sheet, CSS::CSSRule* owner_rule, CSS::CSSStyleSheet&); Vector> const& sheets() const { return m_sheets; } Vector>& sheets() { return m_sheets; } diff --git a/Libraries/LibWeb/CSS/StyleValues/FontSourceStyleValue.cpp b/Libraries/LibWeb/CSS/StyleValues/FontSourceStyleValue.cpp index dd3b15db4bf..ee8cb1641db 100644 --- a/Libraries/LibWeb/CSS/StyleValues/FontSourceStyleValue.cpp +++ b/Libraries/LibWeb/CSS/StyleValues/FontSourceStyleValue.cpp @@ -34,7 +34,7 @@ String FontSourceStyleValue::to_string(SerializationMode) const builder.append(')'); return builder.to_string_without_validation(); }, - [this](URL::URL const& url) { + [this](::URL::URL const& url) { // [ format()]? [ tech( #)]? // FIXME: tech() StringBuilder builder; @@ -59,8 +59,8 @@ bool FontSourceStyleValue::properties_equal(FontSourceStyleValue const& other) c } return false; }, - [&other](URL::URL const& url) { - if (auto* other_url = other.m_source.get_pointer()) { + [&other](::URL::URL const& url) { + if (auto* other_url = other.m_source.get_pointer<::URL::URL>()) { return url == *other_url; } return false; diff --git a/Libraries/LibWeb/CSS/StyleValues/FontSourceStyleValue.h b/Libraries/LibWeb/CSS/StyleValues/FontSourceStyleValue.h index 732f990bdaa..f088947afff 100644 --- a/Libraries/LibWeb/CSS/StyleValues/FontSourceStyleValue.h +++ b/Libraries/LibWeb/CSS/StyleValues/FontSourceStyleValue.h @@ -16,7 +16,7 @@ public: struct Local { NonnullRefPtr name; }; - using Source = Variant; + using Source = Variant; static ValueComparingNonnullRefPtr create(Source source, Optional format) { diff --git a/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp b/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp index c35ddf8fcde..1e12e5c1569 100644 --- a/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp +++ b/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp @@ -20,7 +20,7 @@ namespace Web::CSS { -ImageStyleValue::ImageStyleValue(URL::URL const& url) +ImageStyleValue::ImageStyleValue(::URL::URL const& url) : AbstractImageStyleValue(Type::Image) , m_url(url) { diff --git a/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h b/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h index d643635efe0..9359897dafb 100644 --- a/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h +++ b/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h @@ -25,7 +25,7 @@ class ImageStyleValue final using Base = AbstractImageStyleValue; public: - static ValueComparingNonnullRefPtr create(URL::URL const& url) + static ValueComparingNonnullRefPtr create(::URL::URL const& url) { return adopt_ref(*new (nothrow) ImageStyleValue(url)); } @@ -53,14 +53,14 @@ public: GC::Ptr image_data() const; private: - ImageStyleValue(URL::URL const&); + ImageStyleValue(::URL::URL const&); GC::Ptr m_resource_request; void animate(); Gfx::ImmutableBitmap const* bitmap(size_t frame_index, Gfx::IntSize = {}) const; - URL::URL m_url; + ::URL::URL m_url; WeakPtr m_document; size_t m_current_frame_index { 0 }; diff --git a/Libraries/LibWeb/CSS/StyleValues/URLStyleValue.h b/Libraries/LibWeb/CSS/StyleValues/URLStyleValue.h index 6a7844aa153..8e4b1f45a3f 100644 --- a/Libraries/LibWeb/CSS/StyleValues/URLStyleValue.h +++ b/Libraries/LibWeb/CSS/StyleValues/URLStyleValue.h @@ -14,14 +14,14 @@ namespace Web::CSS { class URLStyleValue final : public StyleValueWithDefaultOperators { public: - static ValueComparingNonnullRefPtr create(URL::URL const& url) + static ValueComparingNonnullRefPtr create(::URL::URL const& url) { return adopt_ref(*new (nothrow) URLStyleValue(url)); } virtual ~URLStyleValue() override = default; - URL::URL const& url() const { return m_url; } + ::URL::URL const& url() const { return m_url; } bool properties_equal(URLStyleValue const& other) const { return m_url == other.m_url; } @@ -31,13 +31,13 @@ public: } private: - URLStyleValue(URL::URL const& url) + URLStyleValue(::URL::URL const& url) : StyleValueWithDefaultOperators(Type::URL) , m_url(url) { } - URL::URL m_url; + ::URL::URL m_url; }; } diff --git a/Libraries/LibWeb/HTML/HTMLLinkElement.cpp b/Libraries/LibWeb/HTML/HTMLLinkElement.cpp index a37b421c82c..03d2e373c67 100644 --- a/Libraries/LibWeb/HTML/HTMLLinkElement.cpp +++ b/Libraries/LibWeb/HTML/HTMLLinkElement.cpp @@ -490,7 +490,7 @@ void HTMLLinkElement::process_stylesheet_resource(bool success, Fetch::Infrastru m_loaded_style_sheet = parse_css_stylesheet(CSS::Parser::ParsingParams(document(), *response.url()), decoded_string); if (m_loaded_style_sheet) { - Optional location; + Optional<::URL::URL> location; if (!response.url_list().is_empty()) location = response.url_list().first();