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.
This commit is contained in:
Sam Atkins 2025-04-08 13:35:26 +01:00 committed by Tim Ledbetter
commit c82f4b46a2
Notes: github-actions[bot] 2025-04-09 17:48:07 +00:00
24 changed files with 77 additions and 76 deletions

View file

@ -23,13 +23,13 @@ namespace Web::CSS {
GC_DEFINE_ALLOCATOR(CSSImportRule); GC_DEFINE_ALLOCATOR(CSSImportRule);
GC::Ref<CSSImportRule> CSSImportRule::create(URL::URL url, DOM::Document& document, RefPtr<Supports> supports, Vector<NonnullRefPtr<MediaQuery>> media_query_list) GC::Ref<CSSImportRule> CSSImportRule::create(::URL::URL url, DOM::Document& document, RefPtr<Supports> supports, Vector<NonnullRefPtr<MediaQuery>> media_query_list)
{ {
auto& realm = document.realm(); auto& realm = document.realm();
return realm.create<CSSImportRule>(move(url), document, supports, move(media_query_list)); return realm.create<CSSImportRule>(move(url), document, supports, move(media_query_list));
} }
CSSImportRule::CSSImportRule(URL::URL url, DOM::Document& document, RefPtr<Supports> supports, Vector<NonnullRefPtr<MediaQuery>> media_query_list) CSSImportRule::CSSImportRule(::URL::URL url, DOM::Document& document, RefPtr<Supports> supports, Vector<NonnullRefPtr<MediaQuery>> media_query_list)
: CSSRule(document.realm(), Type::Import) : CSSRule(document.realm(), Type::Import)
, m_url(move(url)) , m_url(move(url))
, m_document(document) , m_document(document)

View file

@ -21,11 +21,11 @@ class CSSImportRule final
GC_DECLARE_ALLOCATOR(CSSImportRule); GC_DECLARE_ALLOCATOR(CSSImportRule);
public: public:
[[nodiscard]] static GC::Ref<CSSImportRule> create(URL::URL, DOM::Document&, RefPtr<Supports>, Vector<NonnullRefPtr<MediaQuery>>); [[nodiscard]] static GC::Ref<CSSImportRule> create(::URL::URL, DOM::Document&, RefPtr<Supports>, Vector<NonnullRefPtr<MediaQuery>>);
virtual ~CSSImportRule() = default; 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". // 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(); } String href() const { return m_url.to_string(); }
@ -37,7 +37,7 @@ public:
Optional<String> supports_text() const; Optional<String> supports_text() const;
private: private:
CSSImportRule(URL::URL, DOM::Document&, RefPtr<Supports>, Vector<NonnullRefPtr<MediaQuery>>); CSSImportRule(::URL::URL, DOM::Document&, RefPtr<Supports>, Vector<NonnullRefPtr<MediaQuery>>);
virtual void initialize(JS::Realm&) override; virtual void initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override; virtual void visit_edges(Cell::Visitor&) override;
@ -49,7 +49,7 @@ private:
void fetch(); void fetch();
void set_style_sheet(GC::Ref<CSSStyleSheet>); void set_style_sheet(GC::Ref<CSSStyleSheet>);
URL::URL m_url; ::URL::URL m_url;
GC::Ptr<DOM::Document> m_document; GC::Ptr<DOM::Document> m_document;
RefPtr<Supports> m_supports; RefPtr<Supports> m_supports;
Vector<NonnullRefPtr<MediaQuery>> m_media_query_list; Vector<NonnullRefPtr<MediaQuery>> m_media_query_list;

View file

@ -24,7 +24,7 @@ namespace Web::CSS {
GC_DEFINE_ALLOCATOR(CSSStyleSheet); GC_DEFINE_ALLOCATOR(CSSStyleSheet);
GC::Ref<CSSStyleSheet> CSSStyleSheet::create(JS::Realm& realm, CSSRuleList& rules, MediaList& media, Optional<URL::URL> location) GC::Ref<CSSStyleSheet> CSSStyleSheet::create(JS::Realm& realm, CSSRuleList& rules, MediaList& media, Optional<::URL::URL> location)
{ {
return realm.create<CSSStyleSheet>(realm, rules, media, move(location)); return realm.create<CSSStyleSheet>(realm, rules, media, move(location));
} }
@ -41,12 +41,12 @@ WebIDL::ExceptionOr<GC::Ref<CSSStyleSheet>> CSSStyleSheet::construct_impl(JS::Re
// 3. Set sheets stylesheet base URL to the baseURL attribute value from options. // 3. Set sheets stylesheet base URL to the baseURL attribute value from options.
if (options.has_value() && options->base_url.has_value()) { if (options.has_value() && options->base_url.has_value()) {
Optional<URL::URL> sheet_location_url; Optional<::URL::URL> sheet_location_url;
if (sheet->location().has_value()) if (sheet->location().has_value())
sheet_location_url = sheet->location().release_value(); sheet_location_url = sheet->location().release_value();
// AD-HOC: This isn't explicitly mentioned in the specification, but multiple modern browsers do this. // AD-HOC: This isn't explicitly mentioned in the specification, but multiple modern browsers do this.
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()); 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()) if (!url.has_value())
return WebIDL::NotAllowedError::create(realm, "Constructed style sheets must have a valid base URL"_string); return WebIDL::NotAllowedError::create(realm, "Constructed style sheets must have a valid base URL"_string);
@ -95,7 +95,7 @@ WebIDL::ExceptionOr<GC::Ref<CSSStyleSheet>> CSSStyleSheet::construct_impl(JS::Re
return sheet; return sheet;
} }
CSSStyleSheet::CSSStyleSheet(JS::Realm& realm, CSSRuleList& rules, MediaList& media, Optional<URL::URL> location) CSSStyleSheet::CSSStyleSheet(JS::Realm& realm, CSSRuleList& rules, MediaList& media, Optional<::URL::URL> location)
: StyleSheet(realm, media) : StyleSheet(realm, media)
, m_rules(&rules) , m_rules(&rules)
{ {

View file

@ -27,12 +27,13 @@ struct CSSStyleSheetInit {
bool disabled { false }; bool disabled { false };
}; };
// https://drafts.csswg.org/cssom-1/#cssstylesheet
class CSSStyleSheet final : public StyleSheet { class CSSStyleSheet final : public StyleSheet {
WEB_PLATFORM_OBJECT(CSSStyleSheet, StyleSheet); WEB_PLATFORM_OBJECT(CSSStyleSheet, StyleSheet);
GC_DECLARE_ALLOCATOR(CSSStyleSheet); GC_DECLARE_ALLOCATOR(CSSStyleSheet);
public: public:
[[nodiscard]] static GC::Ref<CSSStyleSheet> create(JS::Realm&, CSSRuleList&, MediaList&, Optional<URL::URL> location); [[nodiscard]] static GC::Ref<CSSStyleSheet> create(JS::Realm&, CSSRuleList&, MediaList&, Optional<::URL::URL> location);
static WebIDL::ExceptionOr<GC::Ref<CSSStyleSheet>> construct_impl(JS::Realm&, Optional<CSSStyleSheetInit> const& options = {}); static WebIDL::ExceptionOr<GC::Ref<CSSStyleSheet>> construct_impl(JS::Realm&, Optional<CSSStyleSheetInit> const& options = {});
virtual ~CSSStyleSheet() override = default; virtual ~CSSStyleSheet() override = default;
@ -74,8 +75,8 @@ public:
Vector<GC::Ref<CSSImportRule>> const& import_rules() const { return m_import_rules; } Vector<GC::Ref<CSSImportRule>> const& import_rules() const { return m_import_rules; }
Optional<URL::URL> base_url() const { return m_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); } void set_base_url(Optional<::URL::URL> base_url) { m_base_url = move(base_url); }
bool constructed() const { return m_constructed; } bool constructed() const { return m_constructed; }
@ -94,7 +95,7 @@ public:
bool has_associated_font_loader(FontLoader& font_loader) const; bool has_associated_font_loader(FontLoader& font_loader) const;
private: private:
CSSStyleSheet(JS::Realm&, CSSRuleList&, MediaList&, Optional<URL::URL> location); CSSStyleSheet(JS::Realm&, CSSRuleList&, MediaList&, Optional<::URL::URL> location);
virtual void initialize(JS::Realm&) override; virtual void initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override; virtual void visit_edges(Cell::Visitor&) override;
@ -113,7 +114,7 @@ private:
GC::Ptr<CSSRule> m_owner_css_rule; GC::Ptr<CSSRule> m_owner_css_rule;
Optional<URL::URL> m_base_url; Optional<::URL::URL> m_base_url;
GC::Ptr<DOM::Document const> m_constructor_document; GC::Ptr<DOM::Document const> m_constructor_document;
HashTable<GC::Ptr<DOM::Node>> m_owning_documents_or_shadow_roots; HashTable<GC::Ptr<DOM::Node>> m_owning_documents_or_shadow_roots;
bool m_constructed { false }; bool m_constructed { false };

View file

@ -225,40 +225,40 @@ public:
: m_value(color) : m_value(color)
{ {
} }
SVGPaint(URL::URL const& url) SVGPaint(::URL::URL const& url)
: m_value(url) : m_value(url)
{ {
} }
bool is_color() const { return m_value.has<Color>(); } bool is_color() const { return m_value.has<Color>(); }
bool is_url() const { return m_value.has<URL::URL>(); } bool is_url() const { return m_value.has<::URL::URL>(); }
Color as_color() const { return m_value.get<Color>(); } Color as_color() const { return m_value.get<Color>(); }
URL::URL const& as_url() const { return m_value.get<URL::URL>(); } ::URL::URL const& as_url() const { return m_value.get<::URL::URL>(); }
private: private:
Variant<URL::URL, Color> m_value; Variant<::URL::URL, Color> m_value;
}; };
// https://drafts.fxtf.org/css-masking-1/#typedef-mask-reference // https://drafts.fxtf.org/css-masking-1/#typedef-mask-reference
class MaskReference { class MaskReference {
public: public:
// TODO: Support other mask types. // TODO: Support other mask types.
MaskReference(URL::URL const& url) MaskReference(::URL::URL const& url)
: m_url(url) : m_url(url)
{ {
} }
URL::URL const& url() const { return m_url; } ::URL::URL const& url() const { return m_url; }
private: private:
URL::URL m_url; ::URL::URL m_url;
}; };
// https://drafts.fxtf.org/css-masking/#the-clip-path // https://drafts.fxtf.org/css-masking/#the-clip-path
// TODO: Support clip sources. // TODO: Support clip sources.
class ClipPathReference { class ClipPathReference {
public: public:
ClipPathReference(URL::URL const& url) ClipPathReference(::URL::URL const& url)
: m_clip_source(url) : m_clip_source(url)
{ {
} }
@ -270,16 +270,16 @@ public:
bool is_basic_shape() const { return m_clip_source.has<BasicShape>(); } bool is_basic_shape() const { return m_clip_source.has<BasicShape>(); }
bool is_url() const { return m_clip_source.has<URL::URL>(); } bool is_url() const { return m_clip_source.has<::URL::URL>(); }
URL::URL const& url() const { return m_clip_source.get<URL::URL>(); } ::URL::URL const& url() const { return m_clip_source.get<::URL::URL>(); }
BasicShapeStyleValue const& basic_shape() const { return *m_clip_source.get<BasicShape>(); } BasicShapeStyleValue const& basic_shape() const { return *m_clip_source.get<BasicShape>(); }
private: private:
using BasicShape = NonnullRefPtr<BasicShapeStyleValue const>; using BasicShape = NonnullRefPtr<BasicShapeStyleValue const>;
Variant<URL::URL, BasicShape> m_clip_source; Variant<::URL::URL, BasicShape> m_clip_source;
}; };
struct BackgroundLayerData { struct BackgroundLayerData {

View file

@ -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()); auto base = sheet.base_url().value_or(environment_settings.api_base_url());
// 3. Let parsedUrl be the result of the URL parser steps with urlValues url and base. If the algorithm returns an error, return. // 3. Let parsedUrl be the result of the URL parser steps with urlValues 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()) if (!parsed_url.has_value())
return; return;

View file

@ -38,7 +38,7 @@ Vector<ParsedFontFace::Source> ParsedFontFace::sources_from_style_value(CSSStyle
[&](FontSourceStyleValue::Local const& local) { [&](FontSourceStyleValue::Local const& local) {
sources.empend(extract_font_name(local.name), OptionalNone {}); sources.empend(extract_font_name(local.name), OptionalNone {});
}, },
[&](URL::URL const& url) { [&](::URL::URL const& url) {
// FIXME: tech() // FIXME: tech()
sources.empend(url, font_source.format()); sources.empend(url, font_source.format());
}); });

View file

@ -19,7 +19,7 @@ namespace Web::CSS {
class ParsedFontFace { class ParsedFontFace {
public: public:
struct Source { struct Source {
Variant<FlyString, URL::URL> local_or_url; Variant<FlyString, ::URL::URL> local_or_url;
// FIXME: Do we need to keep this around, or is it only needed to discard unwanted formats during parsing? // FIXME: Do we need to keep this around, or is it only needed to discard unwanted formats during parsing?
Optional<FlyString> format; Optional<FlyString> format;
}; };

View file

@ -42,7 +42,7 @@ GC::Ref<JS::Realm> internal_css_realm()
return *realm; return *realm;
} }
CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingParams const& context, StringView css, Optional<URL::URL> location, Vector<NonnullRefPtr<CSS::MediaQuery>> media_query_list) CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingParams const& context, StringView css, Optional<::URL::URL> location, Vector<NonnullRefPtr<CSS::MediaQuery>> media_query_list)
{ {
if (css.is_empty()) { if (css.is_empty()) {
auto rule_list = CSS::CSSRuleList::create_empty(*context.realm); auto rule_list = CSS::CSSRuleList::create_empty(*context.realm);

View file

@ -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) : realm(realm)
, url(move(url)) , url(move(url))
, mode(mode) , 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<JS::Realm&>(document.realm())) : realm(const_cast<JS::Realm&>(document.realm()))
, document(&document) , document(&document)
, url(move(url)) , url(move(url))
@ -86,7 +86,7 @@ Parser::Parser(ParsingParams const& context, Vector<Token> tokens)
// https://drafts.csswg.org/css-syntax/#parse-stylesheet // https://drafts.csswg.org/css-syntax/#parse-stylesheet
template<typename T> template<typename T>
Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream<T>& input, Optional<URL::URL> location) Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream<T>& input, Optional<::URL::URL> location)
{ {
// To parse a stylesheet from an input given an optional url location: // To parse a stylesheet from an input given an optional url location:
@ -119,7 +119,7 @@ Vector<Rule> Parser::parse_a_stylesheets_contents(TokenStream<T>& input)
} }
// https://drafts.csswg.org/css-syntax/#parse-a-css-stylesheet // https://drafts.csswg.org/css-syntax/#parse-a-css-stylesheet
CSSStyleSheet* Parser::parse_as_css_stylesheet(Optional<URL::URL> location, Vector<NonnullRefPtr<MediaQuery>> media_query_list) CSSStyleSheet* Parser::parse_as_css_stylesheet(Optional<::URL::URL> location, Vector<NonnullRefPtr<MediaQuery>> media_query_list)
{ {
// To parse a CSS stylesheet, first parse a stylesheet. // To parse a CSS stylesheet, first parse a stylesheet.
auto const& style_sheet = parse_a_stylesheet(m_token_stream, {}); 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; return ContextType::Unknown;
} }
template Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream<Token>&, Optional<URL::URL>); template Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream<Token>&, Optional<::URL::URL>);
template Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream<ComponentValue>&, Optional<URL::URL>); template Parser::ParsedStyleSheet Parser::parse_a_stylesheet(TokenStream<ComponentValue>&, Optional<::URL::URL>);
template Vector<Rule> Parser::parse_a_stylesheets_contents(TokenStream<Token>& input); template Vector<Rule> Parser::parse_a_stylesheets_contents(TokenStream<Token>& input);
template Vector<Rule> Parser::parse_a_stylesheets_contents(TokenStream<ComponentValue>& input); template Vector<Rule> Parser::parse_a_stylesheets_contents(TokenStream<ComponentValue>& input);
@ -1853,10 +1853,10 @@ bool Parser::is_parsing_svg_presentation_attribute() const
// https://www.w3.org/TR/css-values-4/#relative-urls // https://www.w3.org/TR/css-values-4/#relative-urls
// FIXME: URLs shouldn't be completed during parsing, but when used. // FIXME: URLs shouldn't be completed during parsing, but when used.
Optional<URL::URL> Parser::complete_url(StringView relative_url) const Optional<::URL::URL> Parser::complete_url(StringView relative_url) const
{ {
if (!m_url.is_valid()) 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); return m_url.complete_url(relative_url);
} }

View file

@ -69,13 +69,13 @@ enum class ParsingMode {
struct ParsingParams { struct ParsingParams {
explicit ParsingParams(ParsingMode = ParsingMode::Normal); explicit ParsingParams(ParsingMode = ParsingMode::Normal);
explicit ParsingParams(JS::Realm&, ParsingMode = ParsingMode::Normal); explicit ParsingParams(JS::Realm&, ParsingMode = ParsingMode::Normal);
explicit ParsingParams(JS::Realm&, 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&, ::URL::URL, ParsingMode = ParsingMode::Normal);
explicit ParsingParams(DOM::Document const&, ParsingMode = ParsingMode::Normal); explicit ParsingParams(DOM::Document const&, ParsingMode = ParsingMode::Normal);
GC::Ptr<JS::Realm> realm; GC::Ptr<JS::Realm> realm;
GC::Ptr<DOM::Document const> document; GC::Ptr<DOM::Document const> document;
URL::URL url; ::URL::URL url;
ParsingMode mode { ParsingMode::Normal }; ParsingMode mode { ParsingMode::Normal };
}; };
@ -89,7 +89,7 @@ class Parser {
public: public:
static Parser create(ParsingParams const&, StringView input, StringView encoding = "utf-8"sv); static Parser create(ParsingParams const&, StringView input, StringView encoding = "utf-8"sv);
CSSStyleSheet* parse_as_css_stylesheet(Optional<URL::URL> location, Vector<NonnullRefPtr<MediaQuery>> media_query_list = {}); CSSStyleSheet* parse_as_css_stylesheet(Optional<::URL::URL> location, Vector<NonnullRefPtr<MediaQuery>> media_query_list = {});
struct PropertiesAndCustomProperties { struct PropertiesAndCustomProperties {
Vector<StyleProperty> properties; Vector<StyleProperty> properties;
@ -142,11 +142,11 @@ private:
// "Parse a stylesheet" is intended to be the normal parser entry point, for parsing stylesheets. // "Parse a stylesheet" is intended to be the normal parser entry point, for parsing stylesheets.
struct ParsedStyleSheet { struct ParsedStyleSheet {
Optional<URL::URL> location; Optional<::URL::URL> location;
Vector<Rule> rules; Vector<Rule> rules;
}; };
template<typename T> template<typename T>
ParsedStyleSheet parse_a_stylesheet(TokenStream<T>&, Optional<URL::URL> location); ParsedStyleSheet parse_a_stylesheet(TokenStream<T>&, Optional<::URL::URL> location);
// "Parse a stylesheets contents" is intended for use by the CSSStyleSheet replace() method, and similar, which parse text into the contents of an existing stylesheet. // "Parse a stylesheets contents" is intended for use by the CSSStyleSheet replace() method, and similar, which parse text into the contents of an existing stylesheet.
template<typename T> template<typename T>
@ -276,7 +276,7 @@ private:
Optional<GridRepeat> parse_repeat(Vector<ComponentValue> const&); Optional<GridRepeat> parse_repeat(Vector<ComponentValue> const&);
Optional<ExplicitGridTrack> parse_track_sizing_function(ComponentValue const&); Optional<ExplicitGridTrack> parse_track_sizing_function(ComponentValue const&);
Optional<URL::URL> parse_url_function(TokenStream<ComponentValue>&); Optional<::URL::URL> parse_url_function(TokenStream<ComponentValue>&);
RefPtr<CSSStyleValue> parse_url_value(TokenStream<ComponentValue>&); RefPtr<CSSStyleValue> parse_url_value(TokenStream<ComponentValue>&);
Optional<ShapeRadius> parse_shape_radius(TokenStream<ComponentValue>&); Optional<ShapeRadius> parse_shape_radius(TokenStream<ComponentValue>&);
@ -471,11 +471,11 @@ private:
JS::Realm& realm() const; JS::Realm& realm() const;
bool in_quirks_mode() const; bool in_quirks_mode() const;
bool is_parsing_svg_presentation_attribute() const; bool is_parsing_svg_presentation_attribute() const;
Optional<URL::URL> complete_url(StringView) const; Optional<::URL::URL> complete_url(StringView) const;
GC::Ptr<DOM::Document const> m_document; GC::Ptr<DOM::Document const> m_document;
GC::Ptr<JS::Realm> m_realm; GC::Ptr<JS::Realm> m_realm;
URL::URL m_url; ::URL::URL m_url;
ParsingMode m_parsing_mode { ParsingMode::Normal }; ParsingMode m_parsing_mode { ParsingMode::Normal };
Vector<Token> m_tokens; Vector<Token> m_tokens;
@ -519,7 +519,7 @@ private:
namespace Web { namespace Web {
CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingParams const&, StringView, Optional<URL::URL> location = {}, Vector<NonnullRefPtr<CSS::MediaQuery>> = {}); CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingParams const&, StringView, Optional<::URL::URL> location = {}, Vector<NonnullRefPtr<CSS::MediaQuery>> = {});
CSS::Parser::Parser::PropertiesAndCustomProperties parse_css_style_attribute(CSS::Parser::ParsingParams const&, StringView); CSS::Parser::Parser::PropertiesAndCustomProperties parse_css_style_attribute(CSS::Parser::ParsingParams const&, StringView);
Vector<CSS::Descriptor> parse_css_list_of_descriptors(CSS::Parser::ParsingParams const&, CSS::AtRuleID, StringView); Vector<CSS::Descriptor> parse_css_list_of_descriptors(CSS::Parser::ParsingParams const&, CSS::AtRuleID, StringView);
RefPtr<CSS::CSSStyleValue> parse_css_value(CSS::Parser::ParsingParams const&, StringView, CSS::PropertyID property_id = CSS::PropertyID::Invalid); RefPtr<CSS::CSSStyleValue> parse_css_value(CSS::Parser::ParsingParams const&, StringView, CSS::PropertyID property_id = CSS::PropertyID::Invalid);

View file

@ -153,7 +153,7 @@ GC::Ptr<CSSImportRule> Parser::convert_to_import_rule(AtRule const& rule)
TokenStream tokens { rule.prelude }; TokenStream tokens { rule.prelude };
tokens.discard_whitespace(); tokens.discard_whitespace();
Optional<URL::URL> url = parse_url_function(tokens); Optional<::URL::URL> url = parse_url_function(tokens);
if (!url.has_value() && tokens.next_token().is(Token::Type::String)) if (!url.has_value() && tokens.next_token().is(Token::Type::String))
url = complete_url(tokens.consume_a_token().token().string()); url = complete_url(tokens.consume_a_token().token().string());

View file

@ -2014,7 +2014,7 @@ RefPtr<AbstractImageStyleValue> Parser::parse_image_value(TokenStream<ComponentV
if (url.has_value()) { if (url.has_value()) {
// If the value is a 'url(..)' parse as image, but if it is just a reference 'url(#xx)', leave it alone, // If the value is a 'url(..)' parse as image, but if it is just a reference 'url(#xx)', leave it alone,
// so we can parse as URL further on. These URLs are used as references inside SVG documents for masks. // so we can parse as URL further on. These URLs are used as references inside SVG documents for masks.
if (!url.value().equals(m_url, URL::ExcludeFragment::Yes)) { if (!url.value().equals(m_url, ::URL::ExcludeFragment::Yes)) {
tokens.discard_a_mark(); tokens.discard_a_mark();
return ImageStyleValue::create(url.value()); return ImageStyleValue::create(url.value());
} }
@ -2562,12 +2562,12 @@ RefPtr<CSSStyleValue> Parser::parse_easing_value(TokenStream<ComponentValue>& to
return nullptr; return nullptr;
} }
Optional<URL::URL> Parser::parse_url_function(TokenStream<ComponentValue>& tokens) Optional<::URL::URL> Parser::parse_url_function(TokenStream<ComponentValue>& tokens)
{ {
auto transaction = tokens.begin_transaction(); auto transaction = tokens.begin_transaction();
auto& component_value = tokens.consume_a_token(); auto& component_value = tokens.consume_a_token();
auto convert_string_to_url = [&](StringView url_string) -> Optional<URL::URL> { auto convert_string_to_url = [&](StringView url_string) -> Optional<::URL::URL> {
auto url = complete_url(url_string); auto url = complete_url(url_string);
if (url.has_value()) { if (url.has_value()) {
transaction.commit(); transaction.commit();

View file

@ -185,7 +185,7 @@ StyleComputer::StyleComputer(DOM::Document& document)
StyleComputer::~StyleComputer() = default; StyleComputer::~StyleComputer() = default;
FontLoader::FontLoader(StyleComputer& style_computer, FlyString family_name, Vector<Gfx::UnicodeRange> unicode_ranges, Vector<URL::URL> urls, Function<void(FontLoader const&)> on_load, Function<void()> on_fail) FontLoader::FontLoader(StyleComputer& style_computer, FlyString family_name, Vector<Gfx::UnicodeRange> unicode_ranges, Vector<::URL::URL> urls, Function<void(FontLoader const&)> on_load, Function<void()> on_fail)
: m_style_computer(style_computer) : m_style_computer(style_computer)
, m_family_name(move(family_name)) , m_family_name(move(family_name))
, m_unicode_ranges(move(unicode_ranges)) , m_unicode_ranges(move(unicode_ranges))
@ -3028,11 +3028,11 @@ Optional<FontLoader&> StyleComputer::load_font_face(ParsedFontFace const& font_f
.slope = font_face.slope().value_or(0), .slope = font_face.slope().value_or(0),
}; };
Vector<URL::URL> urls; Vector<::URL::URL> urls;
for (auto const& source : font_face.sources()) { for (auto const& source : font_face.sources()) {
// FIXME: These should be loaded relative to the stylesheet URL instead of the document URL. // FIXME: These should be loaded relative to the stylesheet URL instead of the document URL.
if (source.local_or_url.has<URL::URL>()) if (source.local_or_url.has<::URL::URL>())
urls.append(*m_document->encoding_parse_url(source.local_or_url.get<URL::URL>().to_string())); urls.append(*m_document->encoding_parse_url(source.local_or_url.get<::URL::URL>().to_string()));
// FIXME: Handle local() // FIXME: Handle local()
} }

View file

@ -315,7 +315,7 @@ private:
class FontLoader : public ResourceClient { class FontLoader : public ResourceClient {
public: public:
FontLoader(StyleComputer& style_computer, FlyString family_name, Vector<Gfx::UnicodeRange> unicode_ranges, Vector<URL::URL> urls, ESCAPING Function<void(FontLoader const&)> on_load = {}, ESCAPING Function<void()> on_fail = {}); FontLoader(StyleComputer& style_computer, FlyString family_name, Vector<Gfx::UnicodeRange> unicode_ranges, Vector<::URL::URL> urls, ESCAPING Function<void(FontLoader const&)> on_load = {}, ESCAPING Function<void()> on_fail = {});
virtual ~FontLoader() override; virtual ~FontLoader() override;
@ -340,7 +340,7 @@ private:
FlyString m_family_name; FlyString m_family_name;
Vector<Gfx::UnicodeRange> m_unicode_ranges; Vector<Gfx::UnicodeRange> m_unicode_ranges;
RefPtr<Gfx::Typeface> m_vector_font; RefPtr<Gfx::Typeface> m_vector_font;
Vector<URL::URL> m_urls; Vector<::URL::URL> m_urls;
Function<void(FontLoader const&)> m_on_load; Function<void(FontLoader const&)> m_on_load;
Function<void()> m_on_fail; Function<void()> m_on_fail;
}; };

View file

@ -27,8 +27,8 @@ public:
Optional<String> href() const; Optional<String> href() const;
Optional<URL::URL> location() const { return m_location; } Optional<::URL::URL> location() const { return m_location; }
void set_location(Optional<URL::URL> location) { m_location = move(location); } void set_location(Optional<::URL::URL> location) { m_location = move(location); }
String title() const { return m_title; } String title() const { return m_title; }
Optional<String> title_for_bindings() const; Optional<String> title_for_bindings() const;
@ -68,7 +68,7 @@ private:
GC::Ptr<DOM::Element> m_owner_node; GC::Ptr<DOM::Element> m_owner_node;
GC::Ptr<CSSStyleSheet> m_parent_style_sheet; GC::Ptr<CSSStyleSheet> m_parent_style_sheet;
Optional<URL::URL> m_location; Optional<::URL::URL> m_location;
String m_title; String m_title;
String m_type_string; String m_type_string;

View file

@ -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 // 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<URL::URL> 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. // 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. // FIXME: We receive `sheet` from the caller already. This is weird.

View file

@ -21,7 +21,7 @@ public:
void add_a_css_style_sheet(CSS::CSSStyleSheet&); void add_a_css_style_sheet(CSS::CSSStyleSheet&);
void remove_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<String> 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<GC::Ref<CSSStyleSheet>> const& sheets() const { return m_sheets; } Vector<GC::Ref<CSSStyleSheet>> const& sheets() const { return m_sheets; }
Vector<GC::Ref<CSSStyleSheet>>& sheets() { return m_sheets; } Vector<GC::Ref<CSSStyleSheet>>& sheets() { return m_sheets; }

View file

@ -34,7 +34,7 @@ String FontSourceStyleValue::to_string(SerializationMode) const
builder.append(')'); builder.append(')');
return builder.to_string_without_validation(); return builder.to_string_without_validation();
}, },
[this](URL::URL const& url) { [this](::URL::URL const& url) {
// <url> [ format(<font-format>)]? [ tech( <font-tech>#)]? // <url> [ format(<font-format>)]? [ tech( <font-tech>#)]?
// FIXME: tech() // FIXME: tech()
StringBuilder builder; StringBuilder builder;
@ -59,8 +59,8 @@ bool FontSourceStyleValue::properties_equal(FontSourceStyleValue const& other) c
} }
return false; return false;
}, },
[&other](URL::URL const& url) { [&other](::URL::URL const& url) {
if (auto* other_url = other.m_source.get_pointer<URL::URL>()) { if (auto* other_url = other.m_source.get_pointer<::URL::URL>()) {
return url == *other_url; return url == *other_url;
} }
return false; return false;

View file

@ -16,7 +16,7 @@ public:
struct Local { struct Local {
NonnullRefPtr<CSSStyleValue> name; NonnullRefPtr<CSSStyleValue> name;
}; };
using Source = Variant<Local, URL::URL>; using Source = Variant<Local, ::URL::URL>;
static ValueComparingNonnullRefPtr<FontSourceStyleValue> create(Source source, Optional<FlyString> format) static ValueComparingNonnullRefPtr<FontSourceStyleValue> create(Source source, Optional<FlyString> format)
{ {

View file

@ -20,7 +20,7 @@
namespace Web::CSS { namespace Web::CSS {
ImageStyleValue::ImageStyleValue(URL::URL const& url) ImageStyleValue::ImageStyleValue(::URL::URL const& url)
: AbstractImageStyleValue(Type::Image) : AbstractImageStyleValue(Type::Image)
, m_url(url) , m_url(url)
{ {

View file

@ -25,7 +25,7 @@ class ImageStyleValue final
using Base = AbstractImageStyleValue; using Base = AbstractImageStyleValue;
public: public:
static ValueComparingNonnullRefPtr<ImageStyleValue> create(URL::URL const& url) static ValueComparingNonnullRefPtr<ImageStyleValue> create(::URL::URL const& url)
{ {
return adopt_ref(*new (nothrow) ImageStyleValue(url)); return adopt_ref(*new (nothrow) ImageStyleValue(url));
} }
@ -53,14 +53,14 @@ public:
GC::Ptr<HTML::DecodedImageData> image_data() const; GC::Ptr<HTML::DecodedImageData> image_data() const;
private: private:
ImageStyleValue(URL::URL const&); ImageStyleValue(::URL::URL const&);
GC::Ptr<HTML::SharedResourceRequest> m_resource_request; GC::Ptr<HTML::SharedResourceRequest> m_resource_request;
void animate(); void animate();
Gfx::ImmutableBitmap const* bitmap(size_t frame_index, Gfx::IntSize = {}) const; Gfx::ImmutableBitmap const* bitmap(size_t frame_index, Gfx::IntSize = {}) const;
URL::URL m_url; ::URL::URL m_url;
WeakPtr<DOM::Document> m_document; WeakPtr<DOM::Document> m_document;
size_t m_current_frame_index { 0 }; size_t m_current_frame_index { 0 };

View file

@ -14,14 +14,14 @@ namespace Web::CSS {
class URLStyleValue final : public StyleValueWithDefaultOperators<URLStyleValue> { class URLStyleValue final : public StyleValueWithDefaultOperators<URLStyleValue> {
public: public:
static ValueComparingNonnullRefPtr<URLStyleValue> create(URL::URL const& url) static ValueComparingNonnullRefPtr<URLStyleValue> create(::URL::URL const& url)
{ {
return adopt_ref(*new (nothrow) URLStyleValue(url)); return adopt_ref(*new (nothrow) URLStyleValue(url));
} }
virtual ~URLStyleValue() override = default; 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; } bool properties_equal(URLStyleValue const& other) const { return m_url == other.m_url; }
@ -31,13 +31,13 @@ public:
} }
private: private:
URLStyleValue(URL::URL const& url) URLStyleValue(::URL::URL const& url)
: StyleValueWithDefaultOperators(Type::URL) : StyleValueWithDefaultOperators(Type::URL)
, m_url(url) , m_url(url)
{ {
} }
URL::URL m_url; ::URL::URL m_url;
}; };
} }

View file

@ -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); m_loaded_style_sheet = parse_css_stylesheet(CSS::Parser::ParsingParams(document(), *response.url()), decoded_string);
if (m_loaded_style_sheet) { if (m_loaded_style_sheet) {
Optional<String> location; Optional<::URL::URL> location;
if (!response.url_list().is_empty()) if (!response.url_list().is_empty())
location = response.url_list().first(); location = response.url_list().first();