historical.html (3100B)
1 <!DOCTYPE html> 2 <title>Historical SVG features must be removed</title> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script> 6 var removedInterfaces = [ 7 "SVGAltGlyphElement", 8 "SVGAltGlyphDefElement", 9 "SVGAltGlyphItemElement", 10 "SVGAnimatedPathData", 11 "SVGColor", 12 "SVGColorProfileElement", 13 "SVGColorProfileRule", 14 "SVGCursorElement", 15 "SVGDocument", 16 "SVGElementInstanceList", 17 "SVGExternalResourcesRequired", 18 "SVGFontElement", 19 "SVGFontFaceElement", 20 "SVGFontFaceSrcElement", 21 "SVGFontFaceUriElement", 22 "SVGFontFaceFormatElement", 23 "SVGGlyphElement", 24 "SVGGlyphRefElement", 25 "SVGHKernElement", 26 "SVGICCColor", 27 "SVGLangSpace", 28 "SVGLocatable", 29 "SVGMissingGlyphElement", 30 "SVGTransformable", 31 "SVGTRefElement", 32 "SVGPaint", 33 "SVGPathSeg", 34 "SVGStylable", 35 "SVGVKernElement", 36 "SVGViewSpec", 37 "SVGZoomEvent" 38 ] 39 for (var name of removedInterfaces) { 40 test(function() { 41 assert_false(name in window) 42 }, name + " interface must be removed") 43 } 44 45 var mixinInterfaces = [ 46 "GetSVGDocument", 47 "SVGAnimatedPoints", 48 "SVGElementInstance", 49 "SVGFilterPrimitiveStandardAttributes", 50 "SVGFitToViewBox", 51 "SVGTests", 52 "SVGURIReference", 53 "SVGZoomAndPan" 54 ] 55 for (var name of mixinInterfaces) { 56 test(function() { 57 assert_false(name in window) 58 }, name + " mixin interface must not be exposed") 59 } 60 61 var removedMembers = { 62 "SVGElement": [ 63 "getPresentationAttribute", 64 "xmlbase", 65 "xmllang", 66 "xmlspace" 67 ], 68 "SVGAElement": [ 69 "text" 70 ], 71 "SVGGraphicsElement": [ 72 "farthestViewportElement", 73 "getTransformToElement", 74 "hasExtension", 75 "nearestViewportElement", 76 "requiredFeatures" 77 ], 78 "SVGSVGElement": [ 79 "currentView", 80 "pixelUnitToMillimeterX", 81 "pixelUnitToMillimeterY", 82 "screenPixelToMillimeterX", 83 "screenPixelToMillimeterY", 84 "useCurrentView", 85 "viewport" 86 ], 87 "SVGViewElement": [ 88 "viewTarget" 89 ] 90 } 91 for (var name in removedMembers) { 92 for (var member of removedMembers[name]) { 93 test(function() { 94 assert_false(member in window[name].prototype) 95 }, name + ".prototype." + member + " must be removed") 96 } 97 } 98 99 var movedPathMembers = [ 100 "getPointAtLength", 101 "getTotalLength", 102 "pathLength" 103 ] 104 for (var member of movedPathMembers) { 105 test(function() { 106 assert_false(SVGPathElement.prototype.hasOwnProperty(member)) 107 assert_true(SVGGeometryElement.prototype.hasOwnProperty(member)) 108 }, "SVGPathElement.prototype." + member + " must be moved to SVGGeometryElement.prototype") 109 } 110 111 var implementedSVGUnitTypes = [ 112 "SVGClipPathElement", 113 "SVGFilterElement", 114 "SVGGradientElement", 115 "SVGMaskElement", 116 "SVGPatternElement" 117 ] 118 for (var name of implementedSVGUnitTypes) { 119 test(function() { 120 assert_true(name in window); 121 var interfaceObject = window[name]; 122 assert_false("SVG_UNIT_TYPE_UNKNOWN" in interfaceObject); 123 assert_false("SVG_UNIT_TYPE_USERSPACEONUSE" in interfaceObject); 124 assert_false("SVG_UNIT_TYPE_OBJECTBOUNDINGBOX" in interfaceObject); 125 }, name + " must not implement SVGUnitTypes") 126 } 127 </script>