Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Unified Diff: third_party/WebKit/Source/core/css/resolver/ElementStyleResources.cpp

Issue 1896893004: Hook up style invalidation for CSS Paint API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@css-paint-register
Patch Set: rebase. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/css/resolver/ElementStyleResources.cpp
diff --git a/third_party/WebKit/Source/core/css/resolver/ElementStyleResources.cpp b/third_party/WebKit/Source/core/css/resolver/ElementStyleResources.cpp
index 68935d73e97c77dab9bf49835c00c4d15d01dde6..381a8ba5b0dff05ac7a14db21e52398f09859871 100644
--- a/third_party/WebKit/Source/core/css/resolver/ElementStyleResources.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/ElementStyleResources.cpp
@@ -132,11 +132,17 @@ void ElementStyleResources::loadPendingSVGDocuments(ComputedStyle* computedStyle
}
}
-StyleImage* ElementStyleResources::loadPendingImage(StylePendingImage* pendingImage, CrossOriginAttributeValue crossOrigin)
+StyleImage* ElementStyleResources::loadPendingImage(ComputedStyle* style, StylePendingImage* pendingImage, CrossOriginAttributeValue crossOrigin)
{
if (CSSImageValue* imageValue = pendingImage->cssImageValue())
return imageValue->cacheImage(m_document, crossOrigin);
+ if (CSSPaintValue* paintValue = pendingImage->cssPaintValue()) {
+ StyleGeneratedImage* image = StyleGeneratedImage::create(*paintValue);
+ style->addPaintImage(image);
+ return image;
+ }
+
if (CSSImageGeneratorValue* imageGeneratorValue = pendingImage->cssImageGeneratorValue()) {
imageGeneratorValue->loadSubimages(m_document);
return StyleGeneratedImage::create(*imageGeneratorValue);
@@ -177,7 +183,7 @@ void ElementStyleResources::loadPendingImages(ComputedStyle* style)
case CSSPropertyBackgroundImage: {
for (FillLayer* backgroundLayer = &style->accessBackgroundLayers(); backgroundLayer; backgroundLayer = backgroundLayer->next()) {
if (backgroundLayer->image() && backgroundLayer->image()->isPendingImage())
- backgroundLayer->setImage(loadPendingImage(toStylePendingImage(backgroundLayer->image())));
+ backgroundLayer->setImage(loadPendingImage(style, toStylePendingImage(backgroundLayer->image())));
}
break;
}
@@ -186,7 +192,7 @@ void ElementStyleResources::loadPendingImages(ComputedStyle* style)
if (contentData->isImage()) {
StyleImage* image = toImageContentData(contentData)->image();
if (image->isPendingImage())
- toImageContentData(contentData)->setImage(loadPendingImage(toStylePendingImage(image)));
+ toImageContentData(contentData)->setImage(loadPendingImage(style, toStylePendingImage(image)));
}
}
break;
@@ -197,7 +203,7 @@ void ElementStyleResources::loadPendingImages(ComputedStyle* style)
CursorData& currentCursor = cursorList->at(i);
if (StyleImage* image = currentCursor.image()) {
if (image->isPendingImage())
- currentCursor.setImage(loadPendingImage(toStylePendingImage(image)));
+ currentCursor.setImage(loadPendingImage(style, toStylePendingImage(image)));
}
}
}
@@ -205,19 +211,19 @@ void ElementStyleResources::loadPendingImages(ComputedStyle* style)
}
case CSSPropertyListStyleImage: {
if (style->listStyleImage() && style->listStyleImage()->isPendingImage())
- style->setListStyleImage(loadPendingImage(toStylePendingImage(style->listStyleImage())));
+ style->setListStyleImage(loadPendingImage(style, toStylePendingImage(style->listStyleImage())));
break;
}
case CSSPropertyBorderImageSource: {
if (style->borderImageSource() && style->borderImageSource()->isPendingImage())
- style->setBorderImageSource(loadPendingImage(toStylePendingImage(style->borderImageSource())));
+ style->setBorderImageSource(loadPendingImage(style, toStylePendingImage(style->borderImageSource())));
break;
}
case CSSPropertyWebkitBoxReflect: {
if (StyleReflection* reflection = style->boxReflect()) {
const NinePieceImage& maskImage = reflection->mask();
if (maskImage.image() && maskImage.image()->isPendingImage()) {
- StyleImage* loadedImage = loadPendingImage(toStylePendingImage(maskImage.image()));
+ StyleImage* loadedImage = loadPendingImage(style, toStylePendingImage(maskImage.image()));
reflection->setMask(NinePieceImage(loadedImage, maskImage.imageSlices(), maskImage.fill(), maskImage.borderSlices(), maskImage.outset(), maskImage.horizontalRule(), maskImage.verticalRule()));
}
}
@@ -225,19 +231,19 @@ void ElementStyleResources::loadPendingImages(ComputedStyle* style)
}
case CSSPropertyWebkitMaskBoxImageSource: {
if (style->maskBoxImageSource() && style->maskBoxImageSource()->isPendingImage())
- style->setMaskBoxImageSource(loadPendingImage(toStylePendingImage(style->maskBoxImageSource())));
+ style->setMaskBoxImageSource(loadPendingImage(style, toStylePendingImage(style->maskBoxImageSource())));
break;
}
case CSSPropertyWebkitMaskImage: {
for (FillLayer* maskLayer = &style->accessMaskLayers(); maskLayer; maskLayer = maskLayer->next()) {
if (maskLayer->image() && maskLayer->image()->isPendingImage())
- maskLayer->setImage(loadPendingImage(toStylePendingImage(maskLayer->image())));
+ maskLayer->setImage(loadPendingImage(style, toStylePendingImage(maskLayer->image())));
}
break;
}
case CSSPropertyShapeOutside:
if (style->shapeOutside() && style->shapeOutside()->image() && style->shapeOutside()->image()->isPendingImage())
- style->shapeOutside()->setImage(loadPendingImage(toStylePendingImage(style->shapeOutside()->image()), CrossOriginAttributeAnonymous));
+ style->shapeOutside()->setImage(loadPendingImage(style, toStylePendingImage(style->shapeOutside()->image()), CrossOriginAttributeAnonymous));
break;
default:
ASSERT_NOT_REACHED();

Powered by Google App Engine
This is Rietveld 408576698