summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/CSSImageSetValue.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-05-24 08:28:08 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-05-24 08:28:08 +0000
commita4e969f4965059196ca948db781e52f7cfebf19e (patch)
tree6ca352808c8fdc52006a0f33f6ae3c593b23867d /Source/WebCore/css/CSSImageSetValue.cpp
parent41386e9cb918eed93b3f13648cbef387e371e451 (diff)
downloadWebKitGtk-tarball-a4e969f4965059196ca948db781e52f7cfebf19e.tar.gz
webkitgtk-2.12.3webkitgtk-2.12.3
Diffstat (limited to 'Source/WebCore/css/CSSImageSetValue.cpp')
-rw-r--r--Source/WebCore/css/CSSImageSetValue.cpp47
1 files changed, 19 insertions, 28 deletions
diff --git a/Source/WebCore/css/CSSImageSetValue.cpp b/Source/WebCore/css/CSSImageSetValue.cpp
index b031cc2ee..849d80ffd 100644
--- a/Source/WebCore/css/CSSImageSetValue.cpp
+++ b/Source/WebCore/css/CSSImageSetValue.cpp
@@ -52,16 +52,16 @@ CSSImageSetValue::CSSImageSetValue()
inline void CSSImageSetValue::detachPendingImage()
{
- if (m_imageSet && m_imageSet->isPendingImage())
- static_cast<StylePendingImage&>(*m_imageSet).detachFromCSSValue();
+ if (is<StylePendingImage>(m_imageSet.get()))
+ downcast<StylePendingImage>(*m_imageSet).detachFromCSSValue();
}
CSSImageSetValue::~CSSImageSetValue()
{
detachPendingImage();
- if (m_imageSet && m_imageSet->isCachedImageSet())
- static_cast<StyleCachedImageSet*>(m_imageSet.get())->clearImageSetValue();
+ if (is<StyleCachedImageSet>(m_imageSet.get()))
+ downcast<StyleCachedImageSet>(*m_imageSet).clearImageSetValue();
}
void CSSImageSetValue::fillImageSet()
@@ -70,13 +70,12 @@ void CSSImageSetValue::fillImageSet()
size_t i = 0;
while (i < length) {
CSSValue* imageValue = item(i);
- String imageURL = toCSSImageValue(imageValue)->url();
+ String imageURL = downcast<CSSImageValue>(*imageValue).url();
++i;
ASSERT_WITH_SECURITY_IMPLICATION(i < length);
CSSValue* scaleFactorValue = item(i);
- ASSERT_WITH_SECURITY_IMPLICATION(scaleFactorValue->isPrimitiveValue());
- float scaleFactor = toCSSPrimitiveValue(scaleFactorValue)->getFloatValue();
+ float scaleFactor = downcast<CSSPrimitiveValue>(*scaleFactorValue).getFloatValue();
ImageWithScale image;
image.imageURL = imageURL;
@@ -101,11 +100,9 @@ CSSImageSetValue::ImageWithScale CSSImageSetValue::bestImageForScaleFactor()
return image;
}
-StyleCachedImageSet* CSSImageSetValue::cachedImageSet(CachedResourceLoader* loader, const ResourceLoaderOptions& options)
+StyleCachedImageSet* CSSImageSetValue::cachedImageSet(CachedResourceLoader& loader, const ResourceLoaderOptions& options)
{
- ASSERT(loader);
-
- Document* document = loader->document();
+ Document* document = loader.document();
if (Page* page = document->page())
m_scaleFactor = page->deviceScaleFactor();
else
@@ -121,21 +118,16 @@ StyleCachedImageSet* CSSImageSetValue::cachedImageSet(CachedResourceLoader* load
ImageWithScale image = bestImageForScaleFactor();
CachedResourceRequest request(ResourceRequest(document->completeURL(image.imageURL)), options);
request.setInitiator(cachedResourceRequestInitiators().css);
- if (options.requestOriginPolicy == PotentiallyCrossOriginEnabled)
- updateRequestForAccessControl(request.mutableResourceRequest(), document->securityOrigin(), options.allowCredentials);
- if (CachedResourceHandle<CachedImage> cachedImage = loader->requestImage(request)) {
+ if (options.requestOriginPolicy() == PotentiallyCrossOriginEnabled)
+ updateRequestForAccessControl(request.mutableResourceRequest(), document->securityOrigin(), options.allowCredentials());
+ if (CachedResourceHandle<CachedImage> cachedImage = loader.requestImage(request)) {
detachPendingImage();
m_imageSet = StyleCachedImageSet::create(cachedImage.get(), image.scaleFactor, this);
m_accessedBestFitImage = true;
}
}
- return (m_imageSet && m_imageSet->isCachedImageSet()) ? static_cast<StyleCachedImageSet*>(m_imageSet.get()) : 0;
-}
-
-StyleCachedImageSet* CSSImageSetValue::cachedImageSet(CachedResourceLoader* loader)
-{
- return cachedImageSet(loader, CachedResourceLoader::defaultCachedResourceOptions());
+ return is<StyleCachedImageSet>(m_imageSet.get()) ? downcast<StyleCachedImageSet>(m_imageSet.get()) : nullptr;
}
StyleImage* CSSImageSetValue::cachedOrPendingImageSet(Document& document)
@@ -187,14 +179,13 @@ String CSSImageSetValue::customCSSText() const
return result.toString();
}
-bool CSSImageSetValue::hasFailedOrCanceledSubresources() const
+bool CSSImageSetValue::traverseSubresources(const std::function<bool (const CachedResource&)>& handler) const
{
- if (!m_imageSet || !m_imageSet->isCachedImageSet())
+ if (!is<StyleCachedImageSet>(m_imageSet.get()))
return false;
- CachedResource* cachedResource = static_cast<StyleCachedImageSet*>(m_imageSet.get())->cachedImage();
- if (!cachedResource)
- return true;
- return cachedResource->loadFailedOrCanceled();
+ CachedImage* cachedResource = downcast<StyleCachedImageSet>(*m_imageSet).cachedImage();
+ ASSERT(cachedResource);
+ return handler(*cachedResource);
}
CSSImageSetValue::CSSImageSetValue(const CSSImageSetValue& cloneFrom)
@@ -205,9 +196,9 @@ CSSImageSetValue::CSSImageSetValue(const CSSImageSetValue& cloneFrom)
// Non-CSSValueList data is not accessible through CSS OM, no need to clone.
}
-PassRefPtr<CSSImageSetValue> CSSImageSetValue::cloneForCSSOM() const
+Ref<CSSImageSetValue> CSSImageSetValue::cloneForCSSOM() const
{
- return adoptRef(new CSSImageSetValue(*this));
+ return adoptRef(*new CSSImageSetValue(*this));
}
} // namespace WebCore