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

Side by Side Diff: Source/core/css/resolver/StyleResourceLoader.cpp

Issue 196573030: Web Animations API: Load resources referenced in element.animate() (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Removed asserts. Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
4 * Copyright (C) 2013 Google Inc. All rights reserved. 4 * Copyright (C) 2013 Google Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 28 matching lines...) Expand all
39 #include "core/rendering/style/StylePendingImage.h" 39 #include "core/rendering/style/StylePendingImage.h"
40 #include "core/rendering/svg/ReferenceFilterBuilder.h" 40 #include "core/rendering/svg/ReferenceFilterBuilder.h"
41 41
42 namespace WebCore { 42 namespace WebCore {
43 43
44 StyleResourceLoader::StyleResourceLoader(ResourceFetcher* fetcher) 44 StyleResourceLoader::StyleResourceLoader(ResourceFetcher* fetcher)
45 : m_fetcher(fetcher) 45 : m_fetcher(fetcher)
46 { 46 {
47 } 47 }
48 48
49 void StyleResourceLoader::loadPendingSVGDocuments(RenderStyle* renderStyle, cons t ElementStyleResources& elementStyleResources) 49 void StyleResourceLoader::loadPendingSVGDocuments(RenderStyle* renderStyle, Elem entStyleResources& elementStyleResources)
50 { 50 {
51 if (!renderStyle->hasFilter() || elementStyleResources.pendingSVGDocuments() .isEmpty()) 51 if (!renderStyle->hasFilter() || elementStyleResources.pendingSVGDocuments() .isEmpty())
52 return; 52 return;
53 53
54 Vector<RefPtr<FilterOperation> >& filterOperations = renderStyle->mutableFil ter().operations(); 54 Vector<RefPtr<FilterOperation> >& filterOperations = renderStyle->mutableFil ter().operations();
55 for (unsigned i = 0; i < filterOperations.size(); ++i) { 55 for (unsigned i = 0; i < filterOperations.size(); ++i) {
56 RefPtr<FilterOperation> filterOperation = filterOperations.at(i); 56 RefPtr<FilterOperation> filterOperation = filterOperations.at(i);
57 if (filterOperation->type() == FilterOperation::REFERENCE) { 57 if (filterOperation->type() == FilterOperation::REFERENCE) {
58 ReferenceFilterOperation* referenceFilter = toReferenceFilterOperati on(filterOperation.get()); 58 ReferenceFilterOperation* referenceFilter = toReferenceFilterOperati on(filterOperation.get());
59 59
60 CSSSVGDocumentValue* value = elementStyleResources.pendingSVGDocumen ts().get(referenceFilter); 60 CSSSVGDocumentValue* value = elementStyleResources.pendingSVGDocumen ts().get(referenceFilter);
61 if (!value) 61 if (!value)
62 continue; 62 continue;
63 DocumentResource* resource = value->load(m_fetcher); 63 DocumentResource* resource = value->load(m_fetcher);
64 if (!resource) 64 if (!resource)
65 continue; 65 continue;
66 66
67 // Stash the DocumentResource on the reference filter. 67 // Stash the DocumentResource on the reference filter.
68 ReferenceFilterBuilder::setDocumentResourceReference(referenceFilter , adoptPtr(new DocumentResourceReference(resource))); 68 ReferenceFilterBuilder::setDocumentResourceReference(referenceFilter , adoptPtr(new DocumentResourceReference(resource)));
69 } 69 }
70 } 70 }
71
72 elementStyleResources.clearPendingSVGDocuments();
71 } 73 }
72 74
73 static PassRefPtr<StyleImage> doLoadPendingImage(ResourceFetcher* fetcher, Style PendingImage* pendingImage, float deviceScaleFactor, const ResourceLoaderOptions & options) 75 static PassRefPtr<StyleImage> doLoadPendingImage(ResourceFetcher* fetcher, Style PendingImage* pendingImage, float deviceScaleFactor, const ResourceLoaderOptions & options)
74 { 76 {
75 if (CSSImageValue* imageValue = pendingImage->cssImageValue()) 77 if (CSSImageValue* imageValue = pendingImage->cssImageValue())
76 return imageValue->cachedImage(fetcher, options); 78 return imageValue->cachedImage(fetcher, options);
77 79
78 if (CSSImageGeneratorValue* imageGeneratorValue 80 if (CSSImageGeneratorValue* imageGeneratorValue
79 = pendingImage->cssImageGeneratorValue()) { 81 = pendingImage->cssImageGeneratorValue()) {
80 imageGeneratorValue->loadSubimages(fetcher); 82 imageGeneratorValue->loadSubimages(fetcher);
(...skipping 24 matching lines...) Expand all
105 if (!image || !image->isPendingImage()) 107 if (!image || !image->isPendingImage())
106 return; 108 return;
107 109
108 ResourceLoaderOptions options = ResourceFetcher::defaultResourceOptions(); 110 ResourceLoaderOptions options = ResourceFetcher::defaultResourceOptions();
109 options.allowCredentials = DoNotAllowStoredCredentials; 111 options.allowCredentials = DoNotAllowStoredCredentials;
110 options.corsEnabled = IsCORSEnabled; 112 options.corsEnabled = IsCORSEnabled;
111 113
112 shapeValue->setImage(doLoadPendingImage(m_fetcher, toStylePendingImage(image ), deviceScaleFactor, options)); 114 shapeValue->setImage(doLoadPendingImage(m_fetcher, toStylePendingImage(image ), deviceScaleFactor, options));
113 } 115 }
114 116
115 void StyleResourceLoader::loadPendingImages(RenderStyle* style, const ElementSty leResources& elementStyleResources) 117 void StyleResourceLoader::loadPendingImages(RenderStyle* style, ElementStyleReso urces& elementStyleResources)
116 { 118 {
117 if (elementStyleResources.pendingImageProperties().isEmpty()) 119 if (elementStyleResources.pendingImageProperties().isEmpty())
118 return; 120 return;
119 121
120 PendingImagePropertyMap::const_iterator::Keys end = elementStyleResources.pe ndingImageProperties().end().keys(); 122 PendingImagePropertyMap::const_iterator::Keys end = elementStyleResources.pe ndingImageProperties().end().keys();
121 for (PendingImagePropertyMap::const_iterator::Keys it = elementStyleResource s.pendingImageProperties().begin().keys(); it != end; ++it) { 123 for (PendingImagePropertyMap::const_iterator::Keys it = elementStyleResource s.pendingImageProperties().begin().keys(); it != end; ++it) {
122 CSSPropertyID currentProperty = *it; 124 CSSPropertyID currentProperty = *it;
123 125
124 switch (currentProperty) { 126 switch (currentProperty) {
125 case CSSPropertyBackgroundImage: { 127 case CSSPropertyBackgroundImage: {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 case CSSPropertyShapeInside: 191 case CSSPropertyShapeInside:
190 loadPendingShapeImage(style, style->shapeInside(), elementStyleResou rces.deviceScaleFactor()); 192 loadPendingShapeImage(style, style->shapeInside(), elementStyleResou rces.deviceScaleFactor());
191 break; 193 break;
192 case CSSPropertyShapeOutside: 194 case CSSPropertyShapeOutside:
193 loadPendingShapeImage(style, style->shapeOutside(), elementStyleReso urces.deviceScaleFactor()); 195 loadPendingShapeImage(style, style->shapeOutside(), elementStyleReso urces.deviceScaleFactor());
194 break; 196 break;
195 default: 197 default:
196 ASSERT_NOT_REACHED(); 198 ASSERT_NOT_REACHED();
197 } 199 }
198 } 200 }
201
202 elementStyleResources.clearPendingImageProperties();
199 } 203 }
200 204
201 void StyleResourceLoader::loadPendingResources(RenderStyle* renderStyle, Element StyleResources& elementStyleResources) 205 void StyleResourceLoader::loadPendingResources(RenderStyle* renderStyle, Element StyleResources& elementStyleResources)
202 { 206 {
203 // Start loading images referenced by this style. 207 // Start loading images referenced by this style.
204 loadPendingImages(renderStyle, elementStyleResources); 208 loadPendingImages(renderStyle, elementStyleResources);
205 209
206 // Start loading the SVG Documents referenced by this style. 210 // Start loading the SVG Documents referenced by this style.
207 loadPendingSVGDocuments(renderStyle, elementStyleResources); 211 loadPendingSVGDocuments(renderStyle, elementStyleResources);
208 } 212 }
209 213
210 } 214 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698