Bug 1417200: Make -moz-border-colors chrome only. r?xidorn draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Tue, 28 Nov 2017 13:14:40 +0100
changeset 706455 6689a5c64d3f681c795e842dcd42a3e0bc26afae
parent 706454 f3f9c2af543a79b35391d1638657e88a6cb26085
child 706456 63f628fa2c18084a85069d78d1273a9cb2b8c627
push id91800
push userbmo:emilio@crisal.io
push dateFri, 01 Dec 2017 22:19:57 +0000
reviewersxidorn
bugs1417200
milestone59.0a1
Bug 1417200: Make -moz-border-colors chrome only. r?xidorn MozReview-Commit-ID: KNais1e5FnE
devtools/shared/css/generated/properties-db.js
dom/animation/test/chrome/test_animation_properties.html
dom/animation/test/mozilla/file_discrete-animations.html
dom/animation/test/mozilla/test_moz-prefixed-properties.html
layout/reftests/forms/progress/bar-pseudo-element-ref.html
layout/reftests/forms/progress/bar-pseudo-element-rtl-ref.html
layout/reftests/forms/progress/bar-pseudo-element-vertical-ref.html
layout/reftests/forms/progress/bar-pseudo-element-vertical-rtl-ref.html
layout/reftests/forms/progress/block-invalidate-ref.html
layout/reftests/forms/progress/in-cells-ref.html
layout/reftests/forms/progress/indeterminate-style-height-ref.html
layout/reftests/forms/progress/indeterminate-style-width-ref.html
layout/reftests/forms/progress/margin-padding-ref.html
layout/reftests/forms/progress/margin-padding-rtl-ref.html
layout/reftests/forms/progress/margin-padding-vertical-ref.html
layout/reftests/forms/progress/margin-padding-vertical-rtl-ref.html
layout/reftests/forms/progress/transformations-ref.html
layout/reftests/forms/progress/values-ref.html
layout/reftests/forms/progress/values-rtl-ref.html
layout/reftests/forms/progress/values-vertical-ref.html
layout/reftests/forms/progress/values-vertical-rtl-ref.html
layout/style/Declaration.cpp
layout/style/nsCSSParser.cpp
layout/style/nsCSSPropList.h
layout/style/nsCSSProps.cpp
layout/style/test/ListCSSProperties.cpp
layout/style/test/property_database.js
layout/style/test/test_dont_use_document_colors.html
layout/style/test/test_shorthand_property_getters.html
layout/tools/reftest/jar.mn
widget/reftests/progressbar-fallback-default-style-ref.html
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -346,30 +346,16 @@ exports.CSS_PROPERTIES = {
     "values": [
       "inherit",
       "initial",
       "none",
       "unset",
       "url"
     ]
   },
-  "-moz-border-bottom-colors": {
-    "isInherited": false,
-    "subproperties": [
-      "-moz-border-bottom-colors"
-    ],
-    "supports": [
-      2
-    ],
-    "values": [
-      "inherit",
-      "initial",
-      "unset"
-    ]
-  },
   "-moz-border-end": {
     "isInherited": false,
     "subproperties": [
       "border-inline-end-width",
       "border-inline-end-style",
       "border-inline-end-color"
     ],
     "supports": [
@@ -499,44 +485,16 @@ exports.CSS_PROPERTIES = {
       "repeating-radial-gradient",
       "round",
       "space",
       "stretch",
       "unset",
       "url"
     ]
   },
-  "-moz-border-left-colors": {
-    "isInherited": false,
-    "subproperties": [
-      "-moz-border-left-colors"
-    ],
-    "supports": [
-      2
-    ],
-    "values": [
-      "inherit",
-      "initial",
-      "unset"
-    ]
-  },
-  "-moz-border-right-colors": {
-    "isInherited": false,
-    "subproperties": [
-      "-moz-border-right-colors"
-    ],
-    "supports": [
-      2
-    ],
-    "values": [
-      "inherit",
-      "initial",
-      "unset"
-    ]
-  },
   "-moz-border-start": {
     "isInherited": false,
     "subproperties": [
       "border-inline-start-width",
       "border-inline-start-style",
       "border-inline-start-color"
     ],
     "supports": [
@@ -626,30 +584,16 @@ exports.CSS_PROPERTIES = {
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
-  "-moz-border-top-colors": {
-    "isInherited": false,
-    "subproperties": [
-      "-moz-border-top-colors"
-    ],
-    "supports": [
-      2
-    ],
-    "values": [
-      "inherit",
-      "initial",
-      "unset"
-    ]
-  },
   "-moz-box-align": {
     "isInherited": false,
     "subproperties": [
       "-moz-box-align"
     ],
     "supports": [],
     "values": [
       "baseline",
@@ -4272,20 +4216,16 @@ exports.CSS_PROPERTIES = {
       "border-top-style",
       "border-right-style",
       "border-bottom-style",
       "border-left-style",
       "border-top-color",
       "border-right-color",
       "border-bottom-color",
       "border-left-color",
-      "-moz-border-top-colors",
-      "-moz-border-right-colors",
-      "-moz-border-bottom-colors",
-      "-moz-border-left-colors",
       "border-image-source",
       "border-image-slice",
       "border-image-width",
       "border-image-outset",
       "border-image-repeat"
     ],
     "supports": [
       2,
--- a/dom/animation/test/chrome/test_animation_properties.html
+++ b/dom/animation/test/chrome/test_animation_properties.html
@@ -163,28 +163,17 @@ var gTests = [
                   values: [ valueFormat(0, '100%', 'replace', 'linear'),
                             valueFormat(1, '100%', 'replace') ] },
                 { property: 'border-image-source',
                   values: [ valueFormat(0, 'none', 'replace', 'linear'),
                             valueFormat(1, 'none', 'replace') ] },
                 { property: 'border-image-width',
                   values: [ valueFormat(0, '1', 'replace', 'linear'),
                             valueFormat(1, '1', 'replace') ] },
-                { property: '-moz-border-bottom-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-left-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-right-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-top-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] } ]
+    ]
   },
   { desc:     'a property-indexed keyframe where a greater shorthand precedes'
               + ' a lesser shorthand',
     frames:   { border:     [ '3px dotted rgb(7, 8, 9)',
                               '4px dashed rgb(10, 11, 12)' ],
                 borderLeft: [ '1px solid rgb(1, 2, 3)',
                               '2px solid rgb(4, 5, 6)' ] },
     expected: [ { property: 'border-bottom-color',
@@ -234,28 +223,17 @@ var gTests = [
                   values: [ valueFormat(0, '100%', 'replace', 'linear'),
                             valueFormat(1, '100%', 'replace') ] },
                 { property: 'border-image-source',
                   values: [ valueFormat(0, 'none', 'replace', 'linear'),
                             valueFormat(1, 'none', 'replace') ] },
                 { property: 'border-image-width',
                   values: [ valueFormat(0, '1', 'replace', 'linear'),
                             valueFormat(1, '1', 'replace') ] },
-                { property: '-moz-border-bottom-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-left-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-right-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-top-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] } ]
+    ]
   },
 
   // ---------------------------------------------------------------------
   //
   // Tests for keyframe sequences
   //
   // ---------------------------------------------------------------------
 
@@ -514,28 +492,17 @@ var gTests = [
                   values: [ valueFormat(0, '100%', 'replace', 'linear'),
                             valueFormat(1, '100%', 'replace') ] },
                 { property: 'border-image-source',
                   values: [ valueFormat(0, 'none', 'replace', 'linear'),
                             valueFormat(1, 'none', 'replace') ] },
                 { property: 'border-image-width',
                   values: [ valueFormat(0, '1', 'replace', 'linear'),
                             valueFormat(1, '1', 'replace') ] },
-                { property: '-moz-border-bottom-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-left-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-right-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-top-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] } ]
+    ]
   },
   { desc:     'a keyframe sequence where greater shorthand precedes'
               + ' lesser shorthand',
     frames:   [ { offset: 0, border: '2px dotted rgb(4, 5, 6)',
                              borderLeft: '1px solid rgb(1, 2, 3)' },
                 { offset: 1, border: '3px dashed rgb(7, 8, 9)' } ],
     expected: [ { property: 'border-bottom-color',
                   values: [ valueFormat(0, 'rgb(4, 5, 6)', 'replace', 'linear'),
@@ -584,28 +551,17 @@ var gTests = [
                   values: [ valueFormat(0, '100%', 'replace', 'linear'),
                             valueFormat(1, '100%', 'replace') ] },
                 { property: 'border-image-source',
                   values: [ valueFormat(0, 'none', 'replace', 'linear'),
                             valueFormat(1, 'none', 'replace') ] },
                 { property: 'border-image-width',
                   values: [ valueFormat(0, '1', 'replace', 'linear'),
                             valueFormat(1, '1', 'replace') ] },
-                { property: '-moz-border-bottom-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-left-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-right-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] },
-                { property: '-moz-border-top-colors',
-                  values: [ valueFormat(0, 'none', 'replace', 'linear'),
-                            valueFormat(1, 'none', 'replace') ] } ]
+    ]
   },
 
   // ---------------------------------------------------------------------
   //
   // Tests for unit conversion
   //
   // ---------------------------------------------------------------------
 
--- a/dom/animation/test/mozilla/file_discrete-animations.html
+++ b/dom/animation/test/mozilla/file_discrete-animations.html
@@ -9,32 +9,16 @@
 "use strict";
 
 const gMozillaSpecificProperties = {
   "-moz-appearance": {
     // https://drafts.csswg.org/css-align/#propdef-align-content
     from: "button",
     to: "none"
   },
-  "-moz-border-bottom-colors": {
-    from: "rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0)",
-    to: "rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0)"
-  },
-  "-moz-border-left-colors": {
-    from: "rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0)",
-    to: "rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0)"
-  },
-  "-moz-border-right-colors": {
-    from: "rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0)",
-    to: "rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0)"
-  },
-  "-moz-border-top-colors": {
-    from: "rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0) rgb(255, 0, 0)",
-    to: "rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0) rgb(0, 255, 0)"
-  },
   "-moz-box-align": {
     // https://developer.mozilla.org/en/docs/Web/CSS/box-align
     from: "center",
     to: "stretch"
   },
   "-moz-box-direction": {
     // https://developer.mozilla.org/en/docs/Web/CSS/box-direction
     from: "reverse",
--- a/dom/animation/test/mozilla/test_moz-prefixed-properties.html
+++ b/dom/animation/test/mozilla/test_moz-prefixed-properties.html
@@ -12,28 +12,16 @@
 <script>
 "use strict";
 
 const testcases = [
   {
     property: "-moz-appearance",
   },
   {
-    property: "-moz-border-bottom-colors",
-  },
-  {
-    property: "-moz-border-left-colors",
-  },
-  {
-    property: "-moz-border-right-colors",
-  },
-  {
-    property: "-moz-border-top-colors",
-  },
-  {
     property: "-moz-box-align"
   },
   {
     property: "-moz-box-direction"
   },
   {
     property: "-moz-box-ordinal-group"
   },
--- a/layout/reftests/forms/progress/bar-pseudo-element-ref.html
+++ b/layout/reftests/forms/progress/bar-pseudo-element-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     body > div:nth-child(1) > .progress-bar { margin: 10px; padding: 0px; }
     body > div:nth-child(2) > .progress-bar { margin: 0px; padding: 10px; }
     body > div:nth-child(3) > .progress-bar { margin: 10px; padding: 10px; }
     body > div:nth-child(4) > .progress-bar { margin: 5px; padding: 5px; }
     body > div:nth-child(5) > .progress-bar { margin: 50px; padding: 50px; }
     body > div:nth-child(6) > .progress-bar { margin: 100px; padding: 100px; }
     body > div:nth-child(7) > .progress-bar { margin: 10px 0px 0px 0px; padding: 0px; }
--- a/layout/reftests/forms/progress/bar-pseudo-element-rtl-ref.html
+++ b/layout/reftests/forms/progress/bar-pseudo-element-rtl-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     body > div:nth-child(1) > .progress-bar { margin: 0px 10px 0px 0px; padding: 0px; }
     body > div:nth-child(2) > .progress-bar { margin: 0px 0px 0px 10px; padding: 0px; }
     body > div:nth-child(3) > .progress-bar { margin: 0px; padding: 0px 10px 0px 0px; }
     body > div:nth-child(4) > .progress-bar { margin: 0px; padding: 0px 0px 0px 10px; }
     /* 15 - 18 should have 100% width, no need to specify. */
   </style>
   <body dir='rtl'>
--- a/layout/reftests/forms/progress/bar-pseudo-element-vertical-ref.html
+++ b/layout/reftests/forms/progress/bar-pseudo-element-vertical-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     .progress-element { margin: 10px; }
     body > div:nth-child(1) > .progress-bar { position: relative; top: 4px; left: 4px;
                                               height: calc(100% - 8px); }
     body > div:nth-child(2) > .progress-bar { }
     body > div:nth-child(3) > .progress-bar { position: relative; top: 4px; left: 4px;
                                               height: calc(100% - 8px); }
     body > div:nth-child(4) > .progress-bar { position: relative; top: 10px; height: calc(100% - 10px); }
--- a/layout/reftests/forms/progress/bar-pseudo-element-vertical-rtl-ref.html
+++ b/layout/reftests/forms/progress/bar-pseudo-element-vertical-rtl-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     .progress-element { margin: 10px; }
     body > div:nth-child(1) > .progress-bar { position: relative; top: 4px; left: 4px;
                                               height: calc(100% - 8px); }
     body > div:nth-child(2) > .progress-bar { }
     body > div:nth-child(3) > .progress-bar { position: relative; top: 4px; left: 4px;
                                               height: calc(100% - 8px); }
     body > div:nth-child(4) > .progress-bar { position: relative; top: 10px; height: calc(100% - 10px); }
--- a/layout/reftests/forms/progress/block-invalidate-ref.html
+++ b/layout/reftests/forms/progress/block-invalidate-ref.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     progress { display: block; }
   </style>
   <body>
     <progress value='0.5'></progress>
   </body>
 </html>
--- a/layout/reftests/forms/progress/in-cells-ref.html
+++ b/layout/reftests/forms/progress/in-cells-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     progress { width: 10em; height: 1em; }
     progress.vertical { -moz-orient: vertical; width: 1em; height: 10em; }
   </style>
   <body>
     <table>
       <tr>
         <td>foo</td>
--- a/layout/reftests/forms/progress/indeterminate-style-height-ref.html
+++ b/layout/reftests/forms/progress/indeterminate-style-height-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     div.progress-element {
       height: 12em;
       width: 2em;
     }
     div.progress-bar {
       height: 100%;
     }
--- a/layout/reftests/forms/progress/indeterminate-style-width-ref.html
+++ b/layout/reftests/forms/progress/indeterminate-style-width-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     div.progress-bar {
       width:100%;
     }
     body > div:nth-child(1) > .progress-bar { width: 20px; }
     body > div:nth-child(2) > .progress-bar { width: 0px; }
     body > div:nth-child(3) > .progress-bar { width: 50%; }
     body > div:nth-child(4) > .progress-bar { width: 1em; }
--- a/layout/reftests/forms/progress/margin-padding-ref.html
+++ b/layout/reftests/forms/progress/margin-padding-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     body > div:nth-child(1) { margin: 10px; padding: 0px; }
     body > div:nth-child(2) { margin: 0px; padding: 10px; }
     body > div:nth-child(3) { margin: 10px; padding: 10px; }
     body > div:nth-child(4) { margin: 5px; padding: 5px; }
     body > div:nth-child(5) { margin: 50px; padding: 50px; }
     body > div:nth-child(6) { margin: 100px; padding: 100px; }
     body > div:nth-child(7) { margin: 10px 0px 0px 0px; padding: 0px; }
--- a/layout/reftests/forms/progress/margin-padding-rtl-ref.html
+++ b/layout/reftests/forms/progress/margin-padding-rtl-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     body > div:nth-child(1) { margin: 10px; padding: 0px; }
     body > div:nth-child(2) { margin: 0px; padding: 10px; }
     body > div:nth-child(3) { margin: 10px; padding: 10px; }
     body > div:nth-child(4) { margin: 5px; padding: 5px; }
     body > div:nth-child(5) { margin: 50px; padding: 50px; }
     body > div:nth-child(6) { margin: 100px; padding: 100px; }
     body > div:nth-child(7) { margin: 10px 0px 0px 0px; padding: 0px; }
--- a/layout/reftests/forms/progress/margin-padding-vertical-ref.html
+++ b/layout/reftests/forms/progress/margin-padding-vertical-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     body > div:nth-child(1) { margin: 10px; padding: 0px; }
     body > div:nth-child(2) { margin: 0px; padding: 10px; }
     body > div:nth-child(3) { margin: 10px; padding: 10px; }
     body > div:nth-child(4) { margin: 5px; padding: 5px; }
     body > div:nth-child(5) { margin: 50px; padding: 50px; }
     body > div:nth-child(6) { margin: 100px; padding: 100px; }
     body > div:nth-child(7) { margin: 10px 0px 0px 0px; padding: 0px; }
--- a/layout/reftests/forms/progress/margin-padding-vertical-rtl-ref.html
+++ b/layout/reftests/forms/progress/margin-padding-vertical-rtl-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     body > div:nth-child(1) { margin: 10px; padding: 0px; }
     body > div:nth-child(2) { margin: 0px; padding: 10px; }
     body > div:nth-child(3) { margin: 10px; padding: 10px; }
     body > div:nth-child(4) { margin: 5px; padding: 5px; }
     body > div:nth-child(5) { margin: 50px; padding: 50px; }
     body > div:nth-child(6) { margin: 100px; padding: 100px; }
     body > div:nth-child(7) { margin: 10px 0px 0px 0px; padding: 0px; }
--- a/layout/reftests/forms/progress/transformations-ref.html
+++ b/layout/reftests/forms/progress/transformations-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     body > div:nth-child(1) { -moz-transform: matrix(1, -0.2, 0, 1, 0, 0); }
     body > div:nth-child(2) { -moz-transform: translateX(15em) matrix(1, 0, 0.6, 1, 0, 0); }
     body > div:nth-child(3) { -moz-transform: rotate(30deg); }
     body > div:nth-child(4) { -moz-transform: scale(2, 4); }
     body > div:nth-child(5) { -moz-transform: scale(0.1, 0.4); }
     body > div:nth-child(6) { -moz-transform: scale(1, 0.4); }
     body > div:nth-child(7) { -moz-transform: scale(0.1, 1); }
--- a/layout/reftests/forms/progress/values-ref.html
+++ b/layout/reftests/forms/progress/values-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     div:nth-child(1) > .progress-bar { width: 100%; }
     div:nth-child(2) > .progress-bar { width: 0%; }
     div:nth-child(3) > .progress-bar { width: 10%; }
     div:nth-child(4) > .progress-bar { width: 50%; }
     div:nth-child(5) > .progress-bar { width: 0%; }
     div:nth-child(6) > .progress-bar { width: 100%; }
     div:nth-child(7) > .progress-bar { width: 42%; }
--- a/layout/reftests/forms/progress/values-rtl-ref.html
+++ b/layout/reftests/forms/progress/values-rtl-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     div:nth-child(1) > .progress-bar { width: 100%; }
     div:nth-child(2) > .progress-bar { width: 0%; }
     div:nth-child(3) > .progress-bar { width: 10%; }
     div:nth-child(4) > .progress-bar { width: 50%; }
     div:nth-child(5) > .progress-bar { width: 0%; }
     div:nth-child(6) > .progress-bar { width: 100%; }
     div:nth-child(7) > .progress-bar { width: 42%; }
--- a/layout/reftests/forms/progress/values-vertical-ref.html
+++ b/layout/reftests/forms/progress/values-vertical-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     div:nth-child(1) > .progress-bar { position: relative; top: 0%; height: 100%; }
     div:nth-child(2) > .progress-bar { position: relative; top: 100%; height: 0%; }
     div:nth-child(3) > .progress-bar { position: relative; top: 90%; height: 10%; }
     div:nth-child(4) > .progress-bar { position: relative; top: 50%; height: 50%; }
     div:nth-child(5) > .progress-bar { position: relative; top: 100%; height: 0%; }
     div:nth-child(6) > .progress-bar { position: relative; top: 0%; height: 100%; }
     div:nth-child(7) > .progress-bar { position: relative; top: 58%; height: 42%; }
--- a/layout/reftests/forms/progress/values-vertical-rtl-ref.html
+++ b/layout/reftests/forms/progress/values-vertical-rtl-ref.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <html>
-  <link rel='stylesheet' type='text/css' href='style.css'>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
     div:nth-child(1) > .progress-bar { position: relative; top: 0%; height: 100%; }
     div:nth-child(2) > .progress-bar { position: relative; top: 100%; height: 0%; }
     div:nth-child(3) > .progress-bar { position: relative; top: 90%; height: 10%; }
     div:nth-child(4) > .progress-bar { position: relative; top: 50%; height: 50%; }
     div:nth-child(5) > .progress-bar { position: relative; top: 100%; height: 0%; }
     div:nth-child(6) > .progress-bar { position: relative; top: 0%; height: 100%; }
     div:nth-child(7) > .progress-bar { position: relative; top: 58%; height: 42%; }
--- a/layout/style/Declaration.cpp
+++ b/layout/style/Declaration.cpp
@@ -706,25 +706,17 @@ Declaration::GetPropertyValueInternal(
       // If we have a non-default value for any of the properties that
       // this shorthand sets but cannot specify, we have to return the
       // empty string.
       if (data->ValueFor(eCSSProperty_border_image_source)->GetUnit() !=
             eCSSUnit_None ||
           !data->HasDefaultBorderImageSlice() ||
           !data->HasDefaultBorderImageWidth() ||
           !data->HasDefaultBorderImageOutset() ||
-          !data->HasDefaultBorderImageRepeat() ||
-          data->ValueFor(eCSSProperty__moz_border_top_colors)->GetUnit() !=
-            eCSSUnit_None ||
-          data->ValueFor(eCSSProperty__moz_border_right_colors)->GetUnit() !=
-            eCSSUnit_None ||
-          data->ValueFor(eCSSProperty__moz_border_bottom_colors)->GetUnit() !=
-            eCSSUnit_None ||
-          data->ValueFor(eCSSProperty__moz_border_left_colors)->GetUnit() !=
-            eCSSUnit_None) {
+          !data->HasDefaultBorderImageRepeat()) {
         break;
       }
 
       const nsCSSPropertyID* subproptables[3] = {
         nsCSSProps::SubpropertyEntryFor(eCSSProperty_border_color),
         nsCSSProps::SubpropertyEntryFor(eCSSProperty_border_style),
         nsCSSProps::SubpropertyEntryFor(eCSSProperty_border_width)
       };
--- a/layout/style/nsCSSParser.cpp
+++ b/layout/style/nsCSSParser.cpp
@@ -13444,23 +13444,16 @@ CSSParserImpl::ParseBorderSide(const nsC
     // Parsing "border" shorthand; set all four sides to the same thing
     for (int32_t index = 0; index < 4; index++) {
       NS_ASSERTION(numProps == 3, "This code needs updating");
       AppendValue(kBorderWidthIDs[index], values[0]);
       AppendValue(kBorderStyleIDs[index], values[1]);
       AppendValue(kBorderColorIDs[index], values[2]);
     }
 
-    static const nsCSSPropertyID kBorderColorsProps[] = {
-      eCSSProperty__moz_border_top_colors,
-      eCSSProperty__moz_border_right_colors,
-      eCSSProperty__moz_border_bottom_colors,
-      eCSSProperty__moz_border_left_colors
-    };
-
     // Set the other properties that the border shorthand sets to their
     // initial values.
     nsCSSValue extraValue;
     switch (values[0].GetUnit()) {
     case eCSSUnit_Inherit:
     case eCSSUnit_Initial:
     case eCSSUnit_Unset:
       extraValue = values[0];
@@ -13471,19 +13464,16 @@ CSSParserImpl::ParseBorderSide(const nsC
       AppendValue(eCSSProperty_border_image_outset, extraValue);
       AppendValue(eCSSProperty_border_image_repeat, extraValue);
       break;
     default:
       extraValue.SetNoneValue();
       SetBorderImageInitialValues();
       break;
     }
-    NS_FOR_CSS_SIDES(side) {
-      AppendValue(kBorderColorsProps[side], extraValue);
-    }
   }
   else {
     // Just set our one side
     for (int32_t index = 0; index < numProps; index++) {
       AppendValue(aPropIDs[index], values[index]);
     }
   }
   return true;
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -788,28 +788,32 @@ CSS_PROP_BORDER(
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED |
         CSS_PROPERTY_HASHLESS_COLOR_QUIRK,
     "",
     VARIANT_HC,
     nullptr,
     offsetof(nsStyleBorder, mBorderBottomColor),
     eStyleAnimType_ComplexColor)
+#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
 CSS_PROP_BORDER(
     -moz-border-bottom-colors,
     _moz_border_bottom_colors,
     CSS_PROP_DOMPROP_PREFIXED(BorderBottomColors),
     CSS_PROPERTY_PARSE_FUNCTION |
+        CSS_PROPERTY_INTERNAL |
+        CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
     "",
     0,
     nullptr,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_Discrete)
+#endif
 CSS_PROP_BORDER(
     border-bottom-left-radius,
     border_bottom_left_radius,
     BorderBottomLeftRadius,
     CSS_PROPERTY_PARSE_FUNCTION |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_VALUE_NONNEGATIVE |
         CSS_PROPERTY_STORES_CALC,
@@ -1052,28 +1056,32 @@ CSS_PROP_BORDER(
         CSS_PROPERTY_HASHLESS_COLOR_QUIRK |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
     "",
     VARIANT_HC,
     nullptr,
     offsetof(nsStyleBorder, mBorderLeftColor),
     eStyleAnimType_ComplexColor)
+#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
 CSS_PROP_BORDER(
     -moz-border-left-colors,
     _moz_border_left_colors,
     CSS_PROP_DOMPROP_PREFIXED(BorderLeftColors),
     CSS_PROPERTY_PARSE_FUNCTION |
+        CSS_PROPERTY_INTERNAL |
+        CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
     "",
     0,
     nullptr,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_Discrete)
+#endif
 CSS_PROP_BORDER(
     border-left-style,
     border_left_style,
     BorderLeftStyle,
     CSS_PROPERTY_PARSE_VALUE |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER,
     "",
     VARIANT_HK,
@@ -1114,28 +1122,32 @@ CSS_PROP_BORDER(
         CSS_PROPERTY_HASHLESS_COLOR_QUIRK |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
     "",
     VARIANT_HC,
     nullptr,
     offsetof(nsStyleBorder, mBorderRightColor),
     eStyleAnimType_ComplexColor)
+#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
 CSS_PROP_BORDER(
     -moz-border-right-colors,
     _moz_border_right_colors,
     CSS_PROP_DOMPROP_PREFIXED(BorderRightColors),
     CSS_PROPERTY_PARSE_FUNCTION |
+        CSS_PROPERTY_INTERNAL |
+        CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
     "",
     0,
     nullptr,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_Discrete)
+#endif
 CSS_PROP_BORDER(
     border-right-style,
     border_right_style,
     BorderRightStyle,
     CSS_PROPERTY_PARSE_VALUE |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER,
     "",
     VARIANT_HK,
@@ -1188,28 +1200,32 @@ CSS_PROP_BORDER(
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED |
         CSS_PROPERTY_HASHLESS_COLOR_QUIRK,
     "",
     VARIANT_HC,
     nullptr,
     offsetof(nsStyleBorder, mBorderTopColor),
     eStyleAnimType_ComplexColor)
+#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
 CSS_PROP_BORDER(
     -moz-border-top-colors,
     _moz_border_top_colors,
     CSS_PROP_DOMPROP_PREFIXED(BorderTopColors),
     CSS_PROPERTY_PARSE_FUNCTION |
+        CSS_PROPERTY_INTERNAL |
+        CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_IGNORED_WHEN_COLORS_DISABLED,
     "",
     0,
     nullptr,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_Discrete)
+#endif
 CSS_PROP_BORDER(
     border-top-left-radius,
     border_top_left_radius,
     BorderTopLeftRadius,
     CSS_PROPERTY_PARSE_FUNCTION |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER |
         CSS_PROPERTY_VALUE_NONNEGATIVE |
         CSS_PROPERTY_STORES_CALC,
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -2680,20 +2680,16 @@ static const nsCSSPropertyID gBorderSubp
   eCSSProperty_border_top_style,
   eCSSProperty_border_right_style,
   eCSSProperty_border_bottom_style,
   eCSSProperty_border_left_style,
   eCSSProperty_border_top_color,
   eCSSProperty_border_right_color,
   eCSSProperty_border_bottom_color,
   eCSSProperty_border_left_color,
-  eCSSProperty__moz_border_top_colors,
-  eCSSProperty__moz_border_right_colors,
-  eCSSProperty__moz_border_bottom_colors,
-  eCSSProperty__moz_border_left_colors,
   eCSSProperty_border_image_source,
   eCSSProperty_border_image_slice,
   eCSSProperty_border_image_width,
   eCSSProperty_border_image_outset,
   eCSSProperty_border_image_repeat,
   eCSSProperty_UNKNOWN
 };
 
--- a/layout/style/test/ListCSSProperties.cpp
+++ b/layout/style/test/ListCSSProperties.cpp
@@ -114,17 +114,21 @@ const char *gInaccessibleProperties[] = 
     "-moz-math-variant",
     "-moz-math-display", // parsed by UA sheets only
     "-moz-top-layer", // parsed by UA sheets only
     "-moz-min-font-size-ratio", // parsed by UA sheets only
     "-moz-font-smoothing-background-color", // chrome-only internal properties
     "-moz-window-opacity", // chrome-only internal properties
     "-moz-window-transform", // chrome-only internal properties
     "-moz-window-transform-origin", // chrome-only internal properties
-    "-moz-window-shadow" // chrome-only internal properties
+    "-moz-window-shadow", // chrome-only internal properties
+    "-moz-border-top-colors", // chrome-only internal properties
+    "-moz-border-bottom-colors", // chrome-only internal properties
+    "-moz-border-left-colors", // chrome-only internal properties
+    "-moz-border-right-colors" // chrome-only internal properties
 };
 
 inline int
 is_inaccessible(const char* aPropName)
 {
     for (unsigned j = 0; j < MOZ_ARRAY_LENGTH(gInaccessibleProperties); ++j) {
         if (strcmp(aPropName, gInaccessibleProperties[j]) == 0)
             return 1;
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -1277,25 +1277,16 @@ var gCSSProperties = {
   "-moz-binding": {
     domProp: "MozBinding",
     inherited: false,
     type: CSS_TYPE_LONGHAND,
     initial_values: [ "none" ],
     other_values: [ "url(foo.xml)" ],
     invalid_values: []
   },
-  "-moz-border-bottom-colors": {
-    domProp: "MozBorderBottomColors",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    applies_to_first_letter: true,
-    initial_values: [ "none" ],
-    other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
-    invalid_values: [ "red none", "red inherit", "red, green", "none red", "inherit red", "ff00cc" ]
-  },
   "border-inline-end": {
     domProp: "borderInlineEnd",
     inherited: false,
     type: CSS_TYPE_TRUE_SHORTHAND,
     subproperties: [ "border-inline-end-color", "border-inline-end-style", "border-inline-end-width" ],
     initial_values: [ "none", "medium", "currentColor", "thin", "none medium currentcolor" ],
     other_values: [ "solid", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
     invalid_values: [ "5%", "5", "5 green none" ]
@@ -1430,25 +1421,16 @@ var gCSSProperties = {
     inherited: false,
     type: CSS_TYPE_LONGHAND,
     applies_to_first_letter: true,
     initial_values: [ "stretch", "stretch stretch" ],
     other_values: [ "round", "repeat", "stretch round", "repeat round", "stretch repeat", "round round", "repeat repeat",
                     "space", "stretch space", "repeat space", "round space", "space space" ],
     invalid_values: [ "none", "stretch stretch stretch", "0", "10", "0%", "0px" ]
   },
-  "-moz-border-left-colors": {
-    domProp: "MozBorderLeftColors",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    applies_to_first_letter: true,
-    initial_values: [ "none" ],
-    other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
-    invalid_values: [ "red none", "red inherit", "red, green", "none red", "inherit red", "ff00cc" ]
-  },
   "border-radius": {
     domProp: "borderRadius",
     inherited: false,
     type: CSS_TYPE_TRUE_SHORTHAND,
     prerequisites: { "width": "200px", "height": "100px", "display": "inline-block"},
     subproperties: [ "border-bottom-left-radius", "border-bottom-right-radius", "border-top-left-radius", "border-top-right-radius" ],
     initial_values: [ "0", "0px", "0px 0 0 0px", "calc(-2px)", "calc(0px) calc(0pt)", "calc(0px) calc(0pt) calc(0px) calc(0em)" ],
     other_values: [ "0%", "3%", "1px", "2em", "3em 2px", "2pt 3% 4em", "2px 2px 2px 2px", // circular
@@ -1546,25 +1528,16 @@ var gCSSProperties = {
       "calc(3*25px) 5px",
       "5px calc(3*25px)",
       "calc(20%) calc(3*25px)",
       "calc(25px*3)",
       "calc(3*25px + 50%)",
             ],
     invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit", "2", "2px 2", "2 2px", "2px calc(0px + rubbish)" ]
   },
-  "-moz-border-right-colors": {
-    domProp: "MozBorderRightColors",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    applies_to_first_letter: true,
-    initial_values: [ "none" ],
-    other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
-    invalid_values: [ "red none", "red inherit", "red, green", "none red", "inherit red", "ff00cc" ]
-  },
   "border-inline-start": {
     domProp: "borderInlineStart",
     inherited: false,
     type: CSS_TYPE_TRUE_SHORTHAND,
     subproperties: [ "border-inline-start-color", "border-inline-start-style", "border-inline-start-width" ],
     initial_values: [ "none", "medium", "currentColor", "thin", "none medium currentcolor" ],
     other_values: [ "solid", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
     invalid_values: [ "5%", "5", "5 green solid" ]
@@ -1608,25 +1581,16 @@ var gCSSProperties = {
       "calc(0px)",
       "calc(5em)",
       "calc(3*25px)",
       "calc(25px*3)",
       "calc(3*25px + 5em)",
     ],
     invalid_values: [ "5%", "5" ]
   },
-  "-moz-border-top-colors": {
-    domProp: "MozBorderTopColors",
-    inherited: false,
-    type: CSS_TYPE_LONGHAND,
-    applies_to_first_letter: true,
-    initial_values: [ "none" ],
-    other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
-    invalid_values: [ "red none", "red inherit", "red, green", "none red", "inherit red", "ff00cc" ]
-  },
   "-moz-box-align": {
     domProp: "MozBoxAlign",
     inherited: false,
     type: CSS_TYPE_LONGHAND,
     initial_values: [ "stretch" ],
     other_values: [ "start", "center", "baseline", "end" ],
     invalid_values: []
   },
@@ -3025,17 +2989,17 @@ var gCSSProperties = {
       "calc(-20%) calc(-50%)"
     ],
     invalid_values: [ "contain contain", "cover cover", "cover auto", "auto cover", "contain cover", "cover contain", "-5px 3px", "3px -5px", "auto -5px", "-5px auto", "5 3", "10px calc(10px + rubbish)" ]
   },
   "border": {
     domProp: "border",
     inherited: false,
     type: CSS_TYPE_TRUE_SHORTHAND,
-    subproperties: [ "border-bottom-color", "border-bottom-style", "border-bottom-width", "border-left-color", "border-left-style", "border-left-width", "border-right-color", "border-right-style", "border-right-width", "border-top-color", "border-top-style", "border-top-width", "-moz-border-top-colors", "-moz-border-right-colors", "-moz-border-bottom-colors", "-moz-border-left-colors", "border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat" ],
+    subproperties: [ "border-bottom-color", "border-bottom-style", "border-bottom-width", "border-left-color", "border-left-style", "border-left-width", "border-right-color", "border-right-style", "border-right-width", "border-top-color", "border-top-style", "border-top-width", "border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat" ],
     initial_values: [ "none", "medium", "currentColor", "thin", "none medium currentcolor", "calc(4px - 1px) none" ],
     other_values: [ "solid", "medium solid", "green solid", "10px solid", "thick solid", "calc(2px) solid blue" ],
     invalid_values: [ "5%", "medium solid ff00ff", "5 solid green" ]
   },
   "border-bottom": {
     domProp: "borderBottom",
     inherited: false,
     type: CSS_TYPE_TRUE_SHORTHAND,
@@ -8098,52 +8062,16 @@ if (IsCSSPropertyPrefEnabled("layout.css
     /* no quirks mode colors */
     "-moz-radial-gradient(10% bottom, ffffff, black) add no-repeat",
     /* no quirks mode lengths */
     "-moz-linear-gradient(10 10px -45deg, red, blue) repeat",
     "-moz-linear-gradient(10px 10 -45deg, red, blue) repeat",
   );
 }
 
-if (IsCSSPropertyPrefEnabled("layout.css.unset-value.enabled")) {
-  gCSSProperties["animation"].invalid_values.push("2s unset");
-  gCSSProperties["animation-direction"].invalid_values.push("normal, unset", "unset, normal");
-  gCSSProperties["animation-name"].invalid_values.push("bounce, unset", "unset, bounce");
-  gCSSProperties["-moz-border-bottom-colors"].invalid_values.push("red unset", "unset red");
-  gCSSProperties["-moz-border-left-colors"].invalid_values.push("red unset", "unset red");
-  gCSSProperties["border-radius"].invalid_values.push("unset 2px", "unset / 2px", "2px unset", "2px / unset");
-  gCSSProperties["border-bottom-left-radius"].invalid_values.push("unset 2px", "2px unset");
-  gCSSProperties["border-bottom-right-radius"].invalid_values.push("unset 2px", "2px unset");
-  gCSSProperties["border-top-left-radius"].invalid_values.push("unset 2px", "2px unset");
-  gCSSProperties["border-top-right-radius"].invalid_values.push("unset 2px", "2px unset");
-  gCSSProperties["-moz-border-right-colors"].invalid_values.push("red unset", "unset red");
-  gCSSProperties["-moz-border-top-colors"].invalid_values.push("red unset", "unset red");
-  gCSSProperties["-moz-outline-radius"].invalid_values.push("unset 2px", "unset / 2px", "2px unset", "2px / unset");
-  gCSSProperties["-moz-outline-radius-bottomleft"].invalid_values.push("unset 2px", "2px unset");
-  gCSSProperties["-moz-outline-radius-bottomright"].invalid_values.push("unset 2px", "2px unset");
-  gCSSProperties["-moz-outline-radius-topleft"].invalid_values.push("unset 2px", "2px unset");
-  gCSSProperties["-moz-outline-radius-topright"].invalid_values.push("unset 2px", "2px unset");
-  gCSSProperties["background-image"].invalid_values.push("linear-gradient(unset, 10px 10px, from(blue))", "linear-gradient(unset, 10px 10px, blue 0)", "repeating-linear-gradient(unset, 10px 10px, blue 0)");
-  gCSSProperties["box-shadow"].invalid_values.push("unset, 2px 2px", "2px 2px, unset", "inset unset");
-  gCSSProperties["text-overflow"].invalid_values.push('"hello" unset', 'unset "hello"', 'clip unset', 'unset clip', 'unset inherit', 'unset none', 'initial unset');
-  gCSSProperties["text-shadow"].invalid_values.push("unset, 2px 2px", "2px 2px, unset");
-  gCSSProperties["transition"].invalid_values.push("2s unset");
-  gCSSProperties["transition-property"].invalid_values.push("unset, color", "color, unset");
-  if (IsCSSPropertyPrefEnabled("layout.css.filters.enabled")) {
-    gCSSProperties["filter"].invalid_values.push("drop-shadow(unset, 2px 2px)", "drop-shadow(2px 2px, unset)");
-  }
-  if (IsCSSPropertyPrefEnabled("layout.css.prefixes.gradients")) {
-    gCSSProperties["background-image"].invalid_values.push(
-      "-moz-linear-gradient(unset, 10px 10px, from(blue))",
-      "-moz-linear-gradient(unset, 10px 10px, blue 0)",
-      "-moz-repeating-linear-gradient(unset, 10px 10px, blue 0)",
-    );
-  }
-}
-
 if (IsCSSPropertyPrefEnabled("layout.css.text-align-unsafe-value.enabled")) {
   gCSSProperties["text-align"].other_values.push("true left");
 } else {
   gCSSProperties["text-align"].invalid_values.push("true left");
 }
 
 if (IsCSSPropertyPrefEnabled("layout.css.float-logical-values.enabled")) {
   gCSSProperties["float"].other_values.push("inline-start");
@@ -8327,9 +8255,89 @@ if (false) {
   gCSSProperties["-moz-font-smoothing-background-color"] = {
     // domProp: "MozFontSmoothingBackgroundColor",
     inherited: true,
     type: CSS_TYPE_LONGHAND,
     initial_values: [ "transparent" ],
     other_values: [ "green", "#fc3" ],
     invalid_values: [ "000000", "ff00ff" ]
   };
+
+  gCSSProperties["-moz-border-bottom-colors"] = {
+    domProp: "MozBorderBottomColors",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    applies_to_first_letter: true,
+    initial_values: [ "none" ],
+    other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
+    invalid_values: [ "red none", "red inherit", "red, green", "none red", "inherit red", "ff00cc" ]
+  };
+
+  gCSSProperties["-moz-border-left-colors"] = {
+    domProp: "MozBorderLeftColors",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    applies_to_first_letter: true,
+    initial_values: [ "none" ],
+    other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
+    invalid_values: [ "red none", "red inherit", "red, green", "none red", "inherit red", "ff00cc" ]
+  };
+
+  gCSSProperties["-moz-border-right-colors"] = {
+    domProp: "MozBorderRightColors",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    applies_to_first_letter: true,
+    initial_values: [ "none" ],
+    other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
+    invalid_values: [ "red none", "red inherit", "red, green", "none red", "inherit red", "ff00cc" ]
+  };
+
+  gCSSProperties["-moz-border-top-colors"] = {
+    domProp: "MozBorderTopColors",
+    inherited: false,
+    type: CSS_TYPE_LONGHAND,
+    applies_to_first_letter: true,
+    initial_values: [ "none" ],
+    other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
+    invalid_values: [ "red none", "red inherit", "red, green", "none red", "inherit red", "ff00cc" ]
+  };
 }
+
+if (IsCSSPropertyPrefEnabled("layout.css.unset-value.enabled")) {
+  gCSSProperties["animation"].invalid_values.push("2s unset");
+  gCSSProperties["animation-direction"].invalid_values.push("normal, unset", "unset, normal");
+  gCSSProperties["animation-name"].invalid_values.push("bounce, unset", "unset, bounce");
+  if (gCSSProperties["-moz-border-bottom-colors"])
+    gCSSProperties["-moz-border-bottom-colors"].invalid_values.push("red unset", "unset red");
+  if (gCSSProperties["-moz-border-left-colors"])
+    gCSSProperties["-moz-border-left-colors"].invalid_values.push("red unset", "unset red");
+  if (gCSSProperties["-moz-border-right-colors"])
+    gCSSProperties["-moz-border-right-colors"].invalid_values.push("red unset", "unset red");
+  if (gCSSProperties["-moz-border-top-colors"])
+    gCSSProperties["-moz-border-top-colors"].invalid_values.push("red unset", "unset red");
+  gCSSProperties["border-radius"].invalid_values.push("unset 2px", "unset / 2px", "2px unset", "2px / unset");
+  gCSSProperties["border-bottom-left-radius"].invalid_values.push("unset 2px", "2px unset");
+  gCSSProperties["border-bottom-right-radius"].invalid_values.push("unset 2px", "2px unset");
+  gCSSProperties["border-top-left-radius"].invalid_values.push("unset 2px", "2px unset");
+  gCSSProperties["border-top-right-radius"].invalid_values.push("unset 2px", "2px unset");
+  gCSSProperties["-moz-outline-radius"].invalid_values.push("unset 2px", "unset / 2px", "2px unset", "2px / unset");
+  gCSSProperties["-moz-outline-radius-bottomleft"].invalid_values.push("unset 2px", "2px unset");
+  gCSSProperties["-moz-outline-radius-bottomright"].invalid_values.push("unset 2px", "2px unset");
+  gCSSProperties["-moz-outline-radius-topleft"].invalid_values.push("unset 2px", "2px unset");
+  gCSSProperties["-moz-outline-radius-topright"].invalid_values.push("unset 2px", "2px unset");
+  gCSSProperties["background-image"].invalid_values.push("linear-gradient(unset, 10px 10px, from(blue))", "linear-gradient(unset, 10px 10px, blue 0)", "repeating-linear-gradient(unset, 10px 10px, blue 0)");
+  gCSSProperties["box-shadow"].invalid_values.push("unset, 2px 2px", "2px 2px, unset", "inset unset");
+  gCSSProperties["text-overflow"].invalid_values.push('"hello" unset', 'unset "hello"', 'clip unset', 'unset clip', 'unset inherit', 'unset none', 'initial unset');
+  gCSSProperties["text-shadow"].invalid_values.push("unset, 2px 2px", "2px 2px, unset");
+  gCSSProperties["transition"].invalid_values.push("2s unset");
+  gCSSProperties["transition-property"].invalid_values.push("unset, color", "color, unset");
+  if (IsCSSPropertyPrefEnabled("layout.css.filters.enabled")) {
+    gCSSProperties["filter"].invalid_values.push("drop-shadow(unset, 2px 2px)", "drop-shadow(2px 2px, unset)");
+  }
+  if (IsCSSPropertyPrefEnabled("layout.css.prefixes.gradients")) {
+    gCSSProperties["background-image"].invalid_values.push(
+      "-moz-linear-gradient(unset, 10px 10px, from(blue))",
+      "-moz-linear-gradient(unset, 10px 10px, blue 0)",
+      "-moz-repeating-linear-gradient(unset, 10px 10px, blue 0)",
+    );
+  }
+}
--- a/layout/style/test/test_dont_use_document_colors.html
+++ b/layout/style/test/test_dont_use_document_colors.html
@@ -8,20 +8,16 @@
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
   <style type="text/css">
 
   #one, #three { background: blue; color: yellow; border: thin solid red; -moz-column-rule: 2px solid green; text-shadow: 2px 2px green; box-shadow: 3px 7px blue; }
   #two { background: transparent; border: thin solid; }
   #five, #six {border: thick solid red; border-inline-start-color:green; border-inline-end-color:blue}
   #seven {
     border: 3px solid;
-    -moz-border-top-colors: blue aqua fuchsia;
-    -moz-border-right-colors: aqua blue fuchsia;
-    -moz-border-bottom-colors: blue fuchsia aqua;
-    -moz-border-left-colors: fuchsia blue blue;
   }
 
   /* XXX also test rgba() */
 
   </style>
 </head>
 <body>
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=58048">Mozilla Bug 58048</a>
@@ -102,24 +98,16 @@ function part1()
     isnot(cs5.borderRightColor, cs2.borderRightColor,
           "border-inline-end-color applies");
     isnot(cs5.borderLeftColor, cs2.borderLeftColor,
           "border-inline-start-color applies");    
     isnot(cs6.borderRightColor, cs2.borderRightColor,
           "border-inline-start-color applies");
     isnot(cs6.borderLeftColor, cs2.borderLeftColor,
           "border-inline-end-color applies");
-    isnot(cs7.MozBorderTopColors, cs2.MozBorderTopColors,
-          "-moz-border-top-colors applies");
-    isnot(cs7.MozBorderRightColors, cs2.MozBorderRightColors,
-          "-moz-border-right-colors applies");
-    isnot(cs7.MozBorderBottomColors, cs2.MozBorderBottomColors,
-          "-moz-border-bottom-colors applies");
-    isnot(cs7.MozBorderLeftColors, cs2.MozBorderLeftColors,
-          "-moz-border-left-colors applies");
     is(cs1.color, cs3.color, "color applies");
     is(cs1.backgroundColor, cs3.backgroundColor, "background-color applies");
     isnot(cs3.backgroundColor, cs4.backgroundColor, "background-color applies");
     isnot(cs3.color, cs4.color, "color applies");
     isnot(cs3.borderTopColor, cs4.borderTopColor, "border-top-color applies");
     isnot(cs3.borderRightColor, cs4.borderRightColor,
           "border-right-color applies");
     isnot(cs3.borderLeftColor, cs4.borderLeftColor,
@@ -149,24 +137,16 @@ function part2()
     is(cs5.borderRightColor, cs2.borderRightColor,
        "border-inline-end-color is blocked");
     is(cs5.borderLeftColor, cs2.borderLeftColor,
        "border-inline-start-color is blocked");
     is(cs6.borderRightColor, cs2.borderRightColor,
        "border-inline-start-color is blocked");
     is(cs6.borderLeftColor, cs2.borderLeftColor,
        "border-inline-end-color is blocked");
-    is(cs7.MozBorderTopColors, cs2.MozBorderTopColors,
-       "-moz-border-top-colors is blocked");
-    is(cs7.MozBorderRightColors, cs2.MozBorderRightColors,
-       "-moz-border-right-colors is blocked");
-    is(cs7.MozBorderBottomColors, cs2.MozBorderBottomColors,
-       "-moz-border-bottom-colors is blocked");
-    is(cs7.MozBorderLeftColors, cs2.MozBorderLeftColors,
-       "-moz-border-left-colors is blocked");
     is(cs1.borderBottomColor, cs2.borderBottomColor,
        "border-bottom-color is blocked");
     is(cs1.MozColumnRuleColor, cs2.MozColumnRuleColor,
        "-moz-column-rule-color is blocked");
     is(cs1.textShadow, cs2.textShadow,
        "text-shadow is blocked");
     is(cs1.boxShadow, cs2.boxShadow,
        "box-shadow is blocked");
--- a/layout/style/test/test_shorthand_property_getters.html
+++ b/layout/style/test/test_shorthand_property_getters.html
@@ -16,17 +16,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 </div>
 <pre id="test">
 <script type="application/javascript">
 
 /** Test for Bug 376075 **/
 
 var e = document.getElementById("display");
 
-var borderExtras = ";-moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none";
+var borderExtras = "; border-image: none";
 
 // Test that we only serialize the 'border' shorthand when appropriate.
 e.setAttribute("style", "border-left: medium solid blue; border-right: medium solid blue; border-top: medium blue solid; border-bottom: blue medium solid" + borderExtras);
 isnot(e.style.border, "", "should be able to serialize border");
 e.setAttribute("style", "border-left: medium solid blue; border-right: medium solid blue; border-top: medium blue solid; border-bottom: green medium solid" + borderExtras);
 is(e.style.border, "", "should not be able to serialize border");
 e.setAttribute("style", "border-width: 3px 3px 3px 3px; border-style: solid; border-color: green" + borderExtras);
 isnot(e.style.border, "", "should be able to serialize border");
@@ -228,34 +228,26 @@ is(e.style.animation, "", "should not ha
 e.setAttribute("style", "animation-name: bounce, roll; animation-duration: 1s, 200ms; animation-timing-function: ease-in, linear; animation-delay: 0s, 1s; animation-direction: normal, reverse; animation-fill-mode: forwards, backwards, both; animation-iteration-count: infinite, 2; animation-play-state: paused, running;");
 is(e.style.animation, "", "should not have animation shorthand (lists different lengths)");
 e.setAttribute("style", "animation-name: bounce, roll; animation-duration: 1s, 200ms; animation-timing-function: ease-in, linear; animation-delay: 0s, 1s; animation-direction: normal, reverse; animation-fill-mode: forwards, backwards; animation-iteration-count: infinite, 2, 1; animation-play-state: paused, running;");
 is(e.style.animation, "", "should not have animation shorthand (lists different lengths)");
 e.setAttribute("style", "animation-name: bounce, roll; animation-duration: 1s, 200ms; animation-timing-function: ease-in, linear; animation-delay: 0s, 1s; animation-direction: normal, reverse; animation-fill-mode: forwards, backwards; animation-iteration-count: infinite, 2; animation-play-state: paused, running, running;");
 is(e.style.animation, "", "should not have animation shorthand (lists different lengths)");
 
 // Check that the 'border' shorthand resets 'border-image' and
-// '-moz-border-*-colors', but that other 'border-*' shorthands don't
+// but that other 'border-*' shorthands don't
 // (bug 482692).
 e.setAttribute("style", 'border-image: url("foo.png") 5 5 5 5 / 5 5 5 5 / 5 5 5 5 repeat repeat; border-left: medium solid green');
 is(e.style.cssText,
    'border-image: url("foo.png") 5 / 5 / 5 repeat repeat; border-left: medium solid green;',
    "border-left does NOT reset border-image");
 e.setAttribute("style", 'border-image: url("foo.png") 5 5 5 5; border: medium solid green');
 is(e.style.cssText,
    'border: medium solid green;',
    "border DOES reset border-image");
-e.setAttribute("style", '-moz-border-left-colors: fuchsia blue; border-left: medium solid green');
-is(e.style.cssText,
-   '-moz-border-left-colors: fuchsia blue; border-left: medium solid green;',
-   "border-left does NOT reset -moz-border-left-colors");
-e.setAttribute("style", '-moz-border-left-colors: fuchsia blue; border: medium solid green');
-is(e.style.cssText,
-   'border: medium solid green;',
-   "border DOES reset -moz-border-left-colors");
 
 // Test that the color goes at the beginning of the last item of the
 // background shorthand.
 // FIXME: Really the "repeat scroll 0% 0%" shouldn't be there.
 e.setAttribute("style", "background: url(foo.png) blue");
 is(e.style.cssText,
    "background: blue url(\"foo.png\") repeat scroll 0% 0%;",
    "color should be at start of single-item background");
--- a/layout/tools/reftest/jar.mn
+++ b/layout/tools/reftest/jar.mn
@@ -1,11 +1,12 @@
 reftest.jar:
 % content reftest %content/ contentaccessible=yes
   content/globals.jsm (globals.jsm)
   content/reftest-content.js (reftest-content.js)
   content/AsyncSpellCheckTestHelper.jsm (../../../editor/AsyncSpellCheckTestHelper.jsm)
   content/httpd.jsm (../../../netwerk/test/httpserver/httpd.js)
   content/StructuredLog.jsm (../../../testing/modules/StructuredLog.jsm)
   content/input.css (../../../editor/reftests/xul/input.css)
+  content/progress.css (../../../layout/reftests/forms/progress/style.css)
 *  content/manifest.jsm (manifest.jsm)
 *  content/reftest.jsm (reftest.jsm)
   content/reftest.xul (reftest.xul)
--- a/widget/reftests/progressbar-fallback-default-style-ref.html
+++ b/widget/reftests/progressbar-fallback-default-style-ref.html
@@ -1,45 +1,12 @@
 <!DOCTYPE html>
 <html>
+  <link rel='stylesheet' href='chrome://reftest/content/progress.css'>
   <style>
-    div.progress-element {
-      /**
-       * The purpose of this test is to not show the native style.
-       * -moz-appearance: progressbar;
-       */
-      display: inline-block;
-      height: 1em;
-      width: 10em;
-      vertical-align: -0.2em;
-
-      /* Default style in case of there is -moz-appearance: none; */
-      border: 2px solid;
-      -moz-border-top-colors: ThreeDShadow #e6e6e6;
-      -moz-border-right-colors: ThreeDHighlight #e6e6e6;
-      -moz-border-bottom-colors: ThreeDHighlight #e6e6e6;
-      -moz-border-left-colors: ThreeDShadow #e6e6e6;
-      background-color: #e6e6e6;
-    }
-
-    div.progress-bar {
-      /**
-       * The purpose of this test is to not show the native style.
-       * -moz-appearance: progresschunk;
-       */
-
-      height: 100%;
-      width: 100%;
-
-      box-sizing: border-box;
-
-      /* Default style in case of there is -moz-appearance: none; */
-      background-color: #0064b4;
-    }
-
     div.progress-element { padding: 5px; }
     body > div:nth-child(1)  { -moz-appearance: none; }
     body > div:nth-child(2) > .progress-bar { -moz-appearance: none; }
     body > div:nth-child(3)  { background-color: red; }
     body > div:nth-child(4) > .progress-bar { background-color: red; }
     body > div:nth-child(5)  { border: 2px solid red; }
     body > div:nth-child(6) > .progress-bar { border: 5px solid red; }
   </style>