diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-05-24 08:28:08 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-05-24 08:28:08 +0000 |
commit | a4e969f4965059196ca948db781e52f7cfebf19e (patch) | |
tree | 6ca352808c8fdc52006a0f33f6ae3c593b23867d /Source/WebCore/css/CSSImageSetValue.cpp | |
parent | 41386e9cb918eed93b3f13648cbef387e371e451 (diff) | |
download | WebKitGtk-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.cpp | 47 |
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 |