Changeset 237243 in webkit
- Timestamp:
- Oct 17, 2018 7:47:00 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r237239 r237243 1 2018-10-17 Justin Michaud <justin_michaud@apple.com> 2 3 Parse paint() and store paint callbacks for CSS Painting API 4 https://bugs.webkit.org/show_bug.cgi?id=190657 5 6 Reviewed by Dean Jackson. 7 8 * fast/css-custom-paint/basic-expected.txt: 9 * fast/css-custom-paint/basic.html: 10 1 11 2018-10-17 Justin Fan <justin_fan@apple.com> 2 12 -
trunk/LayoutTests/fast/css-custom-paint/basic-expected.txt
r237192 r237243 6 6 PASS test that registerPaint runs with predefined class 7 7 PASS test that registerPaint accepts only a string and a class constructor 8 PASS test that test div has paint() value 8 9 -
trunk/LayoutTests/fast/css-custom-paint/basic.html
r237192 r237243 5 5 <script src="../../resources/testharness.js"></script> 6 6 <script src="../../resources/testharnessreport.js"></script> 7 8 <style> 9 #paint { 10 background-image: paint(my-paint); 11 width: 50px; 12 height: 50px; 13 } 14 </style> 15 16 <div id="paint"></div> 17 7 18 <script> 8 19 test(function() { … … 52 63 }, 'test that registerPaint accepts only a string and a class constructor'); 53 64 65 test(function() { 66 assert_equals(getComputedStyle(paint).getPropertyValue("background-image"), "paint(my-paint)"); 67 }, 'test that test div has paint() value'); 68 54 69 </script> -
trunk/Source/WebCore/ChangeLog
r237240 r237243 1 2018-10-17 Justin Michaud <justin_michaud@apple.com> 2 3 Parse paint() and store paint callbacks for CSS Painting API 4 https://bugs.webkit.org/show_bug.cgi?id=190657 5 6 Reviewed by Dean Jackson. 7 8 Implement support for parsing paint() images in css, and store CSS paint callback objects in the paint definition map. 9 10 * Sources.txt: 11 * WebCore.xcodeproj/project.pbxproj: 12 * bindings/js/JSCSSPaintWorkletGlobalScopeCustom.cpp: 13 (WebCore::JSCSSPaintWorkletGlobalScope::visitAdditionalChildren): 14 (WebCore::JSCSSPaintWorkletGlobalScope::registerPaint): 15 * css/CSSImageGeneratorValue.cpp: 16 (WebCore::CSSImageGeneratorValue::image): 17 (WebCore::CSSImageGeneratorValue::isFixedSize const): 18 (WebCore::CSSImageGeneratorValue::fixedSize): 19 (WebCore::CSSImageGeneratorValue::isPending const): 20 (WebCore::CSSImageGeneratorValue::knownToBeOpaque const): 21 (WebCore::CSSImageGeneratorValue::loadSubimages): 22 * css/CSSPaintImageValue.cpp: Added. 23 (WebCore::CSSPaintImageValue::customCSSText const): 24 * css/CSSPaintImageValue.h: Added. 25 * css/CSSPaintWorkletGlobalScope.h: 26 * css/CSSPaintWorkletGlobalScope.idl: 27 * css/CSSValue.cpp: 28 (WebCore::CSSValue::equals const): 29 (WebCore::CSSValue::cssText const): 30 (WebCore::CSSValue::destroy): 31 * css/CSSValue.h: 32 (WebCore::CSSValue::isPaintImageValue const): 33 * css/CSSValueKeywords.in: 34 * css/parser/CSSPropertyParserHelpers.cpp: 35 (WebCore::CSSPropertyParserHelpers::consumeCustomPaint): 36 (WebCore::CSSPropertyParserHelpers::consumeGeneratedImage): 37 (WebCore::CSSPropertyParserHelpers::isGeneratedImage): 38 * platform/mediastream/mac/RealtimeVideoUtilities.h: 39 1 40 2018-10-17 Eric Carlson <eric.carlson@apple.com> 2 41 -
trunk/Source/WebCore/Sources.txt
r237239 r237243 610 610 css/CSSNamespaceRule.cpp 611 611 css/CSSPageRule.cpp 612 css/CSSPaintImageValue.cpp 612 613 css/CSSPaintWorkletGlobalScope.cpp 613 614 css/CSSPendingSubstitutionValue.cpp -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r237239 r237243 1351 1351 4B6B5CBD21640EFF00603817 /* DOMCSSPaintWorklet.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6B5CB82163EC0700603817 /* DOMCSSPaintWorklet.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1352 1352 4B6B5CC02164386400603817 /* CSSPaintWorkletGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6B5CBF2164386400603817 /* CSSPaintWorkletGlobalScope.h */; }; 1353 4B6E87692176D69200420E5E /* CSSPaintImageValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6E87682176D69200420E5E /* CSSPaintImageValue.h */; }; 1353 1354 4B6FA6F40C39E48C00087011 /* SmartReplace.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6FA6F20C39E48C00087011 /* SmartReplace.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1354 1355 4BAE95B10B2FA9CE00AED8A0 /* EditorDeleteAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAE95B00B2FA9CE00AED8A0 /* EditorDeleteAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 7889 7890 4B6B5CC1216439CF00603817 /* CSSPaintWorkletGlobalScope.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPaintWorkletGlobalScope.cpp; sourceTree = "<group>"; }; 7890 7891 4B6B5CC321643A8E00603817 /* CSSPaintWorkletGlobalScope.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSPaintWorkletGlobalScope.idl; sourceTree = "<group>"; }; 7892 4B6E87682176D69200420E5E /* CSSPaintImageValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSPaintImageValue.h; sourceTree = "<group>"; }; 7893 4B6E876B2176D8A100420E5E /* CSSPaintImageValue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPaintImageValue.cpp; sourceTree = "<group>"; }; 7891 7894 4B6FA6F20C39E48C00087011 /* SmartReplace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmartReplace.h; sourceTree = "<group>"; }; 7892 7895 4B6FA6F60C39E4A100087011 /* SmartReplaceCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmartReplaceCF.cpp; sourceTree = "<group>"; }; … … 25991 25994 4B5BDD9A21658A1500DD4262 /* CSSPaintCallback.h */, 25992 25995 4B5BDD99216588E500DD4262 /* CSSPaintCallback.idl */, 25996 4B6E876B2176D8A100420E5E /* CSSPaintImageValue.cpp */, 25997 4B6E87682176D69200420E5E /* CSSPaintImageValue.h */, 25993 25998 4B6B5CC1216439CF00603817 /* CSSPaintWorkletGlobalScope.cpp */, 25994 25999 4B6B5CBF2164386400603817 /* CSSPaintWorkletGlobalScope.h */, … … 27993 27998 A80E6D000A1989CA007FB8C5 /* CSSPageRule.h in Headers */, 27994 27999 4B5BDD9B21658A1500DD4262 /* CSSPaintCallback.h in Headers */, 28000 4B6E87692176D69200420E5E /* CSSPaintImageValue.h in Headers */, 27995 28001 4B6B5CC02164386400603817 /* CSSPaintWorkletGlobalScope.h in Headers */, 27996 28002 946D372E1D6CB2940077084F /* CSSParser.h in Headers */, -
trunk/Source/WebCore/bindings/js/JSCSSPaintWorkletGlobalScopeCustom.cpp
r237192 r237243 43 43 throwException(&state, scope, createDOMException(&state, InvalidModificationError, message)); 44 44 return jsUndefined(); 45 } 46 47 void JSCSSPaintWorkletGlobalScope::visitAdditionalChildren(JSC::SlotVisitor& visitor) 48 { 49 for (auto& registered : wrapped().paintDefinitionMap().values()) 50 registered->paintCallback->visitJSFunction(visitor); 45 51 } 46 52 … … 116 122 RETURN_IF_EXCEPTION(scope, JSValue()); 117 123 118 auto paintDefinition = std::unique_ptr<PaintDefinition>(new PaintDefinition { name });124 auto paintDefinition = std::unique_ptr<PaintDefinition>(new PaintDefinition { name, paint.releaseNonNull(), inputProperties, inputArguments }); 119 125 paintDefinitionMap.add(name, WTFMove(paintDefinition)); 120 126 121 127 // FIXME: construct documentDefinition (step 22). 122 123 // FIXME: This is for testing only.124 paint->handleEvent();125 RETURN_IF_EXCEPTION(scope, JSValue());126 127 UNUSED_PARAM(inputProperties);128 UNUSED_PARAM(inputArguments);129 128 130 129 return jsUndefined(); -
trunk/Source/WebCore/css/CSSImageGeneratorValue.cpp
r231105 r237243 151 151 case ConicGradientClass: 152 152 return downcast<CSSConicGradientValue>(*this).image(renderer, size); 153 #if ENABLE(CSS_PAINTING_API) 154 case PaintImageClass: 155 return nullptr; 156 #endif 153 157 default: 154 158 ASSERT_NOT_REACHED(); … … 174 178 case ConicGradientClass: 175 179 return downcast<CSSConicGradientValue>(*this).isFixedSize(); 180 #if ENABLE(CSS_PAINTING_API) 181 case PaintImageClass: 182 return false; 183 #endif 176 184 default: 177 185 ASSERT_NOT_REACHED(); … … 195 203 case ConicGradientClass: 196 204 return downcast<CSSConicGradientValue>(*this).fixedSize(renderer); 205 #if ENABLE(CSS_PAINTING_API) 206 case PaintImageClass: 207 return FloatSize(); 208 #endif 197 209 default: 198 210 ASSERT_NOT_REACHED(); … … 218 230 case ConicGradientClass: 219 231 return downcast<CSSConicGradientValue>(*this).isPending(); 232 #if ENABLE(CSS_PAINTING_API) 233 case PaintImageClass: 234 return false; 235 #endif 220 236 default: 221 237 ASSERT_NOT_REACHED(); … … 241 257 case ConicGradientClass: 242 258 return downcast<CSSConicGradientValue>(*this).knownToBeOpaque(renderer); 259 #if ENABLE(CSS_PAINTING_API) 260 case PaintImageClass: 261 return false; 262 #endif 243 263 default: 244 264 ASSERT_NOT_REACHED(); … … 268 288 downcast<CSSConicGradientValue>(*this).loadSubimages(cachedResourceLoader, options); 269 289 break; 290 #if ENABLE(CSS_PAINTING_API) 291 case PaintImageClass: 292 break; 293 #endif 270 294 default: 271 295 ASSERT_NOT_REACHED(); -
trunk/Source/WebCore/css/CSSPaintWorkletGlobalScope.h
r237192 r237243 28 28 #if ENABLE(CSS_PAINTING_API) 29 29 30 #include "CSSPaintCallback.h" 30 31 #include "ExceptionOr.h" 31 32 #include <wtf/HashMap.h> … … 50 51 struct PaintDefinition { 51 52 const AtomicString name; 53 const Ref<CSSPaintCallback> paintCallback; 54 const Vector<String> inputProperties; 55 const Vector<String> inputArguments; 52 56 }; 53 57 -
trunk/Source/WebCore/css/CSSPaintWorkletGlobalScope.idl
r237192 r237243 28 28 Conditional=CSS_PAINTING_API, 29 29 ImplementationLacksVTable, 30 JSCustomMarkFunction, 30 31 JSGenerateToNativeObject 31 32 ] interface CSSPaintWorkletGlobalScope { -
trunk/Source/WebCore/css/CSSValue.cpp
r236998 r237243 53 53 #include "CSSLineBoxContainValue.h" 54 54 #include "CSSNamedImageValue.h" 55 #include "CSSPaintImageValue.h" 55 56 #include "CSSPendingSubstitutionValue.h" 56 57 #include "CSSPrimitiveValue.h" … … 152 153 case FilterImageClass: 153 154 return compareCSSValues<CSSFilterImageValue>(*this, other); 155 #if ENABLE(CSS_PAINTING_API) 156 case PaintImageClass: 157 return compareCSSValues<CSSPaintImageValue>(*this, other); 158 #endif 154 159 case FontClass: 155 160 return compareCSSValues<CSSFontValue>(*this, other); … … 248 253 case FilterImageClass: 249 254 return downcast<CSSFilterImageValue>(*this).customCSSText(); 255 #if ENABLE(CSS_PAINTING_API) 256 case PaintImageClass: 257 return downcast<CSSPaintImageValue>(*this).customCSSText(); 258 #endif 250 259 case FontClass: 251 260 return downcast<CSSFontValue>(*this).customCSSText(); … … 433 442 delete downcast<CSSFilterImageValue>(this); 434 443 return; 444 #if ENABLE(CSS_PAINTING_API) 445 case PaintImageClass: 446 delete downcast<CSSPaintImageValue>(this); 447 return; 448 #endif 435 449 case CSSContentDistributionClass: 436 450 delete downcast<CSSContentDistributionValue>(this); -
trunk/Source/WebCore/css/CSSValue.h
r236998 r237243 107 107 bool isCalcValue() const {return m_classType == CalculationClass; } 108 108 bool isFilterImageValue() const { return m_classType == FilterImageClass; } 109 #if ENABLE(CSS_PAINTING_API) 110 bool isPaintImageValue() const { return m_classType == PaintImageClass; } 111 #endif 109 112 bool isContentDistributionValue() const { return m_classType == CSSContentDistributionClass; } 110 113 bool isGridAutoRepeatValue() const { return m_classType == GridAutoRepeatClass; } … … 143 146 // Image generator classes. 144 147 CanvasClass, 148 #if ENABLE(CSS_PAINTING_API) 149 PaintImageClass, 150 #endif 145 151 NamedImageClass, 146 152 CrossfadeClass, -
trunk/Source/WebCore/css/CSSValueKeywords.in
r237156 r237243 1202 1202 -webkit-filter 1203 1203 dashboard-region 1204 #if defined(ENABLE_CSS_PAINTING_API) && ENABLE_CSS_PAINTING_API 1205 paint 1206 #endif 1204 1207 1205 1208 // deprecated gradients -
trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp
r236155 r237243 39 39 #include "CSSImageValue.h" 40 40 #include "CSSNamedImageValue.h" 41 #include "CSSPaintImageValue.h" 41 42 #include "CSSParserIdioms.h" 42 43 #include "CSSValuePool.h" … … 1281 1282 return CSSFilterImageValue::create(imageValue.releaseNonNull(), filterValue.releaseNonNull()); 1282 1283 } 1284 1285 #if ENABLE(CSS_PAINTING_API) 1286 static RefPtr<CSSValue> consumeCustomPaint(CSSParserTokenRange& args) 1287 { 1288 if (!RuntimeEnabledFeatures::sharedFeatures().cssPaintingAPIEnabled()) 1289 return nullptr; 1290 if (args.peek().type() != IdentToken) 1291 return nullptr; 1292 auto name = args.consumeIncludingWhitespace().value().toString(); 1293 1294 // FIXME: should parse arguments. 1295 while (!args.atEnd()) 1296 args.consume(); 1297 1298 return CSSPaintImageValue::create(name); 1299 } 1300 #endif 1283 1301 1284 1302 static RefPtr<CSSValue> consumeGeneratedImage(CSSParserTokenRange& range, CSSParserContext context) … … 1318 1336 else if (id == CSSValueWebkitFilter || id == CSSValueFilter) 1319 1337 result = consumeFilterImage(args, context); 1338 #if ENABLE(CSS_PAINTING_API) 1339 else if (id == CSSValuePaint) 1340 result = consumeCustomPaint(args); 1341 #endif 1320 1342 if (!result || !args.atEnd()) 1321 1343 return nullptr; … … 1372 1394 || id == CSSValueWebkitNamedImage 1373 1395 || id == CSSValueWebkitFilter 1396 #if ENABLE(CSS_PAINTING_API) 1397 || id == CSSValuePaint 1398 #endif 1374 1399 || id == CSSValueFilter; 1375 1400 } -
trunk/Source/WebCore/platform/mediastream/mac/RealtimeVideoUtilities.h
r236339 r237243 24 24 */ 25 25 26 #pragma once 27 26 28 #include <CoreVideo/CoreVideo.h> 27 29
Note: See TracChangeset
for help on using the changeset viewer.