[webkit-reviews] review denied: [Bug 229917] Correctly support fragment-only URLs in CSS images : [Attachment 444204] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Nov 15 09:04:46 PST 2021
Darin Adler <darin at apple.com> has denied Matt Woodrow <m_woodrow at apple.com>'s
request for review:
Bug 229917: Correctly support fragment-only URLs in CSS images
https://bugs.webkit.org/show_bug.cgi?id=229917
Attachment 444204: Patch
https://bugs.webkit.org/attachment.cgi?id=444204&action=review
--- Comment #14 from Darin Adler <darin at apple.com> ---
Comment on attachment 444204
--> https://bugs.webkit.org/attachment.cgi?id=444204
Patch
View in context: https://bugs.webkit.org/attachment.cgi?id=444204&action=review
Thanks for taking this on! We really want to fix this. I don’t think this patch
is quite right yet.
review- because the use of String::find here is incorrect.
> Source/WebCore/css/CSSImageValue.cpp:92
> + if (!m_location.resolvedURL.string().find('#') ||
m_location.resolvedURL.string().isEmpty())
> + return m_location.resolvedURL;
Calling find is an inefficient way to to this check. One efficient way to check
if something starts with a '#' is to call the startsWith function passing the
character '#'. But given that the URL class already parsed the URL there is an
even more efficient way to check using URL class functions. However, this call
site has a URL but the other call site just has a String.
Also, we don’t want to write this special case explicitly in two different
places. We probably want to make a named function to do the check.
In addition, we should encapsulate this as a smarter version of completeURL, I
think.
> Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:3620
> + // Image URLs that start with an explicit #, or are empty should
be preserved, otherwise
> + // resolve the complete URL.
> + if (!string.find('#') || string.isEmpty()) {
> + return CSSImageValue::create(URL(URL(),
string.toAtomString().string()),
> + context.isContentOpaque ? LoadedFromOpaqueSource::Yes :
LoadedFromOpaqueSource::No);
> + } else {
> + return
CSSImageValue::create(context.completeURL(string.toAtomString().string()),
> + context.isContentOpaque ? LoadedFromOpaqueSource::Yes :
LoadedFromOpaqueSource::No);
> + }
Is this only for image URLs? What about other CSS URLs? I think this logic
should probably go in the CSSParserContext::completeURL function.
More information about the webkit-reviews
mailing list