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