Diff
Modified: trunk/Source/WebCore/ChangeLog (174835 => 174836)
--- trunk/Source/WebCore/ChangeLog 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/ChangeLog 2014-10-17 21:12:42 UTC (rev 174836)
@@ -1,3 +1,41 @@
+2014-10-17 Chris Dumez <[email protected]>
+
+ Use is<>() / downcast<>() for StyleImage
+ https://bugs.webkit.org/show_bug.cgi?id=137824
+
+ Reviewed by Andreas Kling.
+
+ Use is<>() / downcast<>() for StyleImage and clean up the surrouding
+ code.
+
+ No new tests, no behavior change.
+
+ * css/CSSCursorImageValue.cpp:
+ (WebCore::CSSCursorImageValue::detachPendingImage):
+ (WebCore::CSSCursorImageValue::cachedImage):
+ (WebCore::CSSCursorImageValue::cachedImageURL):
+ * css/CSSImageSetValue.cpp:
+ (WebCore::CSSImageSetValue::detachPendingImage):
+ (WebCore::CSSImageSetValue::~CSSImageSetValue):
+ (WebCore::CSSImageSetValue::cachedImageSet):
+ (WebCore::CSSImageSetValue::hasFailedOrCanceledSubresources):
+ * css/CSSImageValue.cpp:
+ (WebCore::CSSImageValue::detachPendingImage):
+ (WebCore::CSSImageValue::cachedImage):
+ (WebCore::CSSImageValue::hasFailedOrCanceledSubresources):
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::loadPendingShapeImage):
+ (WebCore::StyleResolver::loadPendingImages):
+ * page/PageSerializer.cpp:
+ (WebCore::PageSerializer::retrieveResourcesForProperties):
+ * page/animation/CSSPropertyAnimation.cpp:
+ (WebCore::blendFunc):
+ * rendering/style/StyleCachedImage.h:
+ * rendering/style/StyleCachedImageSet.h:
+ * rendering/style/StyleGeneratedImage.h:
+ * rendering/style/StyleImage.h:
+ * rendering/style/StylePendingImage.h:
+
2014-10-17 Dean Jackson <[email protected]>
[Media] Always update controls for <audio> since they are always visible
Modified: trunk/Source/WebCore/css/CSSCursorImageValue.cpp (174835 => 174836)
--- trunk/Source/WebCore/css/CSSCursorImageValue.cpp 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/css/CSSCursorImageValue.cpp 2014-10-17 21:12:42 UTC (rev 174836)
@@ -64,8 +64,8 @@
inline void CSSCursorImageValue::detachPendingImage()
{
- if (m_image && m_image->isPendingImage())
- toStylePendingImage(*m_image).detachFromCSSValue();
+ if (is<StylePendingImage>(m_image.get()))
+ downcast<StylePendingImage>(*m_image).detachFromCSSValue();
}
CSSCursorImageValue::~CSSCursorImageValue()
@@ -160,8 +160,8 @@
}
}
- if (m_image && m_image->isCachedImage())
- return toStyleCachedImage(m_image.get());
+ if (is<StyleCachedImage>(m_image.get()))
+ return downcast<StyleCachedImage>(m_image.get());
return nullptr;
}
@@ -193,9 +193,9 @@
String CSSCursorImageValue::cachedImageURL()
{
- if (!m_image || !m_image->isCachedImage())
+ if (!is<StyleCachedImage>(m_image.get()))
return String();
- return toStyleCachedImage(*m_image).cachedImage()->url();
+ return downcast<StyleCachedImage>(*m_image).cachedImage()->url();
}
void CSSCursorImageValue::clearCachedImage()
Modified: trunk/Source/WebCore/css/CSSImageSetValue.cpp (174835 => 174836)
--- trunk/Source/WebCore/css/CSSImageSetValue.cpp 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/css/CSSImageSetValue.cpp 2014-10-17 21:12:42 UTC (rev 174836)
@@ -52,16 +52,16 @@
inline void CSSImageSetValue::detachPendingImage()
{
- if (m_imageSet && m_imageSet->isPendingImage())
- toStylePendingImage(*m_imageSet).detachFromCSSValue();
+ if (is<StylePendingImage>(m_imageSet.get()))
+ downcast<StylePendingImage>(*m_imageSet).detachFromCSSValue();
}
CSSImageSetValue::~CSSImageSetValue()
{
detachPendingImage();
- if (m_imageSet && m_imageSet->isCachedImageSet())
- toStyleCachedImageSet(*m_imageSet).clearImageSetValue();
+ if (is<StyleCachedImageSet>(m_imageSet.get()))
+ downcast<StyleCachedImageSet>(*m_imageSet).clearImageSetValue();
}
void CSSImageSetValue::fillImageSet()
@@ -129,7 +129,7 @@
}
}
- return (m_imageSet && m_imageSet->isCachedImageSet()) ? toStyleCachedImageSet(m_imageSet.get()) : nullptr;
+ return is<StyleCachedImageSet>(m_imageSet.get()) ? downcast<StyleCachedImageSet>(m_imageSet.get()) : nullptr;
}
StyleCachedImageSet* CSSImageSetValue::cachedImageSet(CachedResourceLoader* loader)
@@ -188,9 +188,9 @@
bool CSSImageSetValue::hasFailedOrCanceledSubresources() const
{
- if (!m_imageSet || !m_imageSet->isCachedImageSet())
+ if (!is<StyleCachedImageSet>(m_imageSet.get()))
return false;
- CachedResource* cachedResource = toStyleCachedImageSet(*m_imageSet).cachedImage();
+ CachedImage* cachedResource = downcast<StyleCachedImageSet>(*m_imageSet).cachedImage();
if (!cachedResource)
return true;
return cachedResource->loadFailedOrCanceled();
Modified: trunk/Source/WebCore/css/CSSImageValue.cpp (174835 => 174836)
--- trunk/Source/WebCore/css/CSSImageValue.cpp 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/css/CSSImageValue.cpp 2014-10-17 21:12:42 UTC (rev 174836)
@@ -54,8 +54,8 @@
inline void CSSImageValue::detachPendingImage()
{
- if (m_image && m_image->isPendingImage())
- toStylePendingImage(*m_image).detachFromCSSValue();
+ if (is<StylePendingImage>(m_image.get()))
+ downcast<StylePendingImage>(*m_image).detachFromCSSValue();
}
CSSImageValue::~CSSImageValue()
@@ -93,7 +93,7 @@
}
}
- return (m_image && m_image->isCachedImage()) ? toStyleCachedImage(m_image.get()) : nullptr;
+ return is<StyleCachedImage>(m_image.get()) ? downcast<StyleCachedImage>(m_image.get()) : nullptr;
}
StyleCachedImage* CSSImageValue::cachedImage(CachedResourceLoader* loader)
@@ -103,9 +103,9 @@
bool CSSImageValue::hasFailedOrCanceledSubresources() const
{
- if (!m_image || !m_image->isCachedImage())
+ if (!is<StyleCachedImage>(m_image.get()))
return false;
- CachedResource* cachedResource = toStyleCachedImage(*m_image).cachedImage();
+ CachedResource* cachedResource = downcast<StyleCachedImage>(*m_image).cachedImage();
if (!cachedResource)
return true;
return cachedResource->loadFailedOrCanceled();
Modified: trunk/Source/WebCore/css/StyleResolver.cpp (174835 => 174836)
--- trunk/Source/WebCore/css/StyleResolver.cpp 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/css/StyleResolver.cpp 2014-10-17 21:12:42 UTC (rev 174836)
@@ -3680,10 +3680,10 @@
return;
StyleImage* image = shapeValue->image();
- if (!image || !image->isPendingImage())
+ if (!is<StylePendingImage>(image))
return;
- auto& pendingImage = toStylePendingImage(*image);
+ auto& pendingImage = downcast<StylePendingImage>(*image);
ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
options.setRequestOriginPolicy(PotentiallyCrossOriginEnabled);
@@ -3705,9 +3705,9 @@
switch (currentProperty) {
case CSSPropertyBackgroundImage: {
for (FillLayer* backgroundLayer = m_state.style()->accessBackgroundLayers(); backgroundLayer; backgroundLayer = backgroundLayer->next()) {
- auto styleImage = backgroundLayer->image();
- if (styleImage && styleImage->isPendingImage())
- backgroundLayer->setImage(loadPendingImage(toStylePendingImage(*styleImage)));
+ auto* styleImage = backgroundLayer->image();
+ if (is<StylePendingImage>(styleImage))
+ backgroundLayer->setImage(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
}
break;
}
@@ -3715,9 +3715,8 @@
for (ContentData* contentData = const_cast<ContentData*>(m_state.style()->contentData()); contentData; contentData = contentData->next()) {
if (is<ImageContentData>(*contentData)) {
auto& styleImage = downcast<ImageContentData>(*contentData).image();
- if (styleImage.isPendingImage()) {
- RefPtr<StyleImage> loadedImage = loadPendingImage(toStylePendingImage(styleImage));
- if (loadedImage)
+ if (is<StylePendingImage>(styleImage)) {
+ if (RefPtr<StyleImage> loadedImage = loadPendingImage(downcast<StylePendingImage>(styleImage)))
downcast<ImageContentData>(*contentData).setImage(loadedImage.release());
}
}
@@ -3728,47 +3727,47 @@
if (CursorList* cursorList = m_state.style()->cursors()) {
for (size_t i = 0; i < cursorList->size(); ++i) {
CursorData& currentCursor = cursorList->at(i);
- auto styleImage = currentCursor.image();
- if (styleImage && styleImage->isPendingImage())
- currentCursor.setImage(loadPendingImage(toStylePendingImage(*styleImage)));
+ auto* styleImage = currentCursor.image();
+ if (is<StylePendingImage>(styleImage))
+ currentCursor.setImage(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
}
}
break;
}
case CSSPropertyListStyleImage: {
- auto styleImage = m_state.style()->listStyleImage();
- if (styleImage && styleImage->isPendingImage())
- m_state.style()->setListStyleImage(loadPendingImage(toStylePendingImage(*styleImage)));
+ auto* styleImage = m_state.style()->listStyleImage();
+ if (is<StylePendingImage>(styleImage))
+ m_state.style()->setListStyleImage(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
break;
}
case CSSPropertyBorderImageSource: {
- auto styleImage = m_state.style()->borderImageSource();
- if (styleImage && styleImage->isPendingImage())
- m_state.style()->setBorderImageSource(loadPendingImage(toStylePendingImage(*styleImage)));
+ auto* styleImage = m_state.style()->borderImageSource();
+ if (is<StylePendingImage>(styleImage))
+ m_state.style()->setBorderImageSource(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
break;
}
case CSSPropertyWebkitBoxReflect: {
if (StyleReflection* reflection = m_state.style()->boxReflect()) {
const NinePieceImage& maskImage = reflection->mask();
- auto styleImage = maskImage.image();
- if (styleImage && styleImage->isPendingImage()) {
- RefPtr<StyleImage> loadedImage = loadPendingImage(toStylePendingImage(*styleImage));
+ auto* styleImage = maskImage.image();
+ if (is<StylePendingImage>(styleImage)) {
+ RefPtr<StyleImage> loadedImage = loadPendingImage(downcast<StylePendingImage>(*styleImage));
reflection->setMask(NinePieceImage(loadedImage.release(), maskImage.imageSlices(), maskImage.fill(), maskImage.borderSlices(), maskImage.outset(), maskImage.horizontalRule(), maskImage.verticalRule()));
}
}
break;
}
case CSSPropertyWebkitMaskBoxImageSource: {
- auto styleImage = m_state.style()->maskBoxImageSource();
- if (styleImage && styleImage->isPendingImage())
- m_state.style()->setMaskBoxImageSource(loadPendingImage(toStylePendingImage(*styleImage)));
+ auto* styleImage = m_state.style()->maskBoxImageSource();
+ if (is<StylePendingImage>(styleImage))
+ m_state.style()->setMaskBoxImageSource(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
break;
}
case CSSPropertyWebkitMaskImage: {
for (FillLayer* maskLayer = m_state.style()->accessMaskLayers(); maskLayer; maskLayer = maskLayer->next()) {
- auto styleImage = maskLayer->image();
- if (styleImage && styleImage->isPendingImage())
- maskLayer->setImage(loadPendingImage(toStylePendingImage(*styleImage)));
+ auto* styleImage = maskLayer->image();
+ if (is<StylePendingImage>(styleImage))
+ maskLayer->setImage(loadPendingImage(downcast<StylePendingImage>(*styleImage)));
}
break;
}
Modified: trunk/Source/WebCore/page/PageSerializer.cpp (174835 => 174836)
--- trunk/Source/WebCore/page/PageSerializer.cpp 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/page/PageSerializer.cpp 2014-10-17 21:12:42 UTC (rev 174836)
@@ -333,13 +333,13 @@
StyleImage* styleImage = downcast<CSSImageValue>(*cssValue).cachedOrPendingImage();
// Non cached-images are just place-holders and do not contain data.
- if (!styleImage || !styleImage->isCachedImage())
+ if (!is<StyleCachedImage>(styleImage))
continue;
- CachedImage* image = toStyleCachedImage(styleImage)->cachedImage();
+ CachedImage* image = downcast<StyleCachedImage>(*styleImage).cachedImage();
URL url = ""
- addImageToResources(image, 0, url);
+ addImageToResources(image, nullptr, url);
}
}
Modified: trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp (174835 => 174836)
--- trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp 2014-10-17 21:12:42 UTC (rev 174836)
@@ -293,9 +293,9 @@
return to;
// Animation between two generated images. Cross fade for all other cases.
- if (from->isGeneratedImage() && to->isGeneratedImage()) {
- CSSImageGeneratorValue& fromGenerated = toStyleGeneratedImage(from)->imageValue();
- CSSImageGeneratorValue& toGenerated = toStyleGeneratedImage(to)->imageValue();
+ if (is<StyleGeneratedImage>(*from) && is<StyleGeneratedImage>(*to)) {
+ CSSImageGeneratorValue& fromGenerated = downcast<StyleGeneratedImage>(*from).imageValue();
+ CSSImageGeneratorValue& toGenerated = downcast<StyleGeneratedImage>(*to).imageValue();
if (is<CSSFilterImageValue>(fromGenerated) && is<CSSFilterImageValue>(toGenerated)) {
// Animation of generated images just possible if input images are equal.
@@ -315,19 +315,19 @@
// FIXME: Add support for animation between two *gradient() functions.
// https://bugs.webkit.org/show_bug.cgi?id=119956
- } else if (from->isGeneratedImage() && to->isCachedImage()) {
- CSSImageGeneratorValue& fromGenerated = toStyleGeneratedImage(from)->imageValue();
+ } else if (is<StyleGeneratedImage>(*from) && is<StyleCachedImage>(*to)) {
+ CSSImageGeneratorValue& fromGenerated = downcast<StyleGeneratedImage>(*from).imageValue();
if (is<CSSFilterImageValue>(fromGenerated)) {
CSSFilterImageValue& fromFilter = downcast<CSSFilterImageValue>(fromGenerated);
- if (fromFilter.cachedImage() && toStyleCachedImage(to)->cachedImage() == fromFilter.cachedImage())
+ if (fromFilter.cachedImage() && downcast<StyleCachedImage>(*to).cachedImage() == fromFilter.cachedImage())
return blendFilter(anim, fromFilter.cachedImage(), fromFilter.filterOperations(), FilterOperations(), progress);
}
// FIXME: Add interpolation between cross-fade and image source.
- } else if (from->isCachedImage() && to->isGeneratedImage()) {
- CSSImageGeneratorValue& toGenerated = toStyleGeneratedImage(to)->imageValue();
+ } else if (is<StyleCachedImage>(*from) && is<StyleGeneratedImage>(*to)) {
+ CSSImageGeneratorValue& toGenerated = downcast<StyleGeneratedImage>(*to).imageValue();
if (is<CSSFilterImageValue>(toGenerated)) {
CSSFilterImageValue& toFilter = downcast<CSSFilterImageValue>(toGenerated);
- if (toFilter.cachedImage() && toStyleCachedImage(from)->cachedImage() == toFilter.cachedImage())
+ if (toFilter.cachedImage() && downcast<StyleCachedImage>(*from).cachedImage() == toFilter.cachedImage())
return blendFilter(anim, toFilter.cachedImage(), FilterOperations(), toFilter.filterOperations(), progress);
}
// FIXME: Add interpolation between image source and cross-fade.
@@ -335,8 +335,8 @@
// FIXME: Add support cross fade between cached and generated images.
// https://bugs.webkit.org/show_bug.cgi?id=78293
- if (from->isCachedImage() && to->isCachedImage())
- return crossfadeBlend(anim, toStyleCachedImage(from), toStyleCachedImage(to), progress);
+ if (is<StyleCachedImage>(*from) && is<StyleCachedImage>(*to))
+ return crossfadeBlend(anim, downcast<StyleCachedImage>(from), downcast<StyleCachedImage>(to), progress);
return to;
}
Modified: trunk/Source/WebCore/rendering/style/StyleCachedImage.h (174835 => 174836)
--- trunk/Source/WebCore/rendering/style/StyleCachedImage.h 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImage.h 2014-10-17 21:12:42 UTC (rev 174836)
@@ -64,7 +64,8 @@
CachedResourceHandle<CachedImage> m_image;
};
-STYLE_IMAGE_TYPE_CASTS(StyleCachedImage, StyleImage, isCachedImage)
+} // namespace WebCore
-}
-#endif
+SPECIALIZE_TYPE_TRAITS_STYLE_IMAGE(StyleCachedImage, isCachedImage)
+
+#endif // StyleCachedImage_h
Modified: trunk/Source/WebCore/rendering/style/StyleCachedImageSet.h (174835 => 174836)
--- trunk/Source/WebCore/rendering/style/StyleCachedImageSet.h 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImageSet.h 2014-10-17 21:12:42 UTC (rev 174836)
@@ -83,10 +83,10 @@
CSSImageSetValue* m_imageSetValue; // Not retained; it owns us.
};
-STYLE_IMAGE_TYPE_CASTS(StyleCachedImageSet, StyleImage, isCachedImageSet)
-
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_STYLE_IMAGE(StyleCachedImageSet, isCachedImageSet)
+
#endif // ENABLE(CSS_IMAGE_SET)
#endif // StyleCachedImageSet_h
Modified: trunk/Source/WebCore/rendering/style/StyleGeneratedImage.h (174835 => 174836)
--- trunk/Source/WebCore/rendering/style/StyleGeneratedImage.h 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/rendering/style/StyleGeneratedImage.h 2014-10-17 21:12:42 UTC (rev 174836)
@@ -63,7 +63,8 @@
bool m_fixedSize;
};
-STYLE_IMAGE_TYPE_CASTS(StyleGeneratedImage, StyleImage, isGeneratedImage)
+} // namespace WebCore
-}
-#endif
+SPECIALIZE_TYPE_TRAITS_STYLE_IMAGE(StyleGeneratedImage, isGeneratedImage)
+
+#endif // StyleGeneratedImage_h
Modified: trunk/Source/WebCore/rendering/style/StyleImage.h (174835 => 174836)
--- trunk/Source/WebCore/rendering/style/StyleImage.h 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/rendering/style/StyleImage.h 2014-10-17 21:12:42 UTC (rev 174836)
@@ -30,6 +30,7 @@
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
+#include <wtf/TypeCasts.h>
namespace WebCore {
@@ -92,8 +93,11 @@
bool m_isCachedImageSet : 1;
};
-#define STYLE_IMAGE_TYPE_CASTS(ToClassName, FromClassName, predicate) \
- TYPE_CASTS_BASE(ToClassName, FromClassName, styleImage, styleImage->predicate(), styleImage.predicate())
+} // namespace WebCore
-}
-#endif
+#define SPECIALIZE_TYPE_TRAITS_STYLE_IMAGE(ToClassName, predicate) \
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToClassName) \
+ static bool isType(const WebCore::StyleImage& image) { return image.predicate(); } \
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif // StyleImage_h
Modified: trunk/Source/WebCore/rendering/style/StylePendingImage.h (174835 => 174836)
--- trunk/Source/WebCore/rendering/style/StylePendingImage.h 2014-10-17 21:06:21 UTC (rev 174835)
+++ trunk/Source/WebCore/rendering/style/StylePendingImage.h 2014-10-17 21:12:42 UTC (rev 174836)
@@ -86,8 +86,8 @@
CSSValue* m_value; // Not retained; it owns us.
};
-STYLE_IMAGE_TYPE_CASTS(StylePendingImage, StyleImage, isPendingImage)
+} // namespace WebCore
-}
+SPECIALIZE_TYPE_TRAITS_STYLE_IMAGE(StylePendingImage, isPendingImage)
-#endif
+#endif // StylePendingImage_h