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

Side by Side Diff: Source/core/css/SVGCSSComputedStyleDeclaration.cpp

Issue 302553002: Computed style of resource references drops hash from fragment (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add test Created 6 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 unified diff | Download patch
« no previous file with comments | « LayoutTests/svg/css/getComputedStyle-basic-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 Copyright (C) 2007 Eric Seidel <eric@webkit.org> 2 Copyright (C) 2007 Eric Seidel <eric@webkit.org>
3 Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 3 Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 } 84 }
85 85
86 PassRefPtrWillBeRawPtr<SVGPaint> CSSComputedStyleDeclaration::adjustSVGPaintForC urrentColor(PassRefPtrWillBeRawPtr<SVGPaint> newPaint, RenderStyle& style) const 86 PassRefPtrWillBeRawPtr<SVGPaint> CSSComputedStyleDeclaration::adjustSVGPaintForC urrentColor(PassRefPtrWillBeRawPtr<SVGPaint> newPaint, RenderStyle& style) const
87 { 87 {
88 RefPtrWillBeRawPtr<SVGPaint> paint = newPaint; 88 RefPtrWillBeRawPtr<SVGPaint> paint = newPaint;
89 if (paint->paintType() == SVGPaint::SVG_PAINTTYPE_CURRENTCOLOR || paint->pai ntType() == SVGPaint::SVG_PAINTTYPE_URI_CURRENTCOLOR) 89 if (paint->paintType() == SVGPaint::SVG_PAINTTYPE_CURRENTCOLOR || paint->pai ntType() == SVGPaint::SVG_PAINTTYPE_URI_CURRENTCOLOR)
90 paint->setColor(style.color()); 90 paint->setColor(style.color());
91 return paint.release(); 91 return paint.release();
92 } 92 }
93 93
94 static inline String serializeAsFragmentIdentifier(const AtomicString& resource)
95 {
96 return "#" + resource;
97 }
98
94 PassRefPtrWillBeRawPtr<CSSValue> CSSComputedStyleDeclaration::getSVGPropertyCSSV alue(CSSPropertyID propertyID, EUpdateLayout updateLayout) const 99 PassRefPtrWillBeRawPtr<CSSValue> CSSComputedStyleDeclaration::getSVGPropertyCSSV alue(CSSPropertyID propertyID, EUpdateLayout updateLayout) const
95 { 100 {
96 Node* node = m_node.get(); 101 Node* node = m_node.get();
97 if (!node) 102 if (!node)
98 return nullptr; 103 return nullptr;
99 104
100 // Make sure our layout is up to date before we allow a query on these attri butes. 105 // Make sure our layout is up to date before we allow a query on these attri butes.
101 if (updateLayout) 106 if (updateLayout)
102 node->document().updateLayout(); 107 node->document().updateLayout();
103 108
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 case CSSPropertyAlignmentBaseline: 144 case CSSPropertyAlignmentBaseline:
140 return CSSPrimitiveValue::create(svgStyle->alignmentBaseline()); 145 return CSSPrimitiveValue::create(svgStyle->alignmentBaseline());
141 case CSSPropertyDominantBaseline: 146 case CSSPropertyDominantBaseline:
142 return CSSPrimitiveValue::create(svgStyle->dominantBaseline()); 147 return CSSPrimitiveValue::create(svgStyle->dominantBaseline());
143 case CSSPropertyTextAnchor: 148 case CSSPropertyTextAnchor:
144 return CSSPrimitiveValue::create(svgStyle->textAnchor()); 149 return CSSPrimitiveValue::create(svgStyle->textAnchor());
145 case CSSPropertyWritingMode: 150 case CSSPropertyWritingMode:
146 return CSSPrimitiveValue::create(svgStyle->writingMode()); 151 return CSSPrimitiveValue::create(svgStyle->writingMode());
147 case CSSPropertyClipPath: 152 case CSSPropertyClipPath:
148 if (!svgStyle->clipperResource().isEmpty()) 153 if (!svgStyle->clipperResource().isEmpty())
149 return CSSPrimitiveValue::create(svgStyle->clipperResource(), CS SPrimitiveValue::CSS_URI); 154 return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(s vgStyle->clipperResource()), CSSPrimitiveValue::CSS_URI);
150 return CSSPrimitiveValue::createIdentifier(CSSValueNone); 155 return CSSPrimitiveValue::createIdentifier(CSSValueNone);
151 case CSSPropertyMask: 156 case CSSPropertyMask:
152 if (!svgStyle->maskerResource().isEmpty()) 157 if (!svgStyle->maskerResource().isEmpty())
153 return CSSPrimitiveValue::create(svgStyle->maskerResource(), CSS PrimitiveValue::CSS_URI); 158 return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(s vgStyle->maskerResource()), CSSPrimitiveValue::CSS_URI);
154 return CSSPrimitiveValue::createIdentifier(CSSValueNone); 159 return CSSPrimitiveValue::createIdentifier(CSSValueNone);
155 case CSSPropertyFilter: 160 case CSSPropertyFilter:
156 if (!svgStyle->filterResource().isEmpty()) 161 if (!svgStyle->filterResource().isEmpty())
157 return CSSPrimitiveValue::create(svgStyle->filterResource(), CSS PrimitiveValue::CSS_URI); 162 return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(s vgStyle->filterResource()), CSSPrimitiveValue::CSS_URI);
158 return CSSPrimitiveValue::createIdentifier(CSSValueNone); 163 return CSSPrimitiveValue::createIdentifier(CSSValueNone);
159 case CSSPropertyFloodColor: 164 case CSSPropertyFloodColor:
160 return currentColorOrValidColor(*style, svgStyle->floodColor()); 165 return currentColorOrValidColor(*style, svgStyle->floodColor());
161 case CSSPropertyLightingColor: 166 case CSSPropertyLightingColor:
162 return currentColorOrValidColor(*style, svgStyle->lightingColor()); 167 return currentColorOrValidColor(*style, svgStyle->lightingColor());
163 case CSSPropertyStopColor: 168 case CSSPropertyStopColor:
164 return currentColorOrValidColor(*style, svgStyle->stopColor()); 169 return currentColorOrValidColor(*style, svgStyle->stopColor());
165 case CSSPropertyFill: 170 case CSSPropertyFill:
166 return adjustSVGPaintForCurrentColor(SVGPaint::create(svgStyle->fill PaintType(), svgStyle->fillPaintUri(), svgStyle->fillPaintColor()), *style); 171 return adjustSVGPaintForCurrentColor(SVGPaint::create(svgStyle->fill PaintType(), svgStyle->fillPaintUri(), svgStyle->fillPaintColor()), *style);
167 case CSSPropertyMarkerEnd: 172 case CSSPropertyMarkerEnd:
168 if (!svgStyle->markerEndResource().isEmpty()) 173 if (!svgStyle->markerEndResource().isEmpty())
169 return CSSPrimitiveValue::create(svgStyle->markerEndResource(), CSSPrimitiveValue::CSS_URI); 174 return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(s vgStyle->markerEndResource()), CSSPrimitiveValue::CSS_URI);
170 return CSSPrimitiveValue::createIdentifier(CSSValueNone); 175 return CSSPrimitiveValue::createIdentifier(CSSValueNone);
171 case CSSPropertyMarkerMid: 176 case CSSPropertyMarkerMid:
172 if (!svgStyle->markerMidResource().isEmpty()) 177 if (!svgStyle->markerMidResource().isEmpty())
173 return CSSPrimitiveValue::create(svgStyle->markerMidResource(), CSSPrimitiveValue::CSS_URI); 178 return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(s vgStyle->markerMidResource()), CSSPrimitiveValue::CSS_URI);
174 return CSSPrimitiveValue::createIdentifier(CSSValueNone); 179 return CSSPrimitiveValue::createIdentifier(CSSValueNone);
175 case CSSPropertyMarkerStart: 180 case CSSPropertyMarkerStart:
176 if (!svgStyle->markerStartResource().isEmpty()) 181 if (!svgStyle->markerStartResource().isEmpty())
177 return CSSPrimitiveValue::create(svgStyle->markerStartResource() , CSSPrimitiveValue::CSS_URI); 182 return CSSPrimitiveValue::create(serializeAsFragmentIdentifier(s vgStyle->markerStartResource()), CSSPrimitiveValue::CSS_URI);
178 return CSSPrimitiveValue::createIdentifier(CSSValueNone); 183 return CSSPrimitiveValue::createIdentifier(CSSValueNone);
179 case CSSPropertyStroke: 184 case CSSPropertyStroke:
180 return adjustSVGPaintForCurrentColor(SVGPaint::create(svgStyle->stro kePaintType(), svgStyle->strokePaintUri(), svgStyle->strokePaintColor()), *style ); 185 return adjustSVGPaintForCurrentColor(SVGPaint::create(svgStyle->stro kePaintType(), svgStyle->strokePaintUri(), svgStyle->strokePaintColor()), *style );
181 case CSSPropertyStrokeDasharray: 186 case CSSPropertyStrokeDasharray:
182 return strokeDashArrayToCSSValueList(svgStyle->strokeDashArray()); 187 return strokeDashArrayToCSSValueList(svgStyle->strokeDashArray());
183 case CSSPropertyStrokeDashoffset: 188 case CSSPropertyStrokeDashoffset:
184 return SVGLength::toCSSPrimitiveValue(svgStyle->strokeDashOffset()); 189 return SVGLength::toCSSPrimitiveValue(svgStyle->strokeDashOffset());
185 case CSSPropertyStrokeWidth: 190 case CSSPropertyStrokeWidth:
186 return SVGLength::toCSSPrimitiveValue(svgStyle->strokeWidth()); 191 return SVGLength::toCSSPrimitiveValue(svgStyle->strokeWidth());
187 case CSSPropertyBaselineShift: { 192 case CSSPropertyBaselineShift: {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 default: 229 default:
225 // If you crash here, it's because you added a css property and are not handling it 230 // If you crash here, it's because you added a css property and are not handling it
226 // in either this switch statement or the one in CSSComputedStyleDelcara tion::getPropertyCSSValue 231 // in either this switch statement or the one in CSSComputedStyleDelcara tion::getPropertyCSSValue
227 ASSERT_WITH_MESSAGE(0, "unimplemented propertyID: %d", propertyID); 232 ASSERT_WITH_MESSAGE(0, "unimplemented propertyID: %d", propertyID);
228 } 233 }
229 WTF_LOG_ERROR("unimplemented propertyID: %d", propertyID); 234 WTF_LOG_ERROR("unimplemented propertyID: %d", propertyID);
230 return nullptr; 235 return nullptr;
231 } 236 }
232 237
233 } 238 }
OLDNEW
« no previous file with comments | « LayoutTests/svg/css/getComputedStyle-basic-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698