Diff
Modified: trunk/Source/WebCore/ChangeLog (251492 => 251493)
--- trunk/Source/WebCore/ChangeLog 2019-10-23 20:14:54 UTC (rev 251492)
+++ trunk/Source/WebCore/ChangeLog 2019-10-23 20:14:57 UTC (rev 251493)
@@ -349,6 +349,31 @@
2019-10-22 Simon Fraser <simon.fra...@apple.com>
+ Change some image-related CSSValue subclasses to use references
+ https://bugs.webkit.org/show_bug.cgi?id=203284
+
+ Reviewed by Zalan Bujtas.
+
+ The fake-virtual CSSValue subclasses all have the same functions, but their types
+ have diverged. Convert some from pointers to references.
+
+ * css/CSSCanvasValue.cpp:
+ (WebCore::CSSCanvasValue::fixedSize):
+ (WebCore::CSSCanvasValue::image):
+ * css/CSSCanvasValue.h:
+ * css/CSSFilterImageValue.cpp:
+ (WebCore::CSSFilterImageValue::fixedSize):
+ (WebCore::CSSFilterImageValue::image):
+ * css/CSSFilterImageValue.h:
+ * css/CSSImageGeneratorValue.cpp:
+ (WebCore::CSSImageGeneratorValue::image):
+ (WebCore::CSSImageGeneratorValue::fixedSize):
+ * css/CSSNamedImageValue.cpp:
+ (WebCore::CSSNamedImageValue::image):
+ * css/CSSNamedImageValue.h:
+
+2019-10-22 Simon Fraser <simon.fra...@apple.com>
+
wpt/css/css-images/gradient/color-stops-parsing.html fails
https://bugs.webkit.org/show_bug.cgi?id=200211
Modified: trunk/Source/WebCore/css/CSSCanvasValue.cpp (251492 => 251493)
--- trunk/Source/WebCore/css/CSSCanvasValue.cpp 2019-10-23 20:14:54 UTC (rev 251492)
+++ trunk/Source/WebCore/css/CSSCanvasValue.cpp 2019-10-23 20:14:57 UTC (rev 251493)
@@ -60,11 +60,11 @@
m_element = nullptr;
}
-FloatSize CSSCanvasValue::fixedSize(const RenderElement* renderer)
+FloatSize CSSCanvasValue::fixedSize(const RenderElement& renderer)
{
- if (HTMLCanvasElement* elt = element(renderer->document()))
+ if (HTMLCanvasElement* elt = element(renderer.document()))
return FloatSize(elt->width(), elt->height());
- return FloatSize();
+ return { };
}
HTMLCanvasElement* CSSCanvasValue::element(Document& document)
@@ -78,10 +78,10 @@
return m_element;
}
-RefPtr<Image> CSSCanvasValue::image(RenderElement* renderer, const FloatSize& /*size*/)
+RefPtr<Image> CSSCanvasValue::image(RenderElement& renderer, const FloatSize& /*size*/)
{
- ASSERT(clients().contains(renderer));
- HTMLCanvasElement* element = this->element(renderer->document());
+ ASSERT(clients().contains(&renderer));
+ HTMLCanvasElement* element = this->element(renderer.document());
if (!element || !element->buffer())
return nullptr;
return element->copiedImage();
Modified: trunk/Source/WebCore/css/CSSCanvasValue.h (251492 => 251493)
--- trunk/Source/WebCore/css/CSSCanvasValue.h 2019-10-23 20:14:54 UTC (rev 251492)
+++ trunk/Source/WebCore/css/CSSCanvasValue.h 2019-10-23 20:14:57 UTC (rev 251493)
@@ -41,9 +41,9 @@
String customCSSText() const;
- RefPtr<Image> image(RenderElement*, const FloatSize&);
+ RefPtr<Image> image(RenderElement&, const FloatSize&);
bool isFixedSize() const { return true; }
- FloatSize fixedSize(const RenderElement*);
+ FloatSize fixedSize(const RenderElement&);
HTMLCanvasElement* element() const { return m_element; }
Modified: trunk/Source/WebCore/css/CSSFilterImageValue.cpp (251492 => 251493)
--- trunk/Source/WebCore/css/CSSFilterImageValue.cpp 2019-10-23 20:14:54 UTC (rev 251492)
+++ trunk/Source/WebCore/css/CSSFilterImageValue.cpp 2019-10-23 20:14:57 UTC (rev 251493)
@@ -50,19 +50,19 @@
return makeString("filter(", m_imageValue->cssText(), ", ", m_filterValue->cssText(), ')');
}
-FloatSize CSSFilterImageValue::fixedSize(const RenderElement* renderer)
+FloatSize CSSFilterImageValue::fixedSize(const RenderElement& renderer)
{
// FIXME: Skip Content Security Policy check when filter is applied to an element in a user agent shadow tree.
// See <https://bugs.webkit.org/show_bug.cgi?id=146663>.
ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
- CachedResourceLoader& cachedResourceLoader = renderer->document().cachedResourceLoader();
+ CachedResourceLoader& cachedResourceLoader = renderer.document().cachedResourceLoader();
CachedImage* cachedImage = cachedImageForCSSValue(m_imageValue, cachedResourceLoader, options);
if (!cachedImage)
return FloatSize();
- return cachedImage->imageForRenderer(renderer)->size();
+ return cachedImage->imageForRenderer(&renderer)->size();
}
bool CSSFilterImageValue::isPending() const
@@ -98,10 +98,8 @@
m_filterSubimageObserver.setReady(true);
}
-RefPtr<Image> CSSFilterImageValue::image(RenderElement* renderer, const FloatSize& size)
+RefPtr<Image> CSSFilterImageValue::image(RenderElement& renderer, const FloatSize& size)
{
- ASSERT(renderer);
-
if (size.isEmpty())
return nullptr;
@@ -108,11 +106,11 @@
// FIXME: Skip Content Security Policy check when filter is applied to an element in a user agent shadow tree.
// See <https://bugs.webkit.org/show_bug.cgi?id=146663>.
ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
- auto* cachedImage = cachedImageForCSSValue(m_imageValue, renderer->document().cachedResourceLoader(), options);
+ auto* cachedImage = cachedImageForCSSValue(m_imageValue, renderer.document().cachedResourceLoader(), options);
if (!cachedImage)
return &Image::nullImage();
- auto* image = cachedImage->imageForRenderer(renderer);
+ auto* image = cachedImage->imageForRenderer(&renderer);
if (!image)
return &Image::nullImage();
@@ -129,7 +127,7 @@
cssFilter->setSourceImage(WTFMove(texture));
cssFilter->setSourceImageRect(imageRect);
cssFilter->setFilterRegion(imageRect);
- if (!cssFilter->build(*renderer, m_filterOperations, FilterConsumer::FilterFunction))
+ if (!cssFilter->build(renderer, m_filterOperations, FilterConsumer::FilterFunction))
return &Image::nullImage();
cssFilter->apply();
Modified: trunk/Source/WebCore/css/CSSFilterImageValue.h (251492 => 251493)
--- trunk/Source/WebCore/css/CSSFilterImageValue.h 2019-10-23 20:14:54 UTC (rev 251492)
+++ trunk/Source/WebCore/css/CSSFilterImageValue.h 2019-10-23 20:14:57 UTC (rev 251493)
@@ -53,9 +53,9 @@
String customCSSText() const;
- RefPtr<Image> image(RenderElement*, const FloatSize&);
+ RefPtr<Image> image(RenderElement&, const FloatSize&);
bool isFixedSize() const { return true; }
- FloatSize fixedSize(const RenderElement*);
+ FloatSize fixedSize(const RenderElement&);
bool isPending() const;
bool knownToBeOpaque(const RenderElement&) const;
Modified: trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp (251492 => 251493)
--- trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp 2019-10-23 20:14:54 UTC (rev 251492)
+++ trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp 2019-10-23 20:14:57 UTC (rev 251493)
@@ -138,13 +138,13 @@
{
switch (classType()) {
case CanvasClass:
- return downcast<CSSCanvasValue>(*this).image(&renderer, size);
+ return downcast<CSSCanvasValue>(*this).image(renderer, size);
case NamedImageClass:
- return downcast<CSSNamedImageValue>(*this).image(&renderer, size);
+ return downcast<CSSNamedImageValue>(*this).image(renderer, size);
case CrossfadeClass:
return downcast<CSSCrossfadeValue>(*this).image(renderer, size);
case FilterImageClass:
- return downcast<CSSFilterImageValue>(*this).image(&renderer, size);
+ return downcast<CSSFilterImageValue>(*this).image(renderer, size);
case LinearGradientClass:
return downcast<CSSLinearGradientValue>(*this).image(renderer, size);
case RadialGradientClass:
@@ -192,11 +192,11 @@
{
switch (classType()) {
case CanvasClass:
- return downcast<CSSCanvasValue>(*this).fixedSize(&renderer);
+ return downcast<CSSCanvasValue>(*this).fixedSize(renderer);
case CrossfadeClass:
return downcast<CSSCrossfadeValue>(*this).fixedSize(renderer);
case FilterImageClass:
- return downcast<CSSFilterImageValue>(*this).fixedSize(&renderer);
+ return downcast<CSSFilterImageValue>(*this).fixedSize(renderer);
case LinearGradientClass:
return downcast<CSSLinearGradientValue>(*this).fixedSize(renderer);
case RadialGradientClass:
Modified: trunk/Source/WebCore/css/CSSNamedImageValue.cpp (251492 => 251493)
--- trunk/Source/WebCore/css/CSSNamedImageValue.cpp 2019-10-23 20:14:54 UTC (rev 251492)
+++ trunk/Source/WebCore/css/CSSNamedImageValue.cpp 2019-10-23 20:14:57 UTC (rev 251493)
@@ -35,7 +35,7 @@
return makeString("-webkit-named-image(", m_name, ')');
}
-RefPtr<Image> CSSNamedImageValue::image(RenderElement*, const FloatSize& size)
+RefPtr<Image> CSSNamedImageValue::image(RenderElement&, const FloatSize& size)
{
if (size.isEmpty())
return nullptr;
Modified: trunk/Source/WebCore/css/CSSNamedImageValue.h (251492 => 251493)
--- trunk/Source/WebCore/css/CSSNamedImageValue.h 2019-10-23 20:14:54 UTC (rev 251492)
+++ trunk/Source/WebCore/css/CSSNamedImageValue.h 2019-10-23 20:14:57 UTC (rev 251493)
@@ -42,7 +42,7 @@
bool isFixedSize() const { return false; }
bool isPending() const { return false; }
- RefPtr<Image> image(RenderElement*, const FloatSize&);
+ RefPtr<Image> image(RenderElement&, const FloatSize&);
bool equals(const CSSNamedImageValue&) const;