Bug 1202940 part 2 - Remove layout.css.ruby.enabled pref. r=dbaron
authorXidorn Quan <quanxunzhen@gmail.com>
Tue, 01 Dec 2015 09:39:37 +1100
changeset 308911 17a33fbe0c031193d1ed1ab7b07959a21ac18ce1
parent 308910 facc049f03419f47f32cec8f7c45a5336dc332b6
child 308912 8674e97c395307e1e878acab383632cbaef62ac2
push id5513
push userraliiev@mozilla.com
push dateMon, 25 Jan 2016 13:55:34 +0000
treeherdermozilla-beta@5ee97dd05b5c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdbaron
bugs1202940
milestone45.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1202940 part 2 - Remove layout.css.ruby.enabled pref. r=dbaron
layout/base/nsLayoutUtils.cpp
layout/reftests/css-ruby/reftest.list
layout/reftests/w3c-css/submitted/text-decor-3/reftest.list
layout/style/html.css
layout/style/nsCSSPropList.h
layout/style/nsCSSProps.cpp
layout/style/test/property_database.js
layout/style/ua.css
modules/libpref/init/all.js
testing/profiles/prefs_general.js
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -127,17 +127,16 @@ using namespace mozilla;
 using namespace mozilla::dom;
 using namespace mozilla::image;
 using namespace mozilla::layers;
 using namespace mozilla::layout;
 using namespace mozilla::gfx;
 
 #define GRID_ENABLED_PREF_NAME "layout.css.grid.enabled"
 #define GRID_TEMPLATE_SUBGRID_ENABLED_PREF_NAME "layout.css.grid-template-subgrid-value.enabled"
-#define RUBY_ENABLED_PREF_NAME "layout.css.ruby.enabled"
 #define STICKY_ENABLED_PREF_NAME "layout.css.sticky.enabled"
 #define DISPLAY_CONTENTS_ENABLED_PREF_NAME "layout.css.display-contents.enabled"
 #define TEXT_ALIGN_TRUE_ENABLED_PREF_NAME "layout.css.text-align-true-value.enabled"
 #define FLOAT_LOGICAL_VALUES_ENABLED_PREF_NAME "layout.css.float-logical-values.enabled"
 
 #ifdef DEBUG
 // TODO: remove, see bug 598468.
 bool nsLayoutUtils::gPreventAssertInCompareTreePosition = false;
@@ -209,88 +208,16 @@ GridEnabledPrefChangeCallback(const char
       isGridEnabled ? eCSSKeyword_grid : eCSSKeyword_UNKNOWN;
   }
   if (sIndexOfInlineGridInDisplayTable >= 0) {
     nsCSSProps::kDisplayKTable[sIndexOfInlineGridInDisplayTable].mKeyword =
       isGridEnabled ? eCSSKeyword_inline_grid : eCSSKeyword_UNKNOWN;
   }
 }
 
-static void
-RubyEnabledPrefChangeCallback(const char* aPrefName, void* aClosure)
-{
-  MOZ_ASSERT(strncmp(aPrefName, RUBY_ENABLED_PREF_NAME,
-                     ArrayLength(RUBY_ENABLED_PREF_NAME)) == 0,
-             "We only registered this callback for a single pref, so it "
-             "should only be called for that pref");
-
-  static int32_t sIndexOfRubyInDisplayTable;
-  static int32_t sIndexOfRubyBaseInDisplayTable;
-  static int32_t sIndexOfRubyBaseContainerInDisplayTable;
-  static int32_t sIndexOfRubyTextInDisplayTable;
-  static int32_t sIndexOfRubyTextContainerInDisplayTable;
-  static bool sAreRubyKeywordIndicesInitialized; // initialized to false
-
-  bool isRubyEnabled =
-    Preferences::GetBool(RUBY_ENABLED_PREF_NAME, false);
-  if (!sAreRubyKeywordIndicesInitialized) {
-    // First run: find the position of the ruby display values in
-    // kDisplayKTable.
-    sIndexOfRubyInDisplayTable =
-      nsCSSProps::FindIndexOfKeyword(eCSSKeyword_ruby,
-                                     nsCSSProps::kDisplayKTable);
-    MOZ_ASSERT(sIndexOfRubyInDisplayTable >= 0,
-               "Couldn't find ruby in kDisplayKTable");
-    sIndexOfRubyBaseInDisplayTable =
-      nsCSSProps::FindIndexOfKeyword(eCSSKeyword_ruby_base,
-                                     nsCSSProps::kDisplayKTable);
-    MOZ_ASSERT(sIndexOfRubyBaseInDisplayTable >= 0,
-               "Couldn't find ruby-base in kDisplayKTable");
-    sIndexOfRubyBaseContainerInDisplayTable =
-      nsCSSProps::FindIndexOfKeyword(eCSSKeyword_ruby_base_container,
-                                     nsCSSProps::kDisplayKTable);
-    MOZ_ASSERT(sIndexOfRubyBaseContainerInDisplayTable >= 0,
-               "Couldn't find ruby-base-container in kDisplayKTable");
-    sIndexOfRubyTextInDisplayTable =
-      nsCSSProps::FindIndexOfKeyword(eCSSKeyword_ruby_text,
-                                     nsCSSProps::kDisplayKTable);
-    MOZ_ASSERT(sIndexOfRubyTextInDisplayTable >= 0,
-               "Couldn't find ruby-text in kDisplayKTable");
-    sIndexOfRubyTextContainerInDisplayTable =
-      nsCSSProps::FindIndexOfKeyword(eCSSKeyword_ruby_text_container,
-                                     nsCSSProps::kDisplayKTable);
-    MOZ_ASSERT(sIndexOfRubyTextContainerInDisplayTable >= 0,
-               "Couldn't find ruby-text-container in kDisplayKTable");
-    sAreRubyKeywordIndicesInitialized = true;
-  }
-
-  // OK -- now, stomp on or restore the "ruby" entries in kDisplayKTable,
-  // depending on whether the ruby pref is enabled vs. disabled.
-  if (sIndexOfRubyInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyInDisplayTable].mKeyword =
-      isRubyEnabled ? eCSSKeyword_ruby : eCSSKeyword_UNKNOWN;
-  }
-  if (sIndexOfRubyBaseInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyBaseInDisplayTable].mKeyword =
-      isRubyEnabled ? eCSSKeyword_ruby_base : eCSSKeyword_UNKNOWN;
-  }
-  if (sIndexOfRubyBaseContainerInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyBaseContainerInDisplayTable].mKeyword =
-      isRubyEnabled ? eCSSKeyword_ruby_base_container : eCSSKeyword_UNKNOWN;
-  }
-  if (sIndexOfRubyTextInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyTextInDisplayTable].mKeyword =
-      isRubyEnabled ? eCSSKeyword_ruby_text : eCSSKeyword_UNKNOWN;
-  }
-  if (sIndexOfRubyTextContainerInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyTextContainerInDisplayTable].mKeyword =
-      isRubyEnabled ? eCSSKeyword_ruby_text_container : eCSSKeyword_UNKNOWN;
-  }
-}
-
 // When the pref "layout.css.sticky.enabled" changes, this function is invoked
 // to let us update kPositionKTable, to selectively disable or restore the
 // entry for "sticky" in that table.
 static void
 StickyEnabledPrefChangeCallback(const char* aPrefName, void* aClosure)
 {
   MOZ_ASSERT(strncmp(aPrefName, STICKY_ENABLED_PREF_NAME,
                      ArrayLength(STICKY_ENABLED_PREF_NAME)) == 0,
@@ -7422,19 +7349,16 @@ nsLayoutUtils::Initialize()
   Preferences::AddBoolVarCache(&sInterruptibleReflowEnabled,
                                "layout.interruptible-reflow.enabled");
   Preferences::AddBoolVarCache(&sSVGTransformBoxEnabled,
                                "svg.transform-box.enabled");
 
   Preferences::RegisterCallback(GridEnabledPrefChangeCallback,
                                 GRID_ENABLED_PREF_NAME);
   GridEnabledPrefChangeCallback(GRID_ENABLED_PREF_NAME, nullptr);
-  Preferences::RegisterCallback(RubyEnabledPrefChangeCallback,
-                                RUBY_ENABLED_PREF_NAME);
-  RubyEnabledPrefChangeCallback(RUBY_ENABLED_PREF_NAME, nullptr);
   Preferences::RegisterCallback(StickyEnabledPrefChangeCallback,
                                 STICKY_ENABLED_PREF_NAME);
   StickyEnabledPrefChangeCallback(STICKY_ENABLED_PREF_NAME, nullptr);
   Preferences::RegisterCallback(TextAlignTrueEnabledPrefChangeCallback,
                                 TEXT_ALIGN_TRUE_ENABLED_PREF_NAME);
   Preferences::RegisterCallback(DisplayContentsEnabledPrefChangeCallback,
                                 DISPLAY_CONTENTS_ENABLED_PREF_NAME);
   DisplayContentsEnabledPrefChangeCallback(DISPLAY_CONTENTS_ENABLED_PREF_NAME,
@@ -7455,18 +7379,16 @@ nsLayoutUtils::Shutdown()
 {
   if (sContentMap) {
     delete sContentMap;
     sContentMap = nullptr;
   }
 
   Preferences::UnregisterCallback(GridEnabledPrefChangeCallback,
                                   GRID_ENABLED_PREF_NAME);
-  Preferences::UnregisterCallback(RubyEnabledPrefChangeCallback,
-                                  RUBY_ENABLED_PREF_NAME);
   Preferences::UnregisterCallback(StickyEnabledPrefChangeCallback,
                                   STICKY_ENABLED_PREF_NAME);
 
   nsComputedDOMStyle::UnregisterPrefChangeCallbacks();
 }
 
 /* static */
 void
--- a/layout/reftests/css-ruby/reftest.list
+++ b/layout/reftests/css-ruby/reftest.list
@@ -1,10 +1,8 @@
-default-preferences pref(layout.css.ruby.enabled,true)
-
 == bidi-1.html bidi-1-ref.html
 == bidi-2.html bidi-2-ref.html
 == box-generation-1.html box-generation-1-ref.html
 == box-generation-2.html box-generation-2-ref.html
 == box-generation-3.html box-generation-3-ref.html
 == box-generation-4.html box-generation-4-ref.html
 == box-generation-5.html box-generation-5-ref.html
 == box-properties-1.html box-properties-1-ref.html
--- a/layout/reftests/w3c-css/submitted/text-decor-3/reftest.list
+++ b/layout/reftests/w3c-css/submitted/text-decor-3/reftest.list
@@ -1,9 +1,8 @@
-default-preferences pref(layout.css.ruby.enabled,true)
 default-preferences pref(layout.css.vertical-text.enabled,true)
 default-preferences pref(layout.css.text-emphasis.enabled,true)
 
 == ruby-text-decoration-01.html ruby-text-decoration-01-ref.html
 == text-decoration-propagation-01.html text-decoration-propagation-01-ref.html
 
 # text-emphasis-style
 == text-emphasis-style-property-001.html text-emphasis-style-property-001-ref.html
--- a/layout/style/html.css
+++ b/layout/style/html.css
@@ -785,56 +785,54 @@ marquee[direction="up"], marquee[directi
 @media print {
 
   marquee { -moz-binding: none; }
 
 }
 
 /* Ruby */
 
-@supports (display: ruby) {
-  ruby {
-    display: ruby;
-  }
-  rb {
-    display: ruby-base;
-    white-space: nowrap;
-  }
-  rp {
-    display: none;
-  }
-  rt {
-    display: ruby-text;
-  }
-  rtc {
-    display: ruby-text-container;
-  }
-  rtc, rt {
-    white-space: nowrap;
-    font-size: 50%;
-    -moz-min-font-size-ratio: 50%;
-    line-height: 1;
+ruby {
+  display: ruby;
+}
+rb {
+  display: ruby-base;
+  white-space: nowrap;
+}
+rp {
+  display: none;
+}
+rt {
+  display: ruby-text;
+}
+rtc {
+  display: ruby-text-container;
+}
+rtc, rt {
+  white-space: nowrap;
+  font-size: 50%;
+  -moz-min-font-size-ratio: 50%;
+  line-height: 1;
 %ifndef XP_WIN
-    /* The widely-used Windows font Meiryo doesn't work fine with this
-     * setting, so disable this on Windows. We should re-enable it once
-     * Microsoft fixes this issue. See bug 1164279. */
-    font-variant-east-asian: ruby;
+  /* The widely-used Windows font Meiryo doesn't work fine with this
+   * setting, so disable this on Windows. We should re-enable it once
+   * Microsoft fixes this issue. See bug 1164279. */
+  font-variant-east-asian: ruby;
 %endif
-  }
-  @supports (text-emphasis: none) {
-    rtc, rt {
-      text-emphasis: none;
-    }
-  }
-  rtc:lang(zh), rt:lang(zh) {
-    ruby-align: center;
-  }
-  rtc:lang(zh-TW), rt:lang(zh-TW) {
-    font-size: 30%; /* bopomofo */
-    -moz-min-font-size-ratio: 30%;
-  }
-  rtc > rt {
-    font-size: inherit;
-  }
-  ruby, rb, rt, rtc {
-    unicode-bidi: -moz-isolate;
+}
+@supports (text-emphasis: none) {
+  rtc, rt {
+    text-emphasis: none;
   }
 }
+rtc:lang(zh), rt:lang(zh) {
+  ruby-align: center;
+}
+rtc:lang(zh-TW), rt:lang(zh-TW) {
+  font-size: 30%; /* bopomofo */
+  -moz-min-font-size-ratio: 30%;
+}
+rtc > rt {
+  font-size: inherit;
+}
+ruby, rb, rt, rtc {
+  unicode-bidi: -moz-isolate;
+}
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -3071,27 +3071,27 @@ CSS_PROP_POSITION(
     nullptr,
     offsetof(nsStylePosition, mOffset),
     eStyleAnimType_Sides_Right)
 CSS_PROP_TEXT(
     ruby-align,
     ruby_align,
     RubyAlign,
     CSS_PROPERTY_PARSE_VALUE,
-    "layout.css.ruby.enabled",
+    "",
     VARIANT_HK,
     kRubyAlignKTable,
     offsetof(nsStyleText, mRubyAlign),
     eStyleAnimType_EnumU8)
 CSS_PROP_TEXT(
     ruby-position,
     ruby_position,
     RubyPosition,
     CSS_PROPERTY_PARSE_VALUE,
-    "layout.css.ruby.enabled",
+    "",
     VARIANT_HK,
     kRubyPositionKTable,
     offsetof(nsStyleText, mRubyPosition),
     eStyleAnimType_EnumU8)
 CSS_PROP_DISPLAY(
     scroll-behavior,
     scroll_behavior,
     ScrollBehavior,
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -1219,25 +1219,24 @@ KTableEntry nsCSSProps::kDisplayKTable[]
   { eCSSKeyword__moz_stack,          NS_STYLE_DISPLAY_STACK },
   { eCSSKeyword__moz_inline_stack,   NS_STYLE_DISPLAY_INLINE_STACK },
   { eCSSKeyword__moz_deck,           NS_STYLE_DISPLAY_DECK },
   { eCSSKeyword__moz_popup,          NS_STYLE_DISPLAY_POPUP },
   { eCSSKeyword__moz_groupbox,       NS_STYLE_DISPLAY_GROUPBOX },
 #endif
   { eCSSKeyword_flex,                NS_STYLE_DISPLAY_FLEX },
   { eCSSKeyword_inline_flex,         NS_STYLE_DISPLAY_INLINE_FLEX },
-  // The next two entries are controlled by the layout.css.grid.enabled pref.
-  { eCSSKeyword_grid,                NS_STYLE_DISPLAY_GRID },
-  { eCSSKeyword_inline_grid,         NS_STYLE_DISPLAY_INLINE_GRID },
-  // The next five entries are controlled by the layout.css.ruby.enabled pref.
   { eCSSKeyword_ruby,                NS_STYLE_DISPLAY_RUBY },
   { eCSSKeyword_ruby_base,           NS_STYLE_DISPLAY_RUBY_BASE },
   { eCSSKeyword_ruby_base_container, NS_STYLE_DISPLAY_RUBY_BASE_CONTAINER },
   { eCSSKeyword_ruby_text,           NS_STYLE_DISPLAY_RUBY_TEXT },
   { eCSSKeyword_ruby_text_container, NS_STYLE_DISPLAY_RUBY_TEXT_CONTAINER },
+  // The next two entries are controlled by the layout.css.grid.enabled pref.
+  { eCSSKeyword_grid,                NS_STYLE_DISPLAY_GRID },
+  { eCSSKeyword_inline_grid,         NS_STYLE_DISPLAY_INLINE_GRID },
   // The next entry is controlled by the layout.css.display-contents.enabled
   // pref.
   { eCSSKeyword_contents,            NS_STYLE_DISPLAY_CONTENTS },
   { eCSSKeyword_UNKNOWN,             -1 }
 };
 
 const KTableEntry nsCSSProps::kEmptyCellsKTable[] = {
   { eCSSKeyword_show,                 NS_STYLE_TABLE_EMPTY_CELLS_SHOW },
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -2741,16 +2741,21 @@ var gCSSProperties = {
       "table-row-group",
       "table-header-group",
       "table-footer-group",
       "table-row",
       "table-column-group",
       "table-column",
       "table-cell",
       "table-caption",
+      "ruby",
+      "ruby-base",
+      "ruby-base-container",
+      "ruby-text",
+      "ruby-text-container",
       "none"
     ],
     invalid_values: []
   },
   "empty-cells": {
     domProp: "emptyCells",
     inherited: true,
     type: CSS_TYPE_LONGHAND,
@@ -3546,16 +3551,37 @@ var gCSSProperties = {
       "calc(50%)",
       "calc(3*25px)",
       "calc(25px*3)",
       "calc(3*25px + 50%)",
     ],
     invalid_values: [],
     quirks_values: { "5": "5px" },
   },
+  "ruby-align": {
+    domProp: "rubyAlign",
+    inherited: true,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "space-around" ],
+    other_values: [ "start", "center", "space-between" ],
+    invalid_values: [
+      "end", "1", "10px", "50%", "start center"
+    ]
+  },
+  "ruby-position": {
+    domProp: "rubyPosition",
+    inherited: true,
+    type: CSS_TYPE_LONGHAND,
+    initial_values: [ "over" ],
+    other_values: [ "under" ],
+    invalid_values: [
+      "left", "right", "auto", "none", "not_a_position",
+      "over left", "right under", "0", "100px", "50%"
+    ]
+  },
   "table-layout": {
     domProp: "tableLayout",
     inherited: false,
     type: CSS_TYPE_LONGHAND,
     initial_values: [ "auto" ],
     other_values: [ "fixed" ],
     invalid_values: []
   },
@@ -5826,48 +5852,16 @@ if (IsCSSPropertyPrefEnabled("layout.css
       "sepia(0.5, 0.5)",
       "sepia(#my-filter)",
       "sepia(10px)",
       "sepia(-1)",
     ]
   };
 }
 
-if (IsCSSPropertyPrefEnabled("layout.css.ruby.enabled")) {
-  // Using unshift to add these values at the beginning.
-  // Adding them to the end would trigger bug 1038905. The "unshift" should be
-  // changed to a "push" when this bug is resolved.
-  gCSSProperties["display"].other_values.unshift("ruby",
-                                                 "ruby-base",
-                                                 "ruby-base-container",
-                                                 "ruby-text",
-                                                 "ruby-text-container");
-  gCSSProperties["ruby-align"] = {
-    domProp: "rubyAlign",
-    inherited: true,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "space-around" ],
-    other_values: [ "start", "center", "space-between" ],
-    invalid_values: [
-      "end", "1", "10px", "50%", "start center"
-    ]
-  };
-  gCSSProperties["ruby-position"] = {
-    domProp: "rubyPosition",
-    inherited: true,
-    type: CSS_TYPE_LONGHAND,
-    initial_values: [ "over" ],
-    other_values: [ "under" ],
-    invalid_values: [
-      "left", "right", "auto", "none", "not_a_position",
-      "over left", "right under", "0", "100px", "50%"
-    ]
-  };
-}
-
 if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
   var isGridTemplateSubgridValueEnabled =
     IsCSSPropertyPrefEnabled("layout.css.grid-template-subgrid-value.enabled");
 
   gCSSProperties["display"].other_values.push("grid", "inline-grid");
   gCSSProperties["grid-auto-flow"] = {
     domProp: "gridAutoFlow",
     inherited: false,
--- a/layout/style/ua.css
+++ b/layout/style/ua.css
@@ -69,37 +69,35 @@
 }
 
 *|*::-moz-table-cell {
   display: table-cell !important;
   white-space: inherit;
 }
 
 /* Ruby */
-@supports (display:ruby) {
-  *|*::-moz-ruby {
-    display: ruby;
-    unicode-bidi: -moz-isolate;
-  }
-  *|*::-moz-ruby-base {
-    display: ruby-base;
-    unicode-bidi: -moz-isolate;
-  }
-  *|*::-moz-ruby-text {
-    display: ruby-text;
-    unicode-bidi: -moz-isolate;
-  }
-  *|*::-moz-ruby-base-container {
-    display: ruby-base-container;
-    unicode-bidi: -moz-isolate;
-  }
-  *|*::-moz-ruby-text-container {
-    display: ruby-text-container;
-    unicode-bidi: -moz-isolate;
-  }
+*|*::-moz-ruby {
+  display: ruby;
+  unicode-bidi: -moz-isolate;
+}
+*|*::-moz-ruby-base {
+  display: ruby-base;
+  unicode-bidi: -moz-isolate;
+}
+*|*::-moz-ruby-text {
+  display: ruby-text;
+  unicode-bidi: -moz-isolate;
+}
+*|*::-moz-ruby-base-container {
+  display: ruby-base-container;
+  unicode-bidi: -moz-isolate;
+}
+*|*::-moz-ruby-text-container {
+  display: ruby-text-container;
+  unicode-bidi: -moz-isolate;
 }
 
 /* Lists */
 
 *|*::-moz-list-bullet, *|*::-moz-list-number {
   display: inline;
   vertical-align: baseline;
   font-variant-numeric: tabular-nums;
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -2379,19 +2379,16 @@ pref("layout.css.grid.enabled", true);
 #endif
 
 // Is support for CSS "grid-template-{columns,rows}: subgrid X" enabled?
 pref("layout.css.grid-template-subgrid-value.enabled", false);
 
 // Is support for CSS contain enabled?
 pref("layout.css.contain.enabled", false);
 
-// Is support for CSS Ruby enabled?
-pref("layout.css.ruby.enabled", true);
-
 // Is support for CSS display:contents enabled?
 pref("layout.css.display-contents.enabled", true);
 
 // Is support for CSS box-decoration-break enabled?
 pref("layout.css.box-decoration-break.enabled", true);
 
 // Is layout of CSS outline-style:auto enabled?
 pref("layout.css.outline-style-auto.enabled", false);
--- a/testing/profiles/prefs_general.js
+++ b/testing/profiles/prefs_general.js
@@ -153,19 +153,16 @@ user_pref("layout.css.report_errors", tr
 user_pref("layout.css.grid.enabled", true);
 
 // Enable CSS 'contain' for testing
 user_pref("layout.css.contain.enabled", true);
 
 // Enable CSS object-fit & object-position for testing
 user_pref("layout.css.object-fit-and-position.enabled", true);
 
-// Enable CSS Ruby for testing
-user_pref("layout.css.ruby.enabled", true);
-
 // Enable webkit prefixed CSS features for testing
 user_pref("layout.css.prefixes.webkit", true);
 
 // Disable spammy layout warnings because they pollute test logs
 user_pref("layout.spammy_warnings.enabled", false);
 
 // Enable Media Source Extensions for testing
 user_pref("media.mediasource.mp4.enabled", true);