Bug 1399767 - Remove preference "layout.css.clip-path-shapes.enabled". draft
authorTing-Yu Lin <tlin@mozilla.com>
Fri, 15 Sep 2017 15:00:30 +0800
changeset 666154 c0f2d90696e3d49cc029e8f1e8904d65ee8b644a
parent 666127 ae39864562c6048fdc2950c5dfedb48e247c3300
child 731992 66a1420ade33740c6a665f80e38f57b494e702a9
push id80291
push userbmo:tlin@mozilla.com
push dateMon, 18 Sep 2017 03:40:41 +0000
bugs1399767
milestone57.0a1
Bug 1399767 - Remove preference "layout.css.clip-path-shapes.enabled". The variables (basicShapeSVGBoxValues, etc.) in property_database.js are moved to the beginning of the file so that they're defined before usage. MozReview-Commit-ID: 7L3obIY1alP
layout/base/nsLayoutUtils.cpp
layout/base/nsLayoutUtils.h
layout/reftests/svg/reftest.list
layout/reftests/svg/smil/reftest.list
layout/reftests/svg/svg-integration/clip-path/reftest.list
layout/reftests/w3c-css/submitted/masking/reftest.list
layout/reftests/w3c-css/submitted/shapes1/reftest.list
layout/style/nsCSSParser.cpp
layout/style/test/property_database.js
layout/style/test/test_clip-path_polygon.html
layout/style/test/test_transitions_per_property.html
modules/libpref/init/all.js
testing/web-platform/meta/css-shapes/__dir__.ini
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -690,32 +690,16 @@ nsLayoutUtils::CSSFiltersEnabled()
                                  "layout.css.filters.enabled",
                                  false);
   }
 
   return sCSSFiltersEnabled;
 }
 
 bool
-nsLayoutUtils::CSSClipPathShapesEnabled()
-{
-  static bool sCSSClipPathShapesEnabled;
-  static bool sCSSClipPathShapesPrefCached = false;
-
-  if (!sCSSClipPathShapesPrefCached) {
-   sCSSClipPathShapesPrefCached = true;
-   Preferences::AddBoolVarCache(&sCSSClipPathShapesEnabled,
-                                "layout.css.clip-path-shapes.enabled",
-                                false);
-  }
-
-  return sCSSClipPathShapesEnabled;
-}
-
-bool
 nsLayoutUtils::UnsetValueEnabled()
 {
   static bool sUnsetValueEnabled;
   static bool sUnsetValuePrefCached = false;
 
   if (!sUnsetValuePrefCached) {
     sUnsetValuePrefCached = true;
     Preferences::AddBoolVarCache(&sUnsetValueEnabled,
--- a/layout/base/nsLayoutUtils.h
+++ b/layout/base/nsLayoutUtils.h
@@ -2340,21 +2340,16 @@ public:
   static bool AnimatedImageLayersEnabled();
 
   /**
    * Checks if we should enable parsing for CSS Filters.
    */
   static bool CSSFiltersEnabled();
 
   /**
-   * Checks if we should enable parsing for CSS clip-path basic shapes.
-   */
-  static bool CSSClipPathShapesEnabled();
-
-  /**
    * Checks whether support for the CSS-wide "unset" value is enabled.
    */
   static bool UnsetValueEnabled();
 
   /**
    * Checks whether support for the CSS grid-template-{columns,rows} 'subgrid X'
    * value is enabled.
    */
--- a/layout/reftests/svg/reftest.list
+++ b/layout/reftests/svg/reftest.list
@@ -72,22 +72,20 @@ fuzzy-if(/^Windows\x20NT\x2010\.0/.test(
 == clipPath-basic-02.svg pass.svg
 == clipPath-basic-03.svg pass.svg
 == clipPath-basic-04.svg pass.svg
 == clipPath-basic-05.svg pass.svg
 == clipPath-basic-06.svg pass.svg
 == clipPath-basic-07.svg pass.svg
 == clipPath-on-outflowElement-01a.html clipPath-on-outflowElement-01-ref.html
 == clipPath-on-outflowElement-01b.html clipPath-on-outflowElement-01-ref.html
-default-preferences pref(layout.css.clip-path-shapes.enabled,true)
 fuzzy(1,32400) == clipPath-on-outflowElement-02a.html clipPath-on-outflowElement-02-ref.html
 fuzzy(1,32400) == clipPath-on-outflowElement-02b.html clipPath-on-outflowElement-02-ref.html
 == clipPath-polygon-01.svg pass.svg
 == clipPath-polygon-elementFromPoint-01.svg pass.svg
-default-preferences
 != clipPath-on-thin-object.svg about:blank
 == clipPath-winding-01.svg pass.svg
 
 == comments-in-pres-attrs.svg pass.svg
 
 == conditions-01.svg pass.svg
 == conditions-02.svg pass.svg
 == conditions-03.svg pass.svg
@@ -329,17 +327,17 @@ fuzzy-if(skiaContent,7,175) fuzzy-if(ski
 == overflow-on-outer-svg-02b.xhtml overflow-on-outer-svg-02-ref.xhtml
 == overflow-on-outer-svg-02c.xhtml overflow-on-outer-svg-02-ref.xhtml
 == overflow-on-outer-svg-02d.xhtml overflow-on-outer-svg-02-ref.xhtml
 == overflow-on-outer-svg-03a.xhtml overflow-on-outer-svg-03-ref.xhtml
 == overflow-on-outer-svg-03b.xhtml overflow-on-outer-svg-03-ref.xhtml
 
 == paint-on-maskLayer-1a.html paint-on-maskLayer-1-ref.html
 == paint-on-maskLayer-1b.html paint-on-maskLayer-1-ref.html
-pref(layout.css.clip-path-shapes.enabled,true) == paint-on-maskLayer-1c.html paint-on-maskLayer-1-ref.html
+== paint-on-maskLayer-1c.html paint-on-maskLayer-1-ref.html
 pref(svg.paint-order.enabled,true) == paint-order-01.svg paint-order-01-ref.svg
 pref(svg.paint-order.enabled,true) fuzzy-if(webrender,1-1,112-112) == paint-order-02.svg paint-order-02-ref.svg
 pref(svg.paint-order.enabled,true) == paint-order-03.svg paint-order-03-ref.svg
 
 #fuzzy(23,60) fails-if(d2d) == path-01.svg path-01-ref.svg
 == path-02.svg pass.svg
 == path-03.svg pass.svg
 == path-04.svg pass.svg
--- a/layout/reftests/svg/smil/reftest.list
+++ b/layout/reftests/svg/smil/reftest.list
@@ -279,12 +279,12 @@ fuzzy-if(cocoaWidget&&layersGPUAccelerat
 == anim-display-in-g-element.svg lime.svg
 
 # Test animation that change 'display' style value to 'none'
 == anim-change-display-none-for-ancestor-elem.html lime.html
 == anim-change-display-none-for-target-elem.html lime.html
 == anim-change-display-none-for-dynamically-appended-elem.html lime.html
 == anim-change-display-block-for-dynamically-appended-elem.html anim-standard-ref.html
 
-pref(layout.css.clip-path-shapes.enabled,true) fuzzy(63,146) == anim-clipPath-viewBox.svg anim-clipPath-viewBox-ref.svg
+fuzzy(63,146) == anim-clipPath-viewBox.svg anim-clipPath-viewBox-ref.svg
 
 # Test animations for overflow.
 == anim-overflow-shorthand.svg anim-overflow-shorthand-ref.svg
--- a/layout/reftests/svg/svg-integration/clip-path/reftest.list
+++ b/layout/reftests/svg/svg-integration/clip-path/reftest.list
@@ -1,13 +1,11 @@
 # These tests verify that CSS clip-path behaves properly.
 # e.g. clip-path: polygon(nonzero, 3px 3px, 20% 20%)
 
-default-preferences pref(layout.css.clip-path-shapes.enabled,true)
-
 # Following tests adapted from W3C csswg-test repo
 == clip-path-polygon-001.html clip-path-rectangle-ref.html
 == clip-path-polygon-002.html clip-path-rectangle-ref.html
 == clip-path-polygon-003.html clip-path-rectangle-ref.html
 == clip-path-polygon-004.html clip-path-rectangle-border-ref.html
 == clip-path-polygon-005.html clip-path-rectangle-border-ref.html
 == clip-path-polygon-006.html clip-path-square-001-ref.html
 == clip-path-polygon-007.html clip-path-stripes-001-ref.html
--- a/layout/reftests/w3c-css/submitted/masking/reftest.list
+++ b/layout/reftests/w3c-css/submitted/masking/reftest.list
@@ -25,17 +25,17 @@ fuzzy-if(skiaContent||winWidget,1,20000)
 == mask-image-3a.html mask-image-3-ref.html
 == mask-image-3b.html mask-image-3-ref.html
 fuzzy-if(skiaContent||winWidget,1,43) == mask-image-3c.html mask-image-3-ref.html
 fuzzy-if(skiaContent||winWidget,1,43) == mask-image-3d.html mask-image-3-ref.html
 == mask-image-3e.html mask-image-3-ref.html
 # Due to SVG luminance, see bug 1372577, parent process doesn't use d2d for luminance.
 fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) fuzzy-if(d2d,255,1) fuzzy-if(winWidget&&!browserIsRemote,50,85) == mask-image-3f.html mask-image-3-ref.html
 fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) fuzzy-if(d2d,255,1) fuzzy-if(winWidget&&!browserIsRemote,50,85) == mask-image-3g.html mask-image-3-ref.html
-pref(layout.css.clip-path-shapes.enabled,true) fuzzy-if(winWidget,1,3) fuzzy-if(skiaContent,2,12) == mask-image-3h.html mask-image-3-ref.html
+fuzzy-if(winWidget,1,3) fuzzy-if(skiaContent,2,12) == mask-image-3h.html mask-image-3-ref.html
 fuzzy-if(skiaContent,71,203) == mask-image-3i.html mask-image-3-ref.html
 == mask-image-4a.html blank.html
 == mask-image-4b.html blank.html
 == mask-image-5.html mask-image-5-ref.html
 == mask-image-6.html mask-image-6-ref.html
 
 # mask-clip test cases
 == mask-clip-1.html mask-clip-1-ref.html
@@ -82,18 +82,16 @@ fails == mask-origin-2.html mask-origin-
 == mask-size-length-length.html mask-size-length-length-ref.html
 == mask-size-length-percent.html mask-size-length-percent-ref.html
 == mask-size-percent.html mask-size-percent-percent-ref.html
 == mask-size-percent-auto.html mask-size-percent-percent-ref.html
 == mask-size-percent-length.html mask-size-percent-percent-ref.html
 == mask-size-percent-percent.html mask-size-percent-percent-ref.html
 == mask-size-percent-percent-stretch.html mask-size-percent-percent-stretch-ref.html
 
-default-preferences pref(layout.css.clip-path-shapes.enabled,true)
-
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) fuzzy-if(webrender,64,371) == clip-path-contentBox-1a.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) == clip-path-contentBox-1b.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) == clip-path-contentBox-1c.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) fuzzy-if(webrender,64,371) == clip-path-paddingBox-1a.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) == clip-path-paddingBox-1b.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) fuzzy-if(webrender,64,371) == clip-path-paddingBox-1c.html clip-path-geometryBox-1-ref.html
 fuzzy(64,370) == clip-path-borderBox-1a.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) == clip-path-borderBox-1b.html clip-path-geometryBox-1-ref.html
@@ -104,18 +102,16 @@ fuzzy(64,370) == clip-path-strokeBox-1a.
 fuzzy(64,370) == clip-path-strokeBox-1b.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) == clip-path-viewBox-1a.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,1,21) fuzzy-if(skiaContent,1,60) == clip-path-viewBox-1b.html clip-path-geometryBox-1-ref.html
 fuzzy(64,370) == clip-path-viewBox-1c.html clip-path-geometryBox-1-ref.html
 fuzzy-if(winWidget,9,98) fuzzy-if(webrender,64,100) == clip-path-geometryBox-2.html clip-path-geometryBox-2-ref.html
 
 == clip-path-localRef-1.html clip-path-localRef-1-ref.html
 
-default-preferences
-
 # mask with opacity test cases
 fuzzy(1,5000) == mask-opacity-1a.html mask-opacity-1-ref.html
 fuzzy(1,5000) == mask-opacity-1b.html mask-opacity-1-ref.html
 fuzzy(1,5000) == mask-opacity-1c.html mask-opacity-1-ref.html
 fuzzy(1,5000) == mask-opacity-1d.html mask-opacity-1-ref.html
 fuzzy(1,5000) == mask-opacity-1e.html mask-opacity-1-ref.html
 
 == clip-path-mix-blend-mode-1.html clip-path-mix-blend-mode-1-ref.html
--- a/layout/reftests/w3c-css/submitted/shapes1/reftest.list
+++ b/layout/reftests/w3c-css/submitted/shapes1/reftest.list
@@ -1,9 +1,9 @@
-default-preferences pref(layout.css.shape-outside.enabled,true) pref(layout.css.clip-path-shapes.enabled,true)
+default-preferences pref(layout.css.shape-outside.enabled,true)
 
 # <shape-box> only
 == shape-outside-margin-box-001.html shape-outside-margin-box-001-ref.html
 == shape-outside-margin-box-002.html shape-outside-margin-box-002-ref.html
 == shape-outside-border-box-001.html shape-outside-border-box-001-ref.html
 == shape-outside-border-box-002.html shape-outside-border-box-002-ref.html
 == shape-outside-padding-box-001.html shape-outside-padding-box-001-ref.html
 == shape-outside-padding-box-002.html shape-outside-padding-box-002-ref.html
--- a/layout/style/nsCSSParser.cpp
+++ b/layout/style/nsCSSParser.cpp
@@ -16427,23 +16427,16 @@ CSSParserImpl::ParseReferenceBoxAndBasic
 // Parse a clip-path url to a <clipPath> element or a basic shape.
 bool
 CSSParserImpl::ParseClipPath(nsCSSValue& aValue)
 {
   if (ParseSingleTokenVariant(aValue, VARIANT_HUO, nullptr)) {
     return true;
   }
 
-  if (!nsLayoutUtils::CSSClipPathShapesEnabled()) {
-    // With CSS Clip Path Shapes disabled, we should only accept
-    // SVG clipPath reference and none.
-    REPORT_UNEXPECTED_TOKEN(PEExpectedNoneOrURL);
-    return false;
-  }
-
   return ParseReferenceBoxAndBasicShape(
     aValue, nsCSSProps::kClipPathGeometryBoxKTable);
 }
 
 // none | [ <basic-shape> || <shape-box> ] | <image>
 bool
 CSSParserImpl::ParseShapeOutside(nsCSSValue& aValue)
 {
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -319,16 +319,193 @@ var invalidGradientAndElementValues = [
   "radial-gradient(15% 20% -1.2345rad, circle, red, blue)",
   "radial-gradient(45px 399grad, ellipse closest-corner, red, blue)",
   "radial-gradient(45px 399grad, farthest-side circle, red, blue)"
 ];
 var unbalancedGradientAndElementValues = [
   "-moz-element(#a()",
 ];
 
+var basicShapeSVGBoxValues = [
+  "fill-box",
+  "stroke-box",
+  "view-box",
+
+  "polygon(evenodd, 20pt 20cm) fill-box",
+  "polygon(evenodd, 20ex 20pc) stroke-box",
+  "polygon(evenodd, 20rem 20in) view-box",
+];
+
+var basicShapeOtherValues = [
+  "polygon(20px 20px)",
+  "polygon(20px 20%)",
+  "polygon(20% 20%)",
+  "polygon(20rem 20em)",
+  "polygon(20cm 20mm)",
+  "polygon(20px 20px, 30px 30px)",
+  "polygon(20px 20px, 30% 30%, 30px 30px)",
+  "polygon(nonzero, 20px 20px, 30% 30%, 30px 30px)",
+  "polygon(evenodd, 20px 20px, 30% 30%, 30px 30px)",
+
+  "content-box",
+  "padding-box",
+  "border-box",
+  "margin-box",
+
+  "polygon(0 0) content-box",
+  "border-box polygon(0 0)",
+  "padding-box    polygon(   0  20px ,  30px    20% )  ",
+  "polygon(evenodd, 20% 20em) content-box",
+  "polygon(evenodd, 20vh 20em) padding-box",
+  "polygon(evenodd, 20vh calc(20% + 20em)) border-box",
+  "polygon(evenodd, 20vh 20vw) margin-box",
+
+  "circle()",
+  "circle(at center)",
+  "circle(at top left 20px)",
+  "circle(at bottom right)",
+  "circle(20%)",
+  "circle(300px)",
+  "circle(calc(20px + 30px))",
+  "circle(farthest-side)",
+  "circle(closest-side)",
+  "circle(closest-side at center)",
+  "circle(farthest-side at top)",
+  "circle(20px at top right)",
+  "circle(40% at 50% 100%)",
+  "circle(calc(20% + 20%) at right bottom)",
+  "circle() padding-box",
+
+  "ellipse()",
+  "ellipse(at center)",
+  "ellipse(at top left 20px)",
+  "ellipse(at bottom right)",
+  "ellipse(20% 20%)",
+  "ellipse(300px 50%)",
+  "ellipse(calc(20px + 30px) 10%)",
+  "ellipse(farthest-side closest-side)",
+  "ellipse(closest-side farthest-side)",
+  "ellipse(farthest-side farthest-side)",
+  "ellipse(closest-side closest-side)",
+  "ellipse(closest-side closest-side at center)",
+  "ellipse(20% farthest-side at top)",
+  "ellipse(20px 50% at top right)",
+  "ellipse(closest-side 40% at 50% 100%)",
+  "ellipse(calc(20% + 20%) calc(20px + 20cm) at right bottom)",
+
+  "inset(1px)",
+  "inset(20% -20px)",
+  "inset(20em 4rem calc(20% + 20px))",
+  "inset(20vh 20vw 20pt 3%)",
+  "inset(5px round 3px)",
+  "inset(1px 2px round 3px / 3px)",
+  "inset(1px 2px 3px round 3px 2em / 20%)",
+  "inset(1px 2px 3px 4px round 3px 2vw 20% / 20px 3em 2vh 20%)",
+];
+
+var basicShapeInvalidValues = [
+  "url(#test) url(#tes2)",
+  "polygon (0 0)",
+  "polygon(20px, 40px)",
+  "border-box content-box",
+  "polygon(0 0) polygon(0 0)",
+  "polygon(nonzero 0 0)",
+  "polygon(evenodd 20px 20px)",
+  "polygon(20px 20px, evenodd)",
+  "polygon(20px 20px, nonzero)",
+  "polygon(0 0) conten-box content-box",
+  "content-box polygon(0 0) conten-box",
+  "padding-box polygon(0 0) conten-box",
+  "polygon(0 0) polygon(0 0) content-box",
+  "polygon(0 0) content-box polygon(0 0)",
+  "polygon(0 0), content-box",
+  "polygon(0 0), polygon(0 0)",
+  "content-box polygon(0 0) polygon(0 0)",
+  "content-box polygon(0 0) none",
+  "none content-box polygon(0 0)",
+  "inherit content-box polygon(0 0)",
+  "initial polygon(0 0)",
+  "polygon(0 0) farthest-side",
+  "farthest-corner polygon(0 0)",
+  "polygon(0 0) farthest-corner",
+  "polygon(0 0) conten-box",
+  "polygon(0 0) polygon(0 0) farthest-corner",
+  "polygon(0 0) polygon(0 0) polygon(0 0)",
+  "border-box polygon(0, 0)",
+  "border-box padding-box",
+  "margin-box farthest-side",
+  "nonsense() border-box",
+  "border-box nonsense()",
+
+  "circle(at)",
+  "circle(at 20% 20% 30%)",
+  "circle(20px 2px at center)",
+  "circle(2at center)",
+  "circle(closest-corner)",
+  "circle(at center top closest-side)",
+  "circle(-20px)",
+  "circle(farthest-side closest-side)",
+  "circle(20% 20%)",
+  "circle(at farthest-side)",
+  "circle(calc(20px + rubbish))",
+
+  "ellipse(at)",
+  "ellipse(at 20% 20% 30%)",
+  "ellipse(20px at center)",
+  "ellipse(-20px 20px)",
+  "ellipse(closest-corner farthest-corner)",
+  "ellipse(20px -20px)",
+  "ellipse(-20px -20px)",
+  "ellipse(farthest-side)",
+  "ellipse(20%)",
+  "ellipse(at farthest-side farthest-side)",
+  "ellipse(at top left calc(20px + rubbish))",
+
+  "polygon(at)",
+  "polygon(at 20% 20% 30%)",
+  "polygon(20px at center)",
+  "polygon(2px 2at center)",
+  "polygon(closest-corner farthest-corner)",
+  "polygon(at center top closest-side closest-side)",
+  "polygon(40% at 50% 100%)",
+  "polygon(40% farthest-side 20px at 50% 100%)",
+
+  "inset()",
+  "inset(round)",
+  "inset(round 3px)",
+  "inset(1px round 1px 2px 3px 4px 5px)",
+  "inset(1px 2px 3px 4px 5px)",
+  "inset(1px, round 3px)",
+  "inset(1px, 2px)",
+  "inset(1px 2px, 3px)",
+  "inset(1px at 3px)",
+  "inset(1px round 1px // 2px)",
+  "inset(1px round)",
+  "inset(1px calc(2px + rubbish))",
+  "inset(1px round 2px calc(3px + rubbish))",
+];
+
+var basicShapeUnbalancedValues = [
+  "polygon(30% 30%",
+  "polygon(nonzero, 20% 20px",
+  "polygon(evenodd, 20px 20px",
+
+  "circle(",
+  "circle(40% at 50% 100%",
+  "ellipse(",
+  "ellipse(40% at 50% 100%",
+
+  "inset(1px",
+  "inset(1px 2px",
+  "inset(1px 2px 3px",
+  "inset(1px 2px 3px 4px",
+  "inset(1px 2px 3px 4px round 5px",
+  "inset(1px 2px 3px 4px round 5px / 6px",
+];
+
 if (IsCSSPropertyPrefEnabled("layout.css.prefixes.webkit")) {
   // Extend gradient lists with valid/invalid webkit-prefixed expressions:
   validGradientAndElementValues.push(
     // 2008 GRADIENTS: -webkit-gradient()
     // ----------------------------------
     // linear w/ no color stops (valid) and a variety of position values:
     "-webkit-gradient(linear, 1 2, 3 4)",
     "-webkit-gradient(linear,1 2,3 4)", // (no extra space)
@@ -4397,18 +4574,21 @@ var gCSSProperties = {
     invalid_values: [ "3.0", "17.5", "3e1" ]
   }
   ,
   "clip-path": {
     domProp: "clipPath",
     inherited: false,
     type: CSS_TYPE_LONGHAND,
     initial_values: [ "none" ],
-    other_values: [ "url(#mypath)", "url('404.svg#mypath')" ],
-    invalid_values: []
+    other_values: [
+      "url(#mypath)", "url('404.svg#mypath')", "url(#my-clip-path)"
+    ].concat(basicShapeSVGBoxValues).concat(basicShapeOtherValues),
+    invalid_values: basicShapeInvalidValues,
+    unbalanced_values: basicShapeUnbalancedValues
   },
   "clip-rule": {
     domProp: "clipRule",
     inherited: true,
     type: CSS_TYPE_LONGHAND,
     initial_values: [ "nonzero" ],
     other_values: [ "evenodd" ],
     invalid_values: []
@@ -5963,208 +6143,16 @@ if (IsCSSPropertyPrefEnabled("svg.transf
     inherited: false,
     type: CSS_TYPE_LONGHAND,
     initial_values: [ "border-box" ],
     other_values: [ "fill-box", "view-box" ],
     invalid_values: ["content-box", "padding-box", "stroke-box", "margin-box"]
   };
 }
 
-var basicShapeSVGBoxValues = [
-  "fill-box",
-  "stroke-box",
-  "view-box",
-
-  "polygon(evenodd, 20pt 20cm) fill-box",
-  "polygon(evenodd, 20ex 20pc) stroke-box",
-  "polygon(evenodd, 20rem 20in) view-box",
-];
-
-var basicShapeOtherValues = [
-  "polygon(20px 20px)",
-  "polygon(20px 20%)",
-  "polygon(20% 20%)",
-  "polygon(20rem 20em)",
-  "polygon(20cm 20mm)",
-  "polygon(20px 20px, 30px 30px)",
-  "polygon(20px 20px, 30% 30%, 30px 30px)",
-  "polygon(nonzero, 20px 20px, 30% 30%, 30px 30px)",
-  "polygon(evenodd, 20px 20px, 30% 30%, 30px 30px)",
-
-  "content-box",
-  "padding-box",
-  "border-box",
-  "margin-box",
-
-  "polygon(0 0) content-box",
-  "border-box polygon(0 0)",
-  "padding-box    polygon(   0  20px ,  30px    20% )  ",
-  "polygon(evenodd, 20% 20em) content-box",
-  "polygon(evenodd, 20vh 20em) padding-box",
-  "polygon(evenodd, 20vh calc(20% + 20em)) border-box",
-  "polygon(evenodd, 20vh 20vw) margin-box",
-
-  "circle()",
-  "circle(at center)",
-  "circle(at top left 20px)",
-  "circle(at bottom right)",
-  "circle(20%)",
-  "circle(300px)",
-  "circle(calc(20px + 30px))",
-  "circle(farthest-side)",
-  "circle(closest-side)",
-  "circle(closest-side at center)",
-  "circle(farthest-side at top)",
-  "circle(20px at top right)",
-  "circle(40% at 50% 100%)",
-  "circle(calc(20% + 20%) at right bottom)",
-  "circle() padding-box",
-
-  "ellipse()",
-  "ellipse(at center)",
-  "ellipse(at top left 20px)",
-  "ellipse(at bottom right)",
-  "ellipse(20% 20%)",
-  "ellipse(300px 50%)",
-  "ellipse(calc(20px + 30px) 10%)",
-  "ellipse(farthest-side closest-side)",
-  "ellipse(closest-side farthest-side)",
-  "ellipse(farthest-side farthest-side)",
-  "ellipse(closest-side closest-side)",
-  "ellipse(closest-side closest-side at center)",
-  "ellipse(20% farthest-side at top)",
-  "ellipse(20px 50% at top right)",
-  "ellipse(closest-side 40% at 50% 100%)",
-  "ellipse(calc(20% + 20%) calc(20px + 20cm) at right bottom)",
-
-  "inset(1px)",
-  "inset(20% -20px)",
-  "inset(20em 4rem calc(20% + 20px))",
-  "inset(20vh 20vw 20pt 3%)",
-  "inset(5px round 3px)",
-  "inset(1px 2px round 3px / 3px)",
-  "inset(1px 2px 3px round 3px 2em / 20%)",
-  "inset(1px 2px 3px 4px round 3px 2vw 20% / 20px 3em 2vh 20%)",
-];
-
-var basicShapeInvalidValues = [
-  "url(#test) url(#tes2)",
-  "polygon (0 0)",
-  "polygon(20px, 40px)",
-  "border-box content-box",
-  "polygon(0 0) polygon(0 0)",
-  "polygon(nonzero 0 0)",
-  "polygon(evenodd 20px 20px)",
-  "polygon(20px 20px, evenodd)",
-  "polygon(20px 20px, nonzero)",
-  "polygon(0 0) conten-box content-box",
-  "content-box polygon(0 0) conten-box",
-  "padding-box polygon(0 0) conten-box",
-  "polygon(0 0) polygon(0 0) content-box",
-  "polygon(0 0) content-box polygon(0 0)",
-  "polygon(0 0), content-box",
-  "polygon(0 0), polygon(0 0)",
-  "content-box polygon(0 0) polygon(0 0)",
-  "content-box polygon(0 0) none",
-  "none content-box polygon(0 0)",
-  "inherit content-box polygon(0 0)",
-  "initial polygon(0 0)",
-  "polygon(0 0) farthest-side",
-  "farthest-corner polygon(0 0)",
-  "polygon(0 0) farthest-corner",
-  "polygon(0 0) conten-box",
-  "polygon(0 0) polygon(0 0) farthest-corner",
-  "polygon(0 0) polygon(0 0) polygon(0 0)",
-  "border-box polygon(0, 0)",
-  "border-box padding-box",
-  "margin-box farthest-side",
-  "nonsense() border-box",
-  "border-box nonsense()",
-
-  "circle(at)",
-  "circle(at 20% 20% 30%)",
-  "circle(20px 2px at center)",
-  "circle(2at center)",
-  "circle(closest-corner)",
-  "circle(at center top closest-side)",
-  "circle(-20px)",
-  "circle(farthest-side closest-side)",
-  "circle(20% 20%)",
-  "circle(at farthest-side)",
-  "circle(calc(20px + rubbish))",
-
-  "ellipse(at)",
-  "ellipse(at 20% 20% 30%)",
-  "ellipse(20px at center)",
-  "ellipse(-20px 20px)",
-  "ellipse(closest-corner farthest-corner)",
-  "ellipse(20px -20px)",
-  "ellipse(-20px -20px)",
-  "ellipse(farthest-side)",
-  "ellipse(20%)",
-  "ellipse(at farthest-side farthest-side)",
-  "ellipse(at top left calc(20px + rubbish))",
-
-  "polygon(at)",
-  "polygon(at 20% 20% 30%)",
-  "polygon(20px at center)",
-  "polygon(2px 2at center)",
-  "polygon(closest-corner farthest-corner)",
-  "polygon(at center top closest-side closest-side)",
-  "polygon(40% at 50% 100%)",
-  "polygon(40% farthest-side 20px at 50% 100%)",
-
-  "inset()",
-  "inset(round)",
-  "inset(round 3px)",
-  "inset(1px round 1px 2px 3px 4px 5px)",
-  "inset(1px 2px 3px 4px 5px)",
-  "inset(1px, round 3px)",
-  "inset(1px, 2px)",
-  "inset(1px 2px, 3px)",
-  "inset(1px at 3px)",
-  "inset(1px round 1px // 2px)",
-  "inset(1px round)",
-  "inset(1px calc(2px + rubbish))",
-  "inset(1px round 2px calc(3px + rubbish))",
-];
-
-var basicShapeUnbalancedValues = [
-  "polygon(30% 30%",
-  "polygon(nonzero, 20% 20px",
-  "polygon(evenodd, 20px 20px",
-
-  "circle(",
-  "circle(40% at 50% 100%",
-  "ellipse(",
-  "ellipse(40% at 50% 100%",
-
-  "inset(1px",
-  "inset(1px 2px",
-  "inset(1px 2px 3px",
-  "inset(1px 2px 3px 4px",
-  "inset(1px 2px 3px 4px round 5px",
-  "inset(1px 2px 3px 4px round 5px / 6px",
-];
-
-if (IsCSSPropertyPrefEnabled("layout.css.clip-path-shapes.enabled")) {
-  gCSSProperties["clip-path"] = {
-    domProp: "clipPath",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "none" ],
-    other_values: [
-      // SVG reference clip-path
-      "url(#my-clip-path)",
-    ].concat(basicShapeSVGBoxValues).concat(basicShapeOtherValues),
-    invalid_values: basicShapeInvalidValues,
-    unbalanced_values: basicShapeUnbalancedValues,
-  };
-}
-
 if (IsCSSPropertyPrefEnabled("layout.css.shape-outside.enabled")) {
   gCSSProperties["shape-outside"] = {
     domProp: "shapeOutside",
     inherited: false,
     type: CSS_TYPE_LONGHAND,
     applies_to_first_letter: true,
     initial_values: [ "none" ],
     other_values: [
--- a/layout/style/test/test_clip-path_polygon.html
+++ b/layout/style/test/test_clip-path_polygon.html
@@ -21,22 +21,20 @@ div {
 <title>clip-path with polygon() hit test</title>
 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 </head>
 <div id="a"></div>
 <p style="margin-top: 110px">
 <script>
 var a = document.getElementById("a");
-if (SpecialPowers.getBoolPref("layout.css.clip-path-shapes.enabled")) {
-  isnot(a, document.elementFromPoint(199, 199), "a shouldn't be found");
-  isnot(a, document.elementFromPoint(199, 250), "a shouldn't be found");
-  isnot(a, document.elementFromPoint(250, 199), "a shouldn't be found");
-  isnot(a, document.elementFromPoint(255, 255), "a shouldn't be found");
-  isnot(a, document.elementFromPoint(301, 200), "a shouldn't be found");
-  isnot(a, document.elementFromPoint(200, 301), "a shouldn't be found");
-}
+isnot(a, document.elementFromPoint(199, 199), "a shouldn't be found");
+isnot(a, document.elementFromPoint(199, 250), "a shouldn't be found");
+isnot(a, document.elementFromPoint(250, 199), "a shouldn't be found");
+isnot(a, document.elementFromPoint(255, 255), "a shouldn't be found");
+isnot(a, document.elementFromPoint(301, 200), "a shouldn't be found");
+isnot(a, document.elementFromPoint(200, 301), "a shouldn't be found");
 is(a, document.elementFromPoint(200, 200), "a should be found");
 is(a, document.elementFromPoint(299, 200), "a should be found");
 is(a, document.elementFromPoint(200, 299), "a should be found");
 is(a, document.elementFromPoint(250, 250), "a should be found");
 </script>
 </html>
--- a/layout/style/test/test_transitions_per_property.html
+++ b/layout/style/test/test_transitions_per_property.html
@@ -1558,19 +1558,16 @@ function filter_function_list_equals(com
       Math.abs(parseFloat(functionValue) - expected) > tolerance) {
       return false;
     }
   }
   return true;
 }
 
 function test_clip_path_transition(prop) {
-  if (!SpecialPowers.getBoolPref("layout.css.clip-path-shapes.enabled")) {
-    return;
-  }
   for (var i in clipPathTests) {
     var test = clipPathTests[i];
     div.style.setProperty("transition-property", "none", "");
     div.style.setProperty(prop, test.start, "");
     cs.getPropertyValue(prop);
     div.style.setProperty("transition-property", prop, "");
     div.style.setProperty(prop, test.end, "");
     var actual = cs.getPropertyValue(prop);
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -2925,19 +2925,16 @@ pref("layout.css.scroll-snap.proximity-t
 pref("layout.css.scroll-snap.prediction-max-velocity", 2000);
 
 // When selecting the snap point for CSS scroll snapping, the velocity of the
 // scroll frame is integrated over this duration, in seconds.  The snap point
 // best suited for this position is selected, enabling the user to perform fling
 // gestures.
 pref("layout.css.scroll-snap.prediction-sensitivity", "0.750");
 
-// Is support for basic shapes in clip-path enabled?
-pref("layout.css.clip-path-shapes.enabled", true);
-
 // Is support for DOMPoint enabled?
 pref("layout.css.DOMPoint.enabled", true);
 
 // Is support for DOMQuad enabled?
 pref("layout.css.DOMQuad.enabled", true);
 
 // Is support for DOMMatrix enabled?
 pref("layout.css.DOMMatrix.enabled", true);
deleted file mode 100644
--- a/testing/web-platform/meta/css-shapes/__dir__.ini
+++ /dev/null
@@ -1,1 +0,0 @@
-prefs: [layout.css.clip-path-shapes.enabled:true]