Merge mozilla-central to autoland. a=merge CLOSED TREE
authorMargareta Eliza Balazs <ebalazs@mozilla.com>
Tue, 20 Mar 2018 19:00:25 +0200
changeset 409022 e5031ab7e62849a9c050128a6ce39ea160a21a6b
parent 409021 5be07e86738e8993022e1c507b5b09e602872a33 (current diff)
parent 408982 3d4f4a6bb6ba36a649f7f9b856b7b42c2127e133 (diff)
child 409023 88d481718b2c916c00de828385dc2d4de1532f00
push id33671
push usercsabou@mozilla.com
push dateTue, 20 Mar 2018 22:23:32 +0000
treeherdermozilla-central@e2e874ceae78 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone61.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
Merge mozilla-central to autoland. a=merge CLOSED TREE
browser/app/profile/firefox.js
browser/base/content/tabbrowser.xml
security/sandbox/chromium-shim/patches/after_update/change_USER_NON_ADMIN_to_blacklist.patch
--- a/accessible/atk/nsMaiInterfaceText.cpp
+++ b/accessible/atk/nsMaiInterfaceText.cpp
@@ -125,17 +125,17 @@ ConvertToAtkTextAttributeSet(nsIPersiste
   // libatk-adaptor will free it
   return objAttributeSet;
 }
 
 static void
 ConvertTexttoAsterisks(AccessibleWrap* accWrap, nsAString& aString)
 {
   // convert each char to "*" when it's "password text"
-  if (accWrap->NativeRole() == roles::PASSWORD_TEXT) {
+  if (accWrap->IsPassword()) {
     DOMtoATK::ConvertTexttoAsterisks(aString);
   }
 }
 
 extern "C" {
 
 static gchar*
 getTextCB(AtkText *aText, gint aStartOffset, gint aEndOffset)
@@ -143,17 +143,17 @@ getTextCB(AtkText *aText, gint aStartOff
   AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(aText));
   nsAutoString autoStr;
   if (accWrap) {
     HyperTextAccessible* text = accWrap->AsHyperText();
     if (!text || !text->IsTextRole() || text->IsDefunct())
       return nullptr;
 
     return DOMtoATK::NewATKString(text, aStartOffset, aEndOffset,
-         accWrap->NativeRole() == roles::PASSWORD_TEXT ?
+         accWrap->IsPassword() ?
            DOMtoATK::AtkStringConvertFlags::ConvertTextToAsterisks :
            DOMtoATK::AtkStringConvertFlags::None);
 
   } else if (ProxyAccessible* proxy = GetProxy(ATK_OBJECT(aText))) {
     return DOMtoATK::NewATKString(proxy, aStartOffset, aEndOffset,
          DOMtoATK::AtkStringConvertFlags::None);
   }
 
--- a/accessible/base/AccTypes.h
+++ b/accessible/base/AccTypes.h
@@ -34,16 +34,17 @@ enum AccType {
   eHTMLMediaType,
   eHTMLRadioButtonType,
   eHTMLRangeType,
   eHTMLSpinnerType,
   eHTMLTableType,
   eHTMLTableCellType,
   eHTMLTableRowType,
   eHTMLTextFieldType,
+  eHTMLTextPasswordFieldType,
   eHyperTextType,
   eImageType,
   eOuterDocType,
   ePluginType,
   eTextLeafType,
 
   /**
    * Other accessible types.
--- a/accessible/generic/Accessible.h
+++ b/accessible/generic/Accessible.h
@@ -644,17 +644,20 @@ public:
 
   bool IsTableCell() const { return HasGenericType(eTableCell); }
   virtual TableCellAccessible* AsTableCell() { return nullptr; }
   const TableCellAccessible* AsTableCell() const
     { return const_cast<Accessible*>(this)->AsTableCell(); }
 
   bool IsTableRow() const { return HasGenericType(eTableRow); }
 
-  bool IsTextField() const { return mType == eHTMLTextFieldType; }
+  bool IsTextField() const { return mType == eHTMLTextFieldType ||
+                                    mType == eHTMLTextPasswordFieldType; }
+
+  bool IsPassword() const { return mType == eHTMLTextPasswordFieldType; }
 
   bool IsText() const { return mGenericTypes & eText; }
 
   bool IsTextLeaf() const { return mType == eTextLeafType; }
   TextLeafAccessible* AsTextLeaf();
 
   bool IsXULLabel() const { return mType == eXULLabelType; }
   XULLabelAccessible* AsXULLabel();
--- a/accessible/html/HTMLFormControlAccessible.cpp
+++ b/accessible/html/HTMLFormControlAccessible.cpp
@@ -277,24 +277,26 @@ HTMLButtonAccessible::IsWidget() const
 ////////////////////////////////////////////////////////////////////////////////
 // HTMLTextFieldAccessible
 ////////////////////////////////////////////////////////////////////////////////
 
 HTMLTextFieldAccessible::
   HTMLTextFieldAccessible(nsIContent* aContent, DocAccessible* aDoc) :
   HyperTextAccessibleWrap(aContent, aDoc)
 {
-  mType = eHTMLTextFieldType;
+  mType = mContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
+                            nsGkAtoms::password, eIgnoreCase) ?
+            eHTMLTextPasswordFieldType :
+            eHTMLTextFieldType;
 }
 
 role
 HTMLTextFieldAccessible::NativeRole()
 {
-  if (mContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
-                                         nsGkAtoms::password, eIgnoreCase)) {
+  if (mType == eHTMLTextPasswordFieldType) {
     return roles::PASSWORD_TEXT;
   }
 
   return roles::ENTRY;
 }
 
 already_AddRefed<nsIPersistentProperties>
 HTMLTextFieldAccessible::NativeAttributes()
--- a/accessible/tests/mochitest/elm/a11y.ini
+++ b/accessible/tests/mochitest/elm/a11y.ini
@@ -9,10 +9,9 @@ skip-if = buildapp == 'mulet'
 [test_figure.html]
 [test_listbox.xul]
 [test_MathMLSpec.html]
 [test_nsApplicationAcc.html]
 [test_plugin.html]
 skip-if = buildapp == 'mulet'
 [test_canvas.html]
 [test_shadowroot.html]
-skip-if = !stylo
 support-files = test_shadowroot_subframe.html
--- a/accessible/tests/mochitest/treeupdate/a11y.ini
+++ b/accessible/tests/mochitest/treeupdate/a11y.ini
@@ -10,17 +10,16 @@ support-files =
 [test_bug883708.xhtml]
 [test_bug884251.xhtml]
 [test_bug895082.html]
 [test_bug1040735.html]
 [test_bug1100602.html]
 [test_bug1175913.html]
 [test_bug1189277.html]
 [test_bug1276857.html]
-skip-if = !stylo
 support-files = test_bug1276857_subframe.html
 [test_canvas.html]
 [test_colorpicker.xul]
 [test_contextmenu.xul]
 [test_cssoverflow.html]
 [test_deck.xul]
 [test_doc.html]
 [test_gencontent.html]
--- a/accessible/tests/mochitest/treeupdate/test_recreation.html
+++ b/accessible/tests/mochitest/treeupdate/test_recreation.html
@@ -82,16 +82,24 @@
     function changeHref(aID) {
       this.__proto__ = new changeAttr(aID, "href", "www");
     }
 
     function changeMultiselectable(aID) {
       this.__proto__ = new changeAttr(aID, "aria-multiselectable", "true");
     }
 
+    function changeTypeToPassword(aID) {
+      this.__proto__ = new changeAttr(aID, "type", "password");
+    }
+
+    function changeTypeToText(aID) {
+      this.__proto__ = new changeAttr(aID, "type", "text");
+    }
+
     // //////////////////////////////////////////////////////////////////////////
     // Test
 
     // gA11yEventDumpID = "eventdump"; // debug stuff
     // gA11yEventDumpToConsole = true;
 
     var gQueue = null;
 
@@ -108,16 +116,20 @@
       gQueue.push(new changeRole("div1"));
 
       // recreate an accessible by href change
       gQueue.push(new changeHref("anchor"));
 
       // recreate an accessible by aria-multiselectable change
       gQueue.push(new changeMultiselectable("div3"));
 
+      // recreate an accessible by type
+      gQueue.push(new changeTypeToText("password"));
+      gQueue.push(new changeTypeToPassword("text"));
+
       gQueue.invoke(); // SimpleTest.finish() will be called in the end
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   </script>
 </head>
 <body>
@@ -134,10 +146,13 @@
   </pre>
 
   <span id="span">span</span>
   <div id="div1">div</div>
   <a id="anchor">anchor</a>
   <div id="div3" role="listbox">list</div>
 
   <div id="eventdump"></div>
+
+  <form><input type="password" id="password"/></form>
+  <form><input type="text" id="text"/></form>
 </body>
 </html>
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -2111,17 +2111,17 @@
 
           menuItem.setAttribute("class", "menuitem-iconic alltabs-item menuitem-with-favicon");
 
           this._setMenuitemAttributes(menuItem, aTab);
 
           aTab.mCorrespondingMenuitem = menuItem;
           menuItem.tab = aTab;
 
-          this.appendChild(menuItem);
+          return menuItem;
         ]]></body>
       </method>
 
       <method name="_setMenuitemAttributes">
         <parameter name="aMenuitem"/>
         <parameter name="aTab"/>
         <body><![CDATA[
           aMenuitem.setAttribute("label", aTab.label);
@@ -2198,20 +2198,24 @@
 
           var tabcontainer = gBrowser.tabContainer;
 
           // Listen for changes in the tab bar.
           tabcontainer.addEventListener("TabAttrModified", this);
           tabcontainer.addEventListener("TabClose", this);
 
           let tabs = gBrowser.visibleTabs;
+          let fragment = document.createDocumentFragment();
           for (var i = 0; i < tabs.length; i++) {
-            if (!tabs[i].pinned)
-              this._createTabMenuItem(tabs[i]);
+            if (!tabs[i].pinned) {
+              let li = this._createTabMenuItem(tabs[i]);
+              fragment.appendChild(li);
+            }
           }
+          this.appendChild(fragment);
           this._updateTabsVisibilityStatus();
         }
       ]]></handler>
 
       <handler event="popuphidden">
       <![CDATA[
         if (event.target.getAttribute("id") == "alltabs_containersMenuTab") {
           return;
--- a/devtools/client/inspector/animation/components/AnimatedPropertyList.js
+++ b/devtools/client/inspector/animation/components/AnimatedPropertyList.js
@@ -20,41 +20,54 @@ class AnimatedPropertyList extends PureC
       simulateAnimation: PropTypes.func.isRequired,
     };
   }
 
   constructor(props) {
     super(props);
 
     this.state = {
-      animatedPropertyMap: null
+      // Map which is mapped property name and the keyframes.
+      animatedPropertyMap: null,
+      // Object which is mapped property name and the animation type
+      // such the "color", "discrete", "length" and so on.
+      animationTypes: null,
+      // To avoid rendering while the state is updating
+      // since we call an async function in updateState.
+      isStateUpdating: false,
     };
   }
 
   componentDidMount() {
-    this.updateKeyframesList(this.props.animation);
+    // No need to set isStateUpdating state since paint sequence is finish here.
+    this.updateState(this.props.animation);
   }
 
   componentWillReceiveProps(nextProps) {
-    this.updateKeyframesList(nextProps.animation);
+    this.setState({ isStateUpdating: true });
+    this.updateState(nextProps.animation);
+  }
+
+  shouldComponentUpdate(nextProps, nextState) {
+    return !nextState.isStateUpdating;
   }
 
   getPropertyState(property) {
     const { animation } = this.props;
 
     for (const propState of animation.state.propertyState) {
       if (propState.property === property) {
         return propState;
       }
     }
 
     return null;
   }
 
-  async updateKeyframesList(animation) {
+  async updateState(animation) {
     const {
       getAnimatedPropertyMap,
       emitEventForTest,
     } = this.props;
 
     let animatedPropertyMap = null;
     let animationTypes = null;
 
@@ -63,17 +76,24 @@ class AnimatedPropertyList extends PureC
       animationTypes = await animation.getAnimationTypes(animatedPropertyMap.keys());
     } catch (e) {
       // Expected if we've already been destroyed or other node have been selected
       // in the meantime.
       console.error(e);
       return;
     }
 
-    this.setState({ animatedPropertyMap, animationTypes });
+    this.setState(
+      {
+        animatedPropertyMap,
+        animationTypes,
+        isStateUpdating: false
+      }
+    );
+
     emitEventForTest("animation-keyframes-rendered");
   }
 
   render() {
     const {
       getComputedStyle,
       simulateAnimation,
     } = this.props;
--- a/devtools/client/inspector/animation/components/graph/SummaryGraphPath.js
+++ b/devtools/client/inspector/animation/components/graph/SummaryGraphPath.js
@@ -30,27 +30,36 @@ class SummaryGraphPath extends PureCompo
   }
 
   constructor(props) {
     super(props);
 
     this.state = {
       // Duration which can display in one pixel.
       durationPerPixel: 0,
+      // To avoid rendering while the state is updating
+      // since we call an async function in updateState.
+      isStateUpdating: false,
       // List of keyframe which consists by only offset and easing.
       keyframesList: [],
     };
   }
 
   componentDidMount() {
-    this.updateState(this.props.animation);
+    // No need to set isStateUpdating state since paint sequence is finish here.
+    this.updateState(this.props);
   }
 
   componentWillReceiveProps(nextProps) {
-    this.updateState(nextProps.animation);
+    this.setState({ isStateUpdating: true });
+    this.updateState(nextProps);
+  }
+
+  shouldComponentUpdate(nextProps, nextState) {
+    return !nextState.isStateUpdating;
   }
 
   /**
    * Return animatable keyframes list which has only offset and easing.
    * Also, this method remove duplicate keyframes.
    * For example, if the given animatedPropertyMap is,
    * [
    *   {
@@ -136,22 +145,23 @@ class SummaryGraphPath extends PureCompo
           keyframe1.easing !== keyframe2.easing) {
         return false;
       }
     }
 
     return true;
   }
 
-  async updateState(animation) {
+  async updateState(props) {
     const {
+      animation,
       emitEventForTest,
       getAnimatedPropertyMap,
       timeScale,
-    } = this.props;
+    } = props;
 
     let animatedPropertyMap = null;
 
     try {
       animatedPropertyMap = await getAnimatedPropertyMap(animation);
     } catch (e) {
       // Expected if we've already been destroyed or other node have been selected
       // in the meantime.
@@ -160,17 +170,23 @@ class SummaryGraphPath extends PureCompo
     }
 
     const keyframesList = this.getOffsetAndEasingOnlyKeyframes(animatedPropertyMap);
 
     const thisEl = ReactDOM.findDOMNode(this);
     const totalDuration = this.getTotalDuration(animation, timeScale);
     const durationPerPixel = totalDuration / thisEl.parentNode.clientWidth;
 
-    this.setState({ durationPerPixel, keyframesList });
+    this.setState(
+      {
+        durationPerPixel,
+        isStateUpdating: false,
+        keyframesList
+      }
+    );
 
     emitEventForTest("animation-summary-graph-rendered");
   }
 
   render() {
     const { durationPerPixel, keyframesList } = this.state;
 
     if (!durationPerPixel) {
--- a/devtools/client/inspector/animation/test/browser.ini
+++ b/devtools/client/inspector/animation/test/browser.ini
@@ -34,14 +34,15 @@ support-files =
 [browser_animation_logic_auto-stop.js]
 [browser_animation_pause-resume-button.js]
 [browser_animation_pause-resume-button_spacebar.js]
 [browser_animation_playback-rate-selector.js]
 [browser_animation_rewind-button.js]
 [browser_animation_summary-graph_animation-name.js]
 [browser_animation_summary-graph_compositor.js]
 [browser_animation_summary-graph_computed-timing-path.js]
+[browser_animation_summary-graph_computed-timing-path_different-timescale.js]
 [browser_animation_summary-graph_delay-sign.js]
 [browser_animation_summary-graph_end-delay-sign.js]
 [browser_animation_summary-graph_effect-timing-path.js]
 [browser_animation_summary-graph_negative-delay-path.js]
 [browser_animation_summary-graph_negative-end-delay-path.js]
 [browser_animation_summary-graph_tooltip.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/animation/test/browser_animation_summary-graph_computed-timing-path_different-timescale.js
@@ -0,0 +1,23 @@
+/* Any copyright is dedicated to the Public Domain.
+   http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test the Computed Timing Path component for different time scales.
+
+add_task(async function() {
+  await addTab(URL_ROOT + "doc_simple_animation.html");
+  const { inspector, panel } = await openAnimationInspector();
+
+  info("Checking the path for different time scale");
+  await selectNodeAndWaitForAnimations(".no-compositor", inspector);
+  const pathStringA = panel.querySelector(".animation-iteration-path").getAttribute("d");
+
+  info("Select animation which has different time scale from no-compositor");
+  await selectNodeAndWaitForAnimations(".endDelayed", inspector);
+
+  info("Select no-compositor again");
+  await selectNodeAndWaitForAnimations(".no-compositor", inspector);
+  const pathStringB = panel.querySelector(".animation-iteration-path").getAttribute("d");
+  is(pathStringA, pathStringB, "Path string should be same even change the time scale");
+});
--- a/devtools/client/inspector/markup/test/browser.ini
+++ b/devtools/client/inspector/markup/test/browser.ini
@@ -83,17 +83,16 @@ skip-if = os == "mac" # Full keyboard na
 [browser_markup_accessibility_new_selection.js]
 [browser_markup_accessibility_navigation_after_edit.js]
 skip-if = os == "mac" # Full keyboard navigation on OSX only works if Full Keyboard Access setting is set to All Control in System Keyboard Preferences
 [browser_markup_accessibility_semantics.js]
 [browser_markup_anonymous_01.js]
 [browser_markup_anonymous_02.js]
 skip-if = e10s # scratchpad.xul is not loading in e10s window
 [browser_markup_anonymous_03.js]
-skip-if = !stylo
 [browser_markup_anonymous_04.js]
 [browser_markup_copy_image_data.js]
 subsuite = clipboard
 skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
 [browser_markup_css_completion_style_attribute_01.js]
 [browser_markup_css_completion_style_attribute_02.js]
 [browser_markup_css_completion_style_attribute_03.js]
 [browser_markup_display_node_01.js]
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/browser.ini
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/browser.ini
@@ -6,17 +6,16 @@ support-files =
   !/devtools/client/shared/test/shared-head.js
   ../stubs/*
   test-console-api.html
   test-css-message.html
   test-network-event.html
 
 [browser_webconsole_check_stubs_console_api.js]
 [browser_webconsole_check_stubs_css_message.js]
-skip-if = !stylo # Stubs updated for Stylo, won't match old Gecko style system
 [browser_webconsole_check_stubs_evaluation_result.js]
 [browser_webconsole_check_stubs_network_event.js]
 [browser_webconsole_check_stubs_page_error.js]
 [browser_webconsole_update_stubs_console_api.js]
 skip-if=true # This is only used to update stubs. It is not an actual test.
 [browser_webconsole_update_stubs_css_message.js]
 skip-if=true # This is only used to update stubs. It is not an actual test.
 [browser_webconsole_update_stubs_evaluation_result.js]
--- a/devtools/server/tests/mochitest/chrome.ini
+++ b/devtools/server/tests/mochitest/chrome.ini
@@ -46,17 +46,16 @@ support-files =
 [test_framerate_02.html]
 [test_framerate_03.html]
 [test_framerate_04.html]
 [test_framerate_05.html]
 [test_framerate_06.html]
 [test_getProcess.html]
 [test_highlighter_paused_debugger.html]
 [test_inspector-anonymous.html]
-skip-if = !stylo # No shadow dom support
 [test_inspector-changeattrs.html]
 [test_inspector-changevalue.html]
 [test_inspector-dead-nodes.html]
 [test_inspector-display-type.html]
 [test_inspector-duplicate-node.html]
 [test_inspector_getImageData.html]
 [test_inspector_getImageDataFromURL.html]
 [test_inspector_getImageData-wait-for-load.html]
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -5795,19 +5795,17 @@ nsContentUtils::GetWindowProviderForCont
   MOZ_ASSERT(XRE_IsContentProcess());
   return ContentChild::GetSingleton();
 }
 
 /* static */
 already_AddRefed<nsPIDOMWindowOuter>
 nsContentUtils::GetMostRecentNonPBWindow()
 {
-  nsCOMPtr<nsIWindowMediator> windowMediator =
-    do_GetService(NS_WINDOWMEDIATOR_CONTRACTID);
-  nsCOMPtr<nsIWindowMediator_44> wm = do_QueryInterface(windowMediator);
+  nsCOMPtr<nsIWindowMediator> wm = do_GetService(NS_WINDOWMEDIATOR_CONTRACTID);
 
   nsCOMPtr<mozIDOMWindowProxy> window;
   wm->GetMostRecentNonPBWindow(u"navigator:browser",
                                getter_AddRefs(window));
   nsCOMPtr<nsPIDOMWindowOuter> pwindow;
   pwindow = do_QueryInterface(window);
 
   return pwindow.forget();
--- a/dom/base/test/mochitest.ini
+++ b/dom/base/test/mochitest.ini
@@ -571,19 +571,17 @@ skip-if = toolkit == 'android' #bug 6870
 [test_bug922681.html]
 [test_bug927196.html]
 [test_bug962251.html]
 [test_bug976673.html]
 [test_bug982153.html]
 [test_bug999456.html]
 [test_bug1022229.html]
 [test_bug1025933.html]
-skip-if = !stylo
 [test_bug1037687.html]
-skip-if = !stylo
 support-files = test_bug1037687_subframe.html
 [test_bug1043106.html]
 [test_bug1057176.html]
 [test_bug1060938.html]
 [test_bug1064481.html]
 [test_bug1070015.html]
 [test_bug1075702.html]
 [test_bug1091883.html]
@@ -610,17 +608,16 @@ skip-if = toolkit == 'android'
 [test_bug1318303.html]
 [test_bug1375050.html]
 [test_bug1381710.html]
 [test_bug1384661.html]
 [test_bug1399605.html]
 [test_bug1404385.html]
 [test_bug1406102.html]
 [test_bug1421568.html]
-skip-if = !stylo
 [test_caretPositionFromPoint.html]
 [test_change_policy.html]
 [test_clearTimeoutIntervalNoArg.html]
 [test_constructor-assignment.html]
 [test_constructor.html]
 [test_copyimage.html]
 subsuite = clipboard
 skip-if = toolkit == 'android' #bug 904183
--- a/dom/canvas/test/reftest/reftest.list
+++ b/dom/canvas/test/reftest/reftest.list
@@ -15,17 +15,17 @@ pref(webgl.force-layers-readback,true) s
 skip-if(Android) == webgl-clear-test.html?depth wrapper.html?green.png
 skip-if(Android) == webgl-clear-test.html?stencil wrapper.html?green.png
 skip-if(Android) == webgl-clear-test.html?depth&stencil wrapper.html?green.png
 
 # Check that resize works:
 skip-if(Android) == webgl-resize-test.html  wrapper.html?green.png
 
 # Check that captureStream() displays in a local video element
-skip-if(Android) skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&styloVsGecko) == webgl-capturestream-test.html?preserve wrapper.html?green.png
+skip-if(Android) == webgl-capturestream-test.html?preserve wrapper.html?green.png
 
 # Some of the failure conditions are a little crazy. I'm (jgilbert) setting these based on
 # failures encountered when running on Try, and then targetting the Try config by
 # differences in the `sandbox` contents. That is, I'm labeling based on symptoms rather
 # than cause.
 # WinXP R:  winWidget && layersGPUAccelerated  && !d3d11
 # Win7+ R:  winWidget && layersGPUAccelerated  && d3d11
 # Win7+ Ru: winWidget && !layersGPUAccelerated && d3d11
@@ -136,17 +136,17 @@ fuzzy(5,30000) skip pref(webgl.prefer-16
 fuzzy(5,30000) skip pref(webgl.prefer-16bpp,true)                                         == webgl-color-test.html?16bpp&________&premult&_____  wrapper.html?colors-no-alpha.png
 fuzzy(5,30000) skip pref(webgl.prefer-16bpp,true) pref(webgl.force-layers-readback,true)  == webgl-color-test.html?16bpp&readback&premult&_____  wrapper.html?colors-no-alpha.png
 fuzzy(9,40000) skip pref(webgl.prefer-16bpp,true)                                         == webgl-color-test.html?16bpp&________&_______&alpha  wrapper.html?colors-non-premult.png
 fuzzy(9,40000) skip pref(webgl.prefer-16bpp,true) pref(webgl.force-layers-readback,true)  == webgl-color-test.html?16bpp&readback&_______&alpha  wrapper.html?colors-non-premult.png
 fuzzy(9,40000) skip pref(webgl.prefer-16bpp,true)                                         == webgl-color-test.html?16bpp&________&premult&alpha  wrapper.html?colors-premult.png
 fuzzy(9,40000) skip pref(webgl.prefer-16bpp,true) pref(webgl.force-layers-readback,true)  == webgl-color-test.html?16bpp&readback&premult&alpha  wrapper.html?colors-premult.png
 
 # Force native GL (Windows):
-skip-if(!winWidget) skip-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&styloVsGecko) pref(webgl.disable-angle,true) == webgl-color-test.html?native-gl  wrapper.html?colors-no-alpha.png
+skip-if(!winWidget) pref(webgl.disable-angle,true) == webgl-color-test.html?native-gl  wrapper.html?colors-no-alpha.png
 
 
 # Non-WebGL Reftests!
 
 # Do we correctly handle multiple clip paths?
 != clip-multiple-paths.html clip-multiple-paths-badref.html
 
 # Bug 1255062
--- a/dom/events/test/mochitest.ini
+++ b/dom/events/test/mochitest.ini
@@ -134,19 +134,17 @@ skip-if = (e10s && os == "mac") || webre
 [test_bug1003432.html]
 support-files = test_bug1003432.js
 [test_bug1013412.html]
 [test_bug1017086_disable.html]
 support-files = bug1017086_inner.html
 [test_bug1017086_enable.html]
 support-files = bug1017086_inner.html
 [test_bug1079236.html]
-skip-if = !stylo
 [test_bug1145910.html]
-skip-if = !stylo
 [test_bug1150308.html]
 skip-if = true || stylo # bug 1293844, bug  1421545
 [test_bug1248459.html]
 [test_bug1264380.html]
 run-if = (e10s && os != "win" && stylo) # Bug 1270043, crash at windows platforms; Bug1264380 comment 20, nsDragService::InvokeDragSessionImpl behaves differently among platform implementations in non-e10s mode which prevents us to check the validity of nsIDragService::getCurrentSession() consistently via synthesize mouse clicks in non-e10s mode.
 [test_bug1327798.html]
 subsuite = clipboard
 [test_clickevent_on_input.html]
--- a/dom/html/reftests/autofocus/reftest.list
+++ b/dom/html/reftests/autofocus/reftest.list
@@ -1,12 +1,12 @@
 default-preferences pref(dom.forms.number,true) pref(dom.forms.datetime,true)
 fuzzy-if(skiaContent,1,3) needs-focus == input-load.html input-ref.html
 fuzzy-if(skiaContent,1,3) needs-focus == input-create.html input-ref.html
-fuzzy-if(skiaContent,1,3) needs-focus skip-if(styloVsGecko) == input-number.html input-number-ref.html
+fuzzy-if(skiaContent,1,3) needs-focus == input-number.html input-number-ref.html
 fuzzy-if(skiaContent,1,3) needs-focus == input-time.html input-time-ref.html
 fuzzy-if(skiaContent,1,3) needs-focus == button-load.html button-ref.html
 fuzzy-if(skiaContent,1,3) needs-focus == button-create.html button-ref.html
 fuzzy-if(skiaContent,1,3) needs-focus == textarea-load.html textarea-ref.html
 fuzzy-if(skiaContent,1,3) needs-focus == textarea-create.html textarea-ref.html
 fuzzy-if(skiaContent,9,6) needs-focus == select-load.html select-ref.html
 fuzzy-if(skiaContent,2,4) needs-focus == select-create.html select-ref.html
 needs-focus == autofocus-after-load.html autofocus-after-load-ref.html
--- a/dom/tests/mochitest/webcomponents/mochitest.ini
+++ b/dom/tests/mochitest/webcomponents/mochitest.ini
@@ -1,10 +1,9 @@
 [DEFAULT]
-skip-if = !stylo
 support-files =
   inert_style.css
   dummy_page.html
   head.js
 
 [test_bug900724.html]
 [test_bug1017896.html]
 [test_bug1276240.html]
--- a/gfx/tests/reftest/reftest.list
+++ b/gfx/tests/reftest/reftest.list
@@ -1,11 +1,11 @@
 # 468496-1 will also detect bugs in video drivers.
 == 468496-1.html 468496-1-ref.html
-fuzzy(175,443) skip-if(styloVsGecko) == 611498-1.html 611498-ref.html
+fuzzy(175,443) == 611498-1.html 611498-ref.html
 fuzzy-if(Android,8,1000) == 709477-1.html 709477-1-ref.html
 skip-if(!asyncPan) == 1086723.html 1086723-ref.html
 == 853889-1.html 853889-1-ref.html
 skip-if(Android) fuzzy-if(skiaContent,1,587) == 1143303-1.svg pass.svg
 fuzzy(100,30) == 1149923.html 1149923-ref.html # use fuzzy due to few distorted pixels caused by border-radius
 == 1131264-1.svg pass.svg
 == 1419528.html 1419528-ref.html
 == 1424673.html 1424673-ref.html
--- a/image/ImageCacheKey.cpp
+++ b/image/ImageCacheKey.cpp
@@ -49,75 +49,66 @@ BlobSerial(ImageURL* aURI)
 ImageCacheKey::ImageCacheKey(nsIURI* aURI,
                              const OriginAttributes& aAttrs,
                              nsIDocument* aDocument,
                              nsresult& aRv)
   : mURI(new ImageURL(aURI, aRv))
   , mOriginAttributes(aAttrs)
   , mControlledDocument(GetControlledDocumentToken(aDocument))
   , mIsChrome(URISchemeIs(mURI, "chrome"))
-  , mIsStyloEnabled(nsLayoutUtils::StyloEnabled())
 {
   NS_ENSURE_SUCCESS_VOID(aRv);
 
   MOZ_ASSERT(NS_IsMainThread());
 
   if (URISchemeIs(mURI, "blob")) {
     mBlobSerial = BlobSerial(mURI);
   }
 
-  mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument,
-                      mIsStyloEnabled);
+  mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument);
 }
 
 ImageCacheKey::ImageCacheKey(ImageURL* aURI,
                              const OriginAttributes& aAttrs,
                              nsIDocument* aDocument)
   : mURI(aURI)
   , mOriginAttributes(aAttrs)
   , mControlledDocument(GetControlledDocumentToken(aDocument))
   , mIsChrome(URISchemeIs(mURI, "chrome"))
-  , mIsStyloEnabled(nsLayoutUtils::StyloEnabled())
 {
   MOZ_ASSERT(aURI);
 
   if (URISchemeIs(mURI, "blob")) {
     mBlobSerial = BlobSerial(mURI);
   }
 
-  mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument,
-                      mIsStyloEnabled);
+  mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument);
 }
 
 ImageCacheKey::ImageCacheKey(const ImageCacheKey& aOther)
   : mURI(aOther.mURI)
   , mBlobSerial(aOther.mBlobSerial)
   , mOriginAttributes(aOther.mOriginAttributes)
   , mControlledDocument(aOther.mControlledDocument)
   , mHash(aOther.mHash)
   , mIsChrome(aOther.mIsChrome)
-  , mIsStyloEnabled(aOther.mIsStyloEnabled)
 { }
 
 ImageCacheKey::ImageCacheKey(ImageCacheKey&& aOther)
   : mURI(Move(aOther.mURI))
   , mBlobSerial(Move(aOther.mBlobSerial))
   , mOriginAttributes(aOther.mOriginAttributes)
   , mControlledDocument(aOther.mControlledDocument)
   , mHash(aOther.mHash)
   , mIsChrome(aOther.mIsChrome)
-  , mIsStyloEnabled(aOther.mIsStyloEnabled)
 { }
 
 bool
 ImageCacheKey::operator==(const ImageCacheKey& aOther) const
 {
-  if (mIsStyloEnabled != aOther.mIsStyloEnabled) {
-    return false;
-  }
   // Don't share the image cache between a controlled document and anything else.
   if (mControlledDocument != aOther.mControlledDocument) {
     return false;
   }
   // The origin attributes always have to match.
   if (mOriginAttributes != aOther.mOriginAttributes) {
     return false;
   }
@@ -137,29 +128,27 @@ ImageCacheKey::Spec() const
 {
   return mURI->Spec();
 }
 
 /* static */ PLDHashNumber
 ImageCacheKey::ComputeHash(ImageURL* aURI,
                            const Maybe<uint64_t>& aBlobSerial,
                            const OriginAttributes& aAttrs,
-                           void* aControlledDocument,
-                           bool aIsStyloEnabled)
+                           void* aControlledDocument)
 {
   // Since we frequently call Hash() several times in a row on the same
   // ImageCacheKey, as an optimization we compute our hash once and store it.
 
   nsPrintfCString ptr("%p", aControlledDocument);
   nsAutoCString suffix;
   aAttrs.CreateSuffix(suffix);
 
   return AddToHash(0, aURI->ComputeHash(aBlobSerial),
-                   HashString(suffix), HashString(ptr),
-                   aIsStyloEnabled);
+                   HashString(suffix), HashString(ptr));
 }
 
 /* static */ void*
 ImageCacheKey::GetControlledDocumentToken(nsIDocument* aDocument)
 {
   // For non-controlled documents, we just return null.  For controlled
   // documents, we cast the pointer into a void* to avoid dereferencing
   // it (since we only use it for comparisons), and return it.
--- a/image/ImageCacheKey.h
+++ b/image/ImageCacheKey.h
@@ -54,28 +54,23 @@ public:
   /// A token indicating which service worker controlled document this entry
   /// belongs to, if any.
   void* ControlledDocument() const { return mControlledDocument; }
 
 private:
   static PLDHashNumber ComputeHash(ImageURL* aURI,
                                    const Maybe<uint64_t>& aBlobSerial,
                                    const OriginAttributes& aAttrs,
-                                   void* aControlledDocument,
-                                   bool aIsStyloEnabled);
+                                   void* aControlledDocument);
   static void* GetControlledDocumentToken(nsIDocument* aDocument);
 
   RefPtr<ImageURL> mURI;
   Maybe<uint64_t> mBlobSerial;
   OriginAttributes mOriginAttributes;
   void* mControlledDocument;
   PLDHashNumber mHash;
   bool mIsChrome;
-  // To prevent the reftests of styloVsGecko taking the same image cache after
-  // refreshing, we need to store different caches of stylo and gecko. So, we
-  // also consider the info of StyloEnabled() in ImageCacheKey.
-  bool mIsStyloEnabled;
 };
 
 } // namespace image
 } // namespace mozilla
 
 #endif // mozilla_image_src_ImageCacheKey_h
--- a/image/test/crashtests/crashtests.list
+++ b/image/test/crashtests/crashtests.list
@@ -3,17 +3,17 @@ load 256-height.ico
 load 256-width.ico
 
 load 83804-1.gif
 load 89341-1.gif
 load 463696.bmp
 load 570451.png
 # Bug 1390704 - Skip on stylo+debug because it triggers a quadratic behavior that makes it take
 # so much time that it can trip on the reftest timeout of 5 minutes.
-skip-if(Android||((stylo||styloVsGecko)&&isDebugBuild)) load 694165-1.xhtml
+skip-if(Android||(stylo&&isDebugBuild)) load 694165-1.xhtml
 load 681190.html
 load 732319-1.html
 load 844403-1.html
 load 856616.gif
 load 944353.jpg
 load 1205923-1.html
 # Ensure we handle detecting that an image is animated, then failing to decode
 # it. (See bug 1210745.)
--- a/js/src/gc/Marking.cpp
+++ b/js/src/gc/Marking.cpp
@@ -126,16 +126,18 @@ IsThingPoisoned(T* thing)
     const uint8_t poisonBytes[] = {
         JS_FRESH_NURSERY_PATTERN,
         JS_SWEPT_NURSERY_PATTERN,
         JS_ALLOCATED_NURSERY_PATTERN,
         JS_FRESH_TENURED_PATTERN,
         JS_MOVED_TENURED_PATTERN,
         JS_SWEPT_TENURED_PATTERN,
         JS_ALLOCATED_TENURED_PATTERN,
+        JS_FREED_HEAP_PTR_PATTERN,
+        JS_SWEPT_TI_PATTERN,
         JS_SWEPT_CODE_PATTERN
     };
     const int numPoisonBytes = sizeof(poisonBytes) / sizeof(poisonBytes[0]);
     uint32_t* p = reinterpret_cast<uint32_t*>(reinterpret_cast<FreeSpan*>(thing) + 1);
     // Note: all free patterns are odd to make the common, not-poisoned case a single test.
     if ((*p & 1) == 0)
         return false;
     for (int i = 0; i < numPoisonBytes; ++i) {
--- a/js/src/gc/RootMarking.cpp
+++ b/js/src/gc/RootMarking.cpp
@@ -455,16 +455,17 @@ class BufferGrayRootsTracer final : publ
     template <typename T> inline void bufferRoot(T* thing);
 
   public:
     explicit BufferGrayRootsTracer(JSRuntime* rt)
       : JS::CallbackTracer(rt), bufferingGrayRootsFailed(false)
     {}
 
     bool failed() const { return bufferingGrayRootsFailed; }
+    void setFailed() { bufferingGrayRootsFailed = true; }
 
 #ifdef DEBUG
     TracerKind getTracerKind() const override { return TracerKind::GrayBuffering; }
 #endif
 };
 
 #ifdef DEBUG
 // Return true if this trace is happening on behalf of gray buffering during
@@ -472,29 +473,38 @@ class BufferGrayRootsTracer final : publ
 bool
 js::IsBufferGrayRootsTracer(JSTracer* trc)
 {
     return trc->isCallbackTracer() &&
            trc->asCallbackTracer()->getTracerKind() == JS::CallbackTracer::TracerKind::GrayBuffering;
 }
 #endif
 
+// A canary value used to check the gray buffer contents are valid.
+static Cell* const GrayBufferCanary = reinterpret_cast<Cell*>(0x47726179); // "Gray"
+
 void
 js::gc::GCRuntime::bufferGrayRoots()
 {
     // Precondition: the state has been reset to "unused" after the last GC
     //               and the zone's buffers have been cleared.
     MOZ_ASSERT(grayBufferState == GrayBufferState::Unused);
     for (GCZonesIter zone(rt); !zone.done(); zone.next())
         MOZ_ASSERT(zone->gcGrayRoots().empty());
 
     BufferGrayRootsTracer grayBufferer(rt);
     if (JSTraceDataOp op = grayRootTracer.op)
         (*op)(&grayBufferer, grayRootTracer.data);
 
+    // Push a canary value onto the end of the list.
+    for (GCZonesIter zone(rt); !zone.done(); zone.next()) {
+        if (!zone->gcGrayRoots().empty() && !zone->gcGrayRoots().append(GrayBufferCanary))
+            grayBufferer.setFailed();
+    }
+
     // Propagate the failure flag from the marker to the runtime.
     if (grayBufferer.failed()) {
       grayBufferState = GrayBufferState::Failed;
       resetBufferedGrayRoots();
     } else {
       grayBufferState = GrayBufferState::Okay;
     }
 }
@@ -526,18 +536,29 @@ BufferGrayRootsTracer::bufferRoot(T* thi
 }
 
 void
 GCRuntime::markBufferedGrayRoots(JS::Zone* zone)
 {
     MOZ_ASSERT(grayBufferState == GrayBufferState::Okay);
     MOZ_ASSERT(zone->isGCMarkingGray() || zone->isGCCompacting());
 
-    for (auto cell : zone->gcGrayRoots())
+    auto& roots = zone->gcGrayRoots();
+    if (roots.empty())
+        return;
+
+    // Check for and remove canary value.
+    MOZ_RELEASE_ASSERT(roots.length() > 1);
+    MOZ_RELEASE_ASSERT(roots.back() == GrayBufferCanary);
+    roots.popBack();
+
+    for (auto cell : zone->gcGrayRoots()) {
+        MOZ_ASSERT(IsCellPointerValid(cell));
         TraceManuallyBarrieredGenericPointerEdge(&marker, &cell, "buffered gray root");
+    }
 }
 
 void
 GCRuntime::resetBufferedGrayRoots() const
 {
     MOZ_ASSERT(grayBufferState != GrayBufferState::Okay,
                "Do not clear the gray buffers unless we are Failed or becoming Unused");
     for (GCZonesIter zone(rt); !zone.done(); zone.next())
--- a/js/src/jsutil.h
+++ b/js/src/jsutil.h
@@ -261,16 +261,17 @@ PodSet(T* aDst, const T& aSrc, size_t aN
 #define JS_FRESH_NURSERY_PATTERN 0x2F
 #define JS_SWEPT_NURSERY_PATTERN 0x2B
 #define JS_ALLOCATED_NURSERY_PATTERN 0x2D
 #define JS_FRESH_TENURED_PATTERN 0x4F
 #define JS_MOVED_TENURED_PATTERN 0x49
 #define JS_SWEPT_TENURED_PATTERN 0x4B
 #define JS_ALLOCATED_TENURED_PATTERN 0x4D
 #define JS_FREED_HEAP_PTR_PATTERN 0x6B
+#define JS_SWEPT_TI_PATTERN 0x6F
 
 /*
  * Ensure JS_SWEPT_CODE_PATTERN is a byte pattern that will crash immediately
  * when executed, so either an undefined instruction or an instruction that's
  * illegal in user mode.
  */
 #if defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_NONE)
 # define JS_SWEPT_CODE_PATTERN 0xED // IN instruction, crashes in user mode.
--- a/js/src/vm/TypeInference.cpp
+++ b/js/src/vm/TypeInference.cpp
@@ -4150,16 +4150,18 @@ ConstraintTypeSet::trace(Zone* zone, JST
                     (zone->types.typeLifoAlloc(), objectSet, objectCount, key);
             if (!pentry)
                 oomUnsafe.crash("ConstraintTypeSet::trace");
 
             *pentry = key;
         }
         MOZ_RELEASE_ASSERT(oldObjectCount == oldObjectsFound);
         setBaseObjectCount(objectCount);
+        // Note: -1/+1 to also poison the capacity field.
+        JS_POISON(oldArray - 1, JS_SWEPT_TI_PATTERN, (oldCapacity + 1) * sizeof(oldArray[0]));
     } else if (objectCount == 1) {
         ObjectKey* key = (ObjectKey*) objectSet;
         TraceObjectKey(trc, &key);
         objectSet = reinterpret_cast<ObjectKey**>(key);
     } else {
         MOZ_RELEASE_ASSERT(!objectSet);
     }
 }
@@ -4187,16 +4189,18 @@ ConstraintTypeSet::sweep(Zone* zone, Aut
      * live entries in the object hash need to be copied to the zone's
      * new arena.
      */
     unsigned objectCount = baseObjectCount();
     if (objectCount >= 2) {
         unsigned oldCapacity = TypeHashSet::Capacity(objectCount);
         ObjectKey** oldArray = objectSet;
 
+        MOZ_RELEASE_ASSERT(uintptr_t(oldArray[-1]) == oldCapacity);
+
         clearObjects();
         objectCount = 0;
         for (unsigned i = 0; i < oldCapacity; i++) {
             ObjectKey* key = oldArray[i];
             if (!key)
                 continue;
             if (!IsObjectKeyAboutToBeFinalized(&key)) {
                 ObjectKey** pentry =
@@ -4224,16 +4228,18 @@ ConstraintTypeSet::sweep(Zone* zone, Aut
                 // with either group exist, neither group will be finalized.
                 flags |= TYPE_FLAG_ANYOBJECT;
                 clearObjects();
                 objectCount = 0;
                 break;
             }
         }
         setBaseObjectCount(objectCount);
+        // Note: -1/+1 to also poison the capacity field.
+        JS_POISON(oldArray - 1, JS_SWEPT_TI_PATTERN, (oldCapacity + 1) * sizeof(oldArray[0]));
     } else if (objectCount == 1) {
         ObjectKey* key = (ObjectKey*) objectSet;
         if (!IsObjectKeyAboutToBeFinalized(&key)) {
             objectSet = reinterpret_cast<ObjectKey**>(key);
         } else {
             // As above, mark type sets containing objects with unknown
             // properties as unknown.
             if (key->isGroup() && key->groupNoBarrier()->unknownPropertiesDontCheckGeneration())
@@ -4256,17 +4262,19 @@ ConstraintTypeSet::sweep(Zone* zone, Aut
             if (copy) {
                 MOZ_ASSERT(zone->types.typeLifoAlloc().contains(copy));
                 copy->setNext(constraintList_);
                 constraintList_ = copy;
             } else {
                 oom.setOOM();
             }
         }
-        constraint = constraint->next();
+        TypeConstraint* next = constraint->next();
+        JS_POISON(constraint, JS_SWEPT_TI_PATTERN, sizeof(TypeConstraint));
+        constraint = next;
     }
 }
 
 inline void
 ObjectGroup::clearProperties()
 {
     setBasePropertyCount(0);
     propertySet = nullptr;
@@ -4355,23 +4363,25 @@ ObjectGroup::sweep(AutoClearTypeInferenc
                 prop->types.checkMagic();
                 if (singleton() && !prop->types.constraintList() && !zone()->isPreservingCode()) {
                     /*
                      * Don't copy over properties of singleton objects when their
                      * presence will not be required by jitcode or type constraints
                      * (i.e. for the definite properties analysis). The contents of
                      * these type sets will be regenerated as necessary.
                      */
+                    JS_POISON(prop, JS_SWEPT_TI_PATTERN, sizeof(Property));
                     continue;
                 }
 
                 Property* newProp = typeLifoAlloc.new_<Property>(*prop);
+                JS_POISON(prop, JS_SWEPT_TI_PATTERN, sizeof(Property));
                 if (newProp) {
                     Property** pentry = TypeHashSet::Insert<jsid, Property, Property>
-                                            (typeLifoAlloc, propertySet, propertyCount, prop->id);
+                                      (typeLifoAlloc, propertySet, propertyCount, newProp->id);
                     if (pentry) {
                         *pentry = newProp;
                         newProp->types.sweep(zone(), *oom);
                         continue;
                     }
                 }
 
                 oom->setOOM();
@@ -4382,19 +4392,21 @@ ObjectGroup::sweep(AutoClearTypeInferenc
         }
         MOZ_RELEASE_ASSERT(oldPropertyCount == oldPropertiesFound);
         setBasePropertyCount(propertyCount);
     } else if (propertyCount == 1) {
         Property* prop = (Property*) propertySet;
         prop->types.checkMagic();
         if (singleton() && !prop->types.constraintList() && !zone()->isPreservingCode()) {
             // Skip, as above.
+            JS_POISON(prop, JS_SWEPT_TI_PATTERN, sizeof(Property));
             clearProperties();
         } else {
             Property* newProp = typeLifoAlloc.new_<Property>(*prop);
+            JS_POISON(prop, JS_SWEPT_TI_PATTERN, sizeof(Property));
             if (newProp) {
                 propertySet = (Property**) newProp;
                 newProp->types.sweep(zone(), *oom);
             } else {
                 oom->setOOM();
                 addFlags(OBJECT_FLAG_DYNAMIC_MASK | OBJECT_FLAG_UNKNOWN_PROPERTIES);
                 clearProperties();
                 return;
--- a/layout/base/crashtests/crashtests.list
+++ b/layout/base/crashtests/crashtests.list
@@ -490,17 +490,17 @@ load 1308848-1.html
 load 1308848-2.html
 load 1338772-1.html
 load 1343937.html
 asserts(0-1) load 1343606.html # bug 1343948
 load 1352380.html
 load 1362423-1.html
 load 1381323.html
 load 1382534.html
-asserts-if(!stylo,1) load 1388625-1.html # bug 1389286
+load 1388625-1.html
 load 1390389.html
 load 1391736.html
 load 1395591-1.html
 load 1395715-1.html
 load 1397398-1.html
 load 1397398-2.html
 load 1397398-3.html
 load 1398500.html
@@ -521,9 +521,9 @@ load 1425959.html
 load 1425893.html
 load 1428353.html
 pref(dom.webcomponents.shadowdom.enabled,true) load 1429088.html
 load 1429961.html
 load 1435015.html
 load 1429962.html
 pref(dom.webcomponents.shadowdom.enabled,true) load 1439016.html
 load 1442506.html
-asserts-if(!stylo,1) load 1437155.html
+load 1437155.html
--- a/layout/generic/crashtests/crashtests.list
+++ b/layout/generic/crashtests/crashtests.list
@@ -581,17 +581,17 @@ asserts(11) asserts-if(stylo&&Android,27
 pref(font.size.inflation.minTwips,200) load 1032450.html
 load 1032613-1.svg
 load 1032613-2.html
 load 1037903.html
 load 1039454-1.html
 load 1042489.html
 load 1054010-1.html
 load 1058954-1.html
-asserts-if(!stylo,0-2) pref(dom.webcomponents.shadowdom.enabled,true) pref(dom.webcomponents.customelements.enabled,true) load 1059138-1.html # bug 1389936
+pref(dom.webcomponents.shadowdom.enabled,true) pref(dom.webcomponents.customelements.enabled,true) load 1059138-1.html
 load 1134531.html
 load 1134667.html
 load 1137723-1.html
 load 1137723-2.html
 load 1140268-1.html
 load 1145768.html
 load 1145931.html
 load 1146103.html
--- a/layout/painting/crashtests/crashtests.list
+++ b/layout/painting/crashtests/crashtests.list
@@ -1,10 +1,10 @@
 load 1402183-1.html
-skip-if(!(stylo||styloVsGecko)||Android) load 1407470-1.html
+skip-if(Android) load 1407470-1.html
 load 1413073-1.html
 load 1413073-2.html
 load 1405881-1.html
 load 1418177-1.html
 load 1418722-1.html
 load 1419917.html
 load 1425271-1.html
 load 1428906-1.html
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -300,17 +300,17 @@ fuzzy-if(Android,3,50) fuzzy-if(skiaCont
 == 280708-1a.html 280708-1-ref.html
 == 280708-1b.html 280708-1-ref.html
 == 281241-1.html 281241-1-ref.html
 == 281241-2.xhtml 281241-1-ref.html
 == 283686-1.html about:blank
 == 283686-2.html 283686-2-ref.html
 == 283686-3.html about:blank
 == 289384-1.xhtml 289384-ref.xhtml
-random-if(d2d) fuzzy-if(Android,8,1439) skip-if(styloVsGecko) HTTP == 289480.html#top 289480-ref.html # basically-verbatim acid2 test, HTTP for a 404 page -- bug 578114 for the d2d failures, bug 1354406
+random-if(d2d) fuzzy-if(Android,8,1439) HTTP == 289480.html#top 289480-ref.html # basically-verbatim acid2 test, HTTP for a 404 page -- bug 578114 for the d2d failures
 == 290129-1.html 290129-1-ref.html
 == 291078-1.html 291078-1-ref.html
 == 291078-2.html 291078-2-ref.html
 == 291262-1.html 291262-1-ref.html
 == 294306-1.html 294306-1a-ref.html
 != 294306-1.html 294306-1b-ref.html
 == 296361-1.html 296361-ref.html
 == 296904-1.html 296904-1-ref.html
@@ -1254,17 +1254,17 @@ fails == 472020-2.xul 472020-2-ref.xul
 == 472500-1.xul 472500-1-ref.xul
 == 472769-1a.html 472769-1-ref.html
 == 472769-1b.html 472769-1-ref.html
 == 472769-2.html 472769-2-ref.html
 == 472769-3.html 472769-3-ref.html
 == 473847-1.xul 473847-1-ref.xul
 fuzzy-if(skiaContent,1,16) == 474336-1.xul 474336-1-ref.xul
 == 474417-1.html 474417-1-ref.html
-fuzzy-if(skiaContent,1,5) skip-if((stylo||styloVsGecko)&&isDebugBuild&&winWidget) == 474472-1.html 474472-1-ref.html # Bug 1383845
+fuzzy-if(skiaContent,1,5) == 474472-1.html 474472-1-ref.html
 == 475986-1a.html 475986-1-ref.html
 == 475986-1b.html 475986-1-ref.html
 == 475986-1c.html 475986-1-ref.html
 == 475986-1d.html 475986-1-ref.html
 == 475986-1e.html 475986-1-ref.html
 == 475986-1f.html 475986-1-ref.html
 == 475986-2a.html 475986-2-ref.html
 == 475986-2b.html 475986-2-ref.html
@@ -1468,17 +1468,17 @@ random == 536061.html 536061-ref.html # 
 == 538909-1.html 538909-1-ref.html
 == 538935-1.html 538935-1-ref.html
 == 539226-1.html about:blank
 == 539323-1.html 539323-1-ref.html
 == 539323-2.html 539323-2-ref.html
 == 539323-3.html 539323-3-ref.html
 == 539880-1.html 539880-1-ref.html
 == 539880-1-dynamic.html 539880-1-ref.html
-fuzzy-if(Android,12,1000) skip-if(styloVsGecko) == 539949-1.html#test2 539949-1-ref.html#test2 # bug 1354406
+fuzzy-if(Android,12,1000) == 539949-1.html#test2 539949-1-ref.html#test2
 == 541382-1.html 541382-1-ref.html
 random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)||!haveTestPlugin) HTTP == 541406-1.html 541406-1-ref.html
 needs-focus != 542116-1.html 542116-1-ref.html
 needs-focus != 542116-2.html 542116-2-ref.html
 needs-focus != 542116-3.html 542116-3-ref.html
 == 542317-1.html 542317-1-ref.html
 == 542620-1.html 542620-1-ref.html
 == 545049-1.html 545049-1-ref.html
@@ -1499,17 +1499,17 @@ fuzzy-if(Android,12,300) == 551463-1.htm
 # Marked "random" rather than "fails" because it may (spuriously) appear to pass
 # on Android devices that completely lack any Sinhala font support.
 random != 553571-1.html 553571-1-notref.html # expect dotted circle in test, not in ref: "fails" under harfbuzz, which doesn't consider the sequence invalid
 fuzzy-if(!contentSameGfxBackendAsCanvas,128,91) random-if(d2d) skip-if(azureSkiaGL) fuzzy-if(skiaContent,32,150) == 555388-1.html 555388-1-ref.html
 == 556661-1.html 556661-1-ref.html
 fuzzy-if(skiaContent,4,5) == 557087-1.html 557087-ref.html
 fuzzy-if(skiaContent&&!Android,2,5) == 557087-2.html 557087-ref.html
 == 557736-1.html 557736-1-ref.html
-fails-if(styloVsGecko) != 558011-1.xul 558011-1-ref.xul # bug 1410784
+!= 558011-1.xul 558011-1-ref.xul
 == 559284-1.html 559284-1-ref.html
 fails-if(Android) == 560455-1.xul 560455-1-ref.xul
 fuzzy-if(skiaContent,2,5) == 561981-1.html 561981-1-ref.html
 == 561981-2.html 561981-2-ref.html
 fuzzy-if(skiaContent,1,5) == 561981-3.html 561981-3-ref.html
 == 561981-4.html 561981-4-ref.html
 fuzzy-if(skiaContent,1,5) == 561981-5.html 561981-5-ref.html
 == 561981-6.html 561981-6-ref.html
@@ -1593,17 +1593,17 @@ fuzzy-if(d2d,52,1051) == 586683-1.html 5
 != 589682-1.html 589682-1-notref.html
 pref(dom.meta-viewport.enabled,true) skip-if(Android) == 593243-1.html 593243-1-ref.html # bug 593168
 pref(dom.meta-viewport.enabled,true) skip-if(Android) == 593243-2.html 593243-2-ref.html # bug 593168
 == 593544-1.html 593544-1-ref.html
 random-if(Android) == 594333-1.html 594333-1-ref.html
 == 594624-1.html 594624-1-ref.html
 == 594737-1.html 594737-1-ref.html
 fuzzy-if(skiaContent,1,80) fuzzy-if(webrender,1,100) == 597721-1.html 597721-1-ref.html
-random-if(winWidget) fuzzy-if(Android,38,539) fuzzy-if(skiaContent,1,480) needs-focus skip-if(styloVsGecko) == 598726-1.html 598726-1-ref.html # Fails on Windows, bug 782196
+random-if(winWidget) fuzzy-if(Android,38,539) fuzzy-if(skiaContent,1,480) needs-focus == 598726-1.html 598726-1-ref.html # Fails on Windows, bug 782196
 == 599113-1.html 599113-1-ref.html
 fails-if(!haveTestPlugin) HTTP == 599476.html 599476-ref.html
 == 599882-1a.html 599882-1-ref.html
 == 599882-1b.html 599882-1-ref.html
 == 599882-2.html 599882-2-ref.html
 == 600045-1.html 600045-1-ref.html
 == 600803-1.html 600803-1-ref.html
 == 600974-1.html 600974-1-ref.html
@@ -1781,18 +1781,18 @@ fuzzy-if(OSX,1,364) fuzzy-if(skiaContent
 == 849407-1.html 849407-1-ref.html
 == 849996-1.html 849996-1-ref.html
 == 858803-1.html 858803-1-ref.html
 == 860242-1.html 860242-1-ref.html
 != 860370.html 860370-notref.html
 == 871338-1.html 871338-1-ref.html
 == 875060-1.html 875060-1-ref.html
 == 883987-1a.html 883987-1-ref.html
-fails-if(styloVsGecko||stylo) == 883987-1b.html 883987-1-ref.html
-fails-if(styloVsGecko||stylo) == 883987-1c.html 883987-1-ref.html
+fails == 883987-1b.html 883987-1-ref.html # bug 1446971
+fails == 883987-1c.html 883987-1-ref.html # bug 1446971
 == 883987-1d.html 883987-1-ref.html
 == 883987-1e.html 883987-1-ref.html
 == 883987-1f.html 883987-1-ref.html
 == 890495-1.html 890495-1-ref.html
 == 894931-1.html 894931-1-ref.html
 == 897491-1.html 897491-1-ref.html
 == 897491-2.html 897491-2-ref.html
 fuzzy(2,10000) fuzzy-if(Android,5,10000) == 902330-1.html 902330-1-ref.html
@@ -1840,17 +1840,17 @@ pref(layout.css.overflow-clip-box.enable
 == 1013054-1.html 1013054-1-ref.html
 == 1018522-1.html 1018522-1-ref.html
 == 1021564-1.html 1021564-ref.html
 == 1021564-2.html 1021564-ref.html
 == 1021564-3.html 1021564-ref.html
 == 1021564-4.html 1021564-ref.html
 pref(browser.display.use_document_fonts,0) == 1022481-1.html 1022481-1-ref.html
 fuzzy-if(d2d,1,125200) fuzzy-if(skiaContent,1,126000) == 1022612-1.html 1022612-1-ref.html
-skip-if(styloVsGecko) == 1024473-1.html 1024473-1-ref.html # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
+== 1024473-1.html 1024473-1-ref.html
 fuzzy-if(skiaContent,1,24000) == 1025914-1.html 1025914-1-ref.html
 pref(layout.css.moz-document.content.enabled,true) == 1035091.html 1035091-ref.html
 pref(layout.css.moz-document.content.enabled,false) == 1035091-2.html 1035091-ref.html
 == 1042104-1.html 1042104-1-ref.html
 == 1043537-1.html 1043537-1-ref.html
 == 1044198-1.html 1044198-1-ref.html
 == 1049499-1.html 1049499-1-ref.html
 == 1050493-1.html 1050493-1-ref.html
@@ -1859,17 +1859,17 @@ pref(layout.css.moz-document.content.ena
 == 1053035-1-grid.html 1053035-1-ref.html
 == 1059167-1.html 1059167-1-ref.html
 == 1059498-1.html 1059498-1-ref.html
 == 1059498-2.html 1059498-1-ref.html
 == 1059498-3.html 1059498-1-ref.html
 == 1062108-1.html 1062108-1-ref.html
 == 1062792-1.html 1062792-1-ref.html
 == 1062963-floatmanager-reflow.html 1062963-floatmanager-reflow-ref.html
-test-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == 1066554-1.html 1066554-1-ref.html
+test-pref(dom.webcomponents.shadowdom.enabled,true) == 1066554-1.html 1066554-1-ref.html
 == 1069716-1.html 1069716-1-ref.html
 == 1078262-1.html about:blank
 test-pref(layout.testing.overlay-scrollbars.always-visible,false) == 1081072-1.html 1081072-1-ref.html
 fails-if(webrender) == 1081185-1.html 1081185-1-ref.html
 == 1097437-1.html 1097437-1-ref.html
 == 1103258-1.html 1103258-1-ref.html # assertion crash test with layers culling test
 == 1105137-1.html 1105137-1-ref.html
 fuzzy-if(d2d,36,304) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)&&d2d,139,701) == 1116480-1-fakeitalic-overflow.html 1116480-1-fakeitalic-overflow-ref.html
@@ -1991,30 +1991,30 @@ fuzzy-if(Android,27,874) fuzzy-if(!Andro
 fuzzy(2,320000) == 1315113-1.html 1315113-1-ref.html
 fuzzy(2,20000) == 1315113-2.html 1315113-2-ref.html
 == 1315632-1.html 1315632-1-ref.html
 fuzzy(2,40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),13,40000) fails-if(webrender) == 1316719-1a.html 1316719-1-ref.html
 fuzzy(13,40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),13,40000) fails-if(webrender) == 1316719-1b.html 1316719-1-ref.html
 fuzzy(13,40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),13,40000) == 1316719-1c.html 1316719-1-ref.html
 skip-if(Android) != 1318769-1.html 1318769-1-ref.html
 == 1322512-1.html 1322512-1-ref.html
-skip-if((stylo||styloVsGecko)&&isDebugBuild&&winWidget) == 1330051.svg 1330051-ref.svg
+skip-if(isDebugBuild&&winWidget) == 1330051.svg 1330051-ref.svg
 == 1348481-1.html 1348481-ref.html
 == 1348481-2.html 1348481-ref.html
 == 1352464-1.html 1352464-1-ref.html
 == 1358375-1.html 1358375-ref.html
 == 1358375-2.html 1358375-ref.html
 == 1358375-3.html 1358375-ref.html
 == 1364280-1.html 1364280-1-ref.html
 == 1364280-2a.html 1364280-2-ref.html
 == 1364280-2b.html 1364280-2-ref.html
 == 1364280-2c.html 1364280-2-ref.html
 == 1364360-1.html 1364360-1-ref.html
 == 1365159-1.html 1365159-1-ref.html
-fails-if(!stylo||styloVsGecko) == 1365162-1.html 1365162-1-ref.html
+== 1365162-1.html 1365162-1-ref.html
 == 1352306-1.html 1352306-1-ref.html
 == 1366144.html 1366144-ref.html
 == 1367592-1.html 1367592-1-ref.html
 == 1368113-1.html 1368113-1-ref.html
 == 1369584-1a.html 1369584-1-ref.html
 == 1369584-1b.html 1369584-1-ref.html
 == 1369954-1.xhtml 1369954-1-ref.xhtml
 == 1369985-1.html 1369985-1-ref.html
@@ -2058,10 +2058,10 @@ test-pref(font.size.systemFontScale,200)
 == 1420946-1.html 1420946-1-ref.html
 == 1422393.html 1422393-ref.html
 == 1424177.html 1424177-ref.html
 == 1424680.html 1424680-ref.html
 == 1424798-1.html 1424798-ref.html
 fuzzy(74,2234) random-if(webrender) == 1425243-1.html 1425243-1-ref.html
 fuzzy-if(Android,66,574) fuzzy-if(d2d,89,777) fuzzy-if(!Android&&!d2d,1,31219) == 1425243-2.html 1425243-2-ref.html
 == 1432541.html 1432541-ref.html
-pref(layout.css.moz-document.url-prefix-hack.enabled,true) fails-if(!stylo||styloVsGecko) == 1446470.html 1035091-ref.html
+pref(layout.css.moz-document.url-prefix-hack.enabled,true) == 1446470.html 1035091-ref.html
 pref(layout.css.moz-document.url-prefix-hack.enabled,false) == 1446470-2.html 1035091-ref.html
--- a/layout/reftests/css-break/reftest.list
+++ b/layout/reftests/css-break/reftest.list
@@ -1,13 +1,13 @@
 default-preferences pref(layout.css.box-decoration-break.enabled,true)
 
 == box-decoration-break-1.html box-decoration-break-1-ref.html
 fuzzy(1,20) fuzzy-if(skiaContent,1,700) fuzzy-if(webrender,23-23,14016-14016) == box-decoration-break-with-inset-box-shadow-1.html box-decoration-break-with-inset-box-shadow-1-ref.html
-fuzzy(45,460) fuzzy-if(skiaContent,57,439) fuzzy-if(Android,57,1330) fuzzy-if(styloVsGecko,45,1410) == box-decoration-break-with-outset-box-shadow-1.html box-decoration-break-with-outset-box-shadow-1-ref.html # Bug 1386543
+fuzzy(45,460) fuzzy-if(skiaContent,57,439) fuzzy-if(Android,57,1330) == box-decoration-break-with-outset-box-shadow-1.html box-decoration-break-with-outset-box-shadow-1-ref.html # Bug 1386543
 random-if(!gtkWidget) == box-decoration-break-border-image.html box-decoration-break-border-image-ref.html
 == box-decoration-break-block-border-padding.html box-decoration-break-block-border-padding-ref.html
 == box-decoration-break-block-margin.html box-decoration-break-block-margin-ref.html
 fuzzy-if(!Android,1,62) fuzzy-if(Android,8,6627) == box-decoration-break-first-letter.html box-decoration-break-first-letter-ref.html #Bug 1313773
 == box-decoration-break-with-bidi.html box-decoration-break-with-bidi-ref.html
 == box-decoration-break-bug-1235152.html box-decoration-break-bug-1235152-ref.html
 == box-decoration-break-bug-1249913.html box-decoration-break-bug-1249913-ref.html
 == vertical-wm-001.html vertical-wm-001-ref.html
--- a/layout/reftests/css-calc/reftest.list
+++ b/layout/reftests/css-calc/reftest.list
@@ -1,3 +1,3 @@
 == background-image-gradient-1.html background-image-gradient-1-ref.html
 == line-height-1.html line-height-1-ref.html
-fails-if(!isDebugBuild&&(!stylo||styloVsGecko)) skip-if(isDebugBuild&&(!stylo||styloVsGecko)) == line-height-2.html line-height-2-ref.html
+== line-height-2.html line-height-2-ref.html
--- a/layout/reftests/css-display/reftest.list
+++ b/layout/reftests/css-display/reftest.list
@@ -18,16 +18,16 @@ fuzzy-if(winWidget,12,100) == display-co
 == display-contents-495385-2d.html display-contents-495385-2d-ref.html
 fuzzy-if(Android,7,3935) == display-contents-xbl.xhtml display-contents-xbl-ref.html
 #bug 1421540 fuzzy-if(Android,7,1186) pref(dom.webcomponents.shadowdom.enabled,true) == display-contents-shadow-dom-1.html display-contents-shadow-dom-1-ref.html
 == display-contents-xbl-2.xul display-contents-xbl-2-ref.xul
 == display-contents-xbl-3.xul display-contents-xbl-3-ref.xul
 skip == display-contents-xbl-4.xul display-contents-xbl-4-ref.xul # fails (not just asserts) due to bug 1089223
 asserts(0-1) fuzzy-if(Android,8,3216) == display-contents-fieldset.html display-contents-fieldset-ref.html # bug 1089223
 == display-contents-xbl-5.xul display-contents-xbl-3-ref.xul
-fails-if(!stylo) == display-contents-xbl-6.xhtml display-contents-xbl-6-ref.html # bug 1345809
+== display-contents-xbl-6.xhtml display-contents-xbl-6-ref.html
 == display-contents-xbl-7.xhtml display-contents-xbl-7-ref.html
 == display-contents-list-item-child.html display-contents-list-item-child-ref.html
 == display-contents-dyn-insert-text.html display-contents-dyn-insert-text-ref.html
 == display-contents-writing-mode-1.html display-contents-writing-mode-1-ref.html
 == display-contents-writing-mode-2.html display-contents-writing-mode-2-ref.html
 needs-focus == display-contents-state-change.html display-contents-state-change-ref.html
 == display-flow-root-001.html display-flow-root-001-ref.html
--- a/layout/reftests/css-grid/reftest.list
+++ b/layout/reftests/css-grid/reftest.list
@@ -131,17 +131,17 @@ skip-if(Android) == grid-item-video-stre
 skip-if(Android) == grid-item-video-stretch-002.html grid-item-video-stretch-002-ref.html # Huh, Android doesn't have webm support?
 == grid-item-input-stretch-001.html grid-item-input-stretch-001-ref.html
 == grid-item-self-baseline-001.html grid-item-self-baseline-001-ref.html
 random-if(http.oscpu!="Linux\u0020i686") == grid-item-content-baseline-001.html grid-item-content-baseline-001-ref.html # depends on exact Ahem baseline font metrics which seems to differ between platforms: bug 1310792
 random-if(http.oscpu!="Linux\u0020i686") == grid-item-content-baseline-002.html grid-item-content-baseline-002-ref.html # ditto
 random-if(http.oscpu!="Linux\u0020i686") == grid-item-mixed-baseline-001.html grid-item-mixed-baseline-001-ref.html # ditto
 random-if(http.oscpu!="Linux\u0020i686") == grid-item-mixed-baseline-002.html grid-item-mixed-baseline-002-ref.html # ditto
 random-if(http.oscpu!="Linux\u0020i686") == grid-item-mixed-baseline-003.html grid-item-mixed-baseline-003-ref.html # ditto
-skip-if(!gtkWidget) fails-if(styloVsGecko) == grid-item-mixed-baseline-004.html grid-item-mixed-baseline-004-ref.html # ditto. Also stylo bug 1396977.
+skip-if(!gtkWidget) == grid-item-mixed-baseline-004.html grid-item-mixed-baseline-004-ref.html # ditto.
 == grid-align-content-001.html grid-align-content-001-ref.html
 == grid-justify-content-001.html grid-justify-content-001-ref.html
 skip-if(Android&&isDebugBuild) == grid-justify-content-002.html grid-justify-content-002-ref.html # Bug 1245884 - slow
 skip-if(Android&&isDebugBuild) == grid-justify-content-003.html grid-justify-content-003-ref.html # Bug 1245884 - slow
 skip-if(!gtkWidget) == grid-container-baselines-001.html grid-container-baselines-001-ref.html
 skip-if(!gtkWidget) == grid-container-baselines-002.html grid-container-baselines-002-ref.html
 skip-if(!gtkWidget) == grid-container-baselines-003.html grid-container-baselines-003-ref.html
 == grid-container-baselines-004.html grid-container-baselines-004-ref.html
--- a/layout/reftests/css-valuesandunits/reftest.list
+++ b/layout/reftests/css-valuesandunits/reftest.list
@@ -4,12 +4,14 @@
 == unit-rem-iframe.html unit-rem-ref-iframe.html
 == unit-rem-root-fontsize.html unit-rem-ref-root-fontsize.html
 == unit-rem-root-fontsize.html unit-rem-ref2-root-fontsize.html
 == unit-rem-root-width.html unit-rem-ref-root-width.html
 == unit-rem.svg unit-rem-ref.svg
 == unit-vh-vw.html unit-vh-vw-ref.html
 == unit-vh-vw-zoom.html unit-vh-vw-zoom-ref.html
 == unit-vh-vw-overflow-auto.html unit-vh-vw-overflow-auto-ref.html
-fails-if(!Android&&(styloVsGecko||stylo)) == unit-vh-vw-overflow-scroll.html unit-vh-vw-overflow-scroll-ref.html
-fails-if(!Android&&(styloVsGecko||stylo)) == unit-vh-vw-overflow-scroll-x.html unit-vh-vw-overflow-scroll-x-ref.html
-fails-if(!Android&&(styloVsGecko||stylo)) == unit-vh-vw-overflow-scroll-y.html unit-vh-vw-overflow-scroll-y-ref.html
-skip-if(Android) fails-if(stylo) != unit-vh-vw-overflow-auto.html unit-vh-vw-overflow-scroll.html
+
+# These tests should probably be removed, see bug 1393603.
+fails-if(!Android) == unit-vh-vw-overflow-scroll.html unit-vh-vw-overflow-scroll-ref.html
+fails-if(!Android) == unit-vh-vw-overflow-scroll-x.html unit-vh-vw-overflow-scroll-x-ref.html
+fails-if(!Android) == unit-vh-vw-overflow-scroll-y.html unit-vh-vw-overflow-scroll-y-ref.html
+skip-if(Android) fails != unit-vh-vw-overflow-auto.html unit-vh-vw-overflow-scroll.html
--- a/layout/reftests/details-summary/reftest.list
+++ b/layout/reftests/details-summary/reftest.list
@@ -60,19 +60,19 @@
 # Various properties on details or summary
 == details-display-inline.html details-display-inline-ref.html
 == details-percentage-height-children.html details-percentage-height-children-ref.html
 == details-absolute-children.html details-absolute-children-ref.html
 == details-three-columns.html details-three-columns-ref.html
 == details-writing-mode.html details-writing-mode-ref.html
 == details-in-ol.html details-in-ol-ref.html
 == summary-three-columns.html summary-three-columns-ref.html
-fails-if(styloVsGecko) == details-first-line.html details-first-line-ref.html
-fails-if(styloVsGecko) == open-details-first-line-1.html open-details-first-line-ref.html
-fails-if(styloVsGecko) == open-details-first-line-2.html open-details-first-line-ref.html
+== details-first-line.html details-first-line-ref.html
+== open-details-first-line-1.html open-details-first-line-ref.html
+== open-details-first-line-2.html open-details-first-line-ref.html
 
 # Dispatch mouse click to summary
 == mouse-click-single-summary.html open-single-summary.html
 == mouse-click-twice-single-summary.html single-summary.html
 == mouse-click-open-single-summary.html single-summary.html
 == mouse-click-twice-open-single-summary.html open-single-summary.html
 == mouse-click-open-second-summary.html open-multiple-summary.html
 == mouse-click-overflow-hidden-details.html overflow-hidden-open-details.html
--- a/layout/reftests/first-letter/reftest.list
+++ b/layout/reftests/first-letter/reftest.list
@@ -17,17 +17,17 @@
 fails == quote-1b.html quote-1-ref.html # bug 509685
 fails == quote-1c.html quote-1-ref.html # bug 509685
 == quote-1c.html quote-1b.html
 fails == quote-1d.html quote-1-ref.html
 == quote-1d.html quote-1b.html
 fails == quote-1e.html quote-1-ref.html # bug 509685
 == quote-1e.html quote-1b.html
 == quote-1f.html quote-1-ref.html
-fails-if(!stylo) fails-if(styloVsGecko) == dynamic-1.html dynamic-1-ref.html # bug 8253
+== dynamic-1.html dynamic-1-ref.html
 random-if(d2d) == dynamic-2.html dynamic-2-ref.html
 == dynamic-3a.html dynamic-3-ref.html
 == dynamic-3b.html dynamic-3-ref.html
 == dynamic-4.html dynamic-4-ref.html
 == dynamic-5.html dynamic-5-ref.html
 == 23605-1.html 23605-1-ref.html
 == 23605-2.html 23605-2-ref.html
 == 23605-3.html 23605-3-ref.html
--- a/layout/reftests/first-line/reftest.list
+++ b/layout/reftests/first-line/reftest.list
@@ -1,16 +1,16 @@
 # basic functionality
 == basic-1.html basic-ref.html
 
 # handling of out-of-flows when ::first-line happens
 == out-of-flow-1a.html out-of-flow-1-ref.html
 == out-of-flow-1b.html out-of-flow-1-ref.html
 == out-of-flow-1c.html out-of-flow-1-ref.html
-fails-if(!stylo) fails-if(styloVsGecko) == out-of-flow-1d.html out-of-flow-1-ref.html # bug 396645
+== out-of-flow-1d.html out-of-flow-1-ref.html
 
 # parent style context correct
 == parent-style-1.html parent-style-1-ref.html
 == parent-style-2.html parent-style-2-ref.html
 == parent-style-3.html parent-style-3-ref.html
 
 # stress-tests
 load stress-1.html # assertion test
@@ -31,17 +31,17 @@ load stress-10.html # crash test
 == 403177-1.html 403177-1-ref.html
 == 469227-2.html 469227-2-ref.html
 == 469227-3.html 469227-3-ref.html
 
 == restyle-inside-first-line.html restyle-inside-first-line-ref.html
 == font-styles.html font-styles-ref.html
 fuzzy-if(OSX==1010,1,2) == font-styles-nooverflow.html font-styles-ref.html
 
-fails-if(!stylo) == ib-split-1.html ib-split-1-ref.html
+== ib-split-1.html ib-split-1-ref.html
 
 == first-line-in-columnset-1.html first-line-in-columnset-1-ref.html
 
 == insertion-in-first-line-1.html insertion-in-first-line-ref.html
 == insertion-in-first-line-2.html insertion-in-first-line-ref.html
 == insertion-in-first-line-3.html insertion-in-first-line-ref.html
 == insertion-in-first-line-4.html insertion-in-first-line-ref.html
 == insertion-in-first-line-5.html insertion-in-first-line-ref.html
--- a/layout/reftests/font-face/reftest.list
+++ b/layout/reftests/font-face/reftest.list
@@ -77,18 +77,18 @@ skip == enable-sheet-7.html multiple-in-
 # completion for those cases.
 == disable-sheet-4.html disable-sheet-4-ref.html
 == disable-sheet-5.html disable-sheet-4-ref.html
 == sheet-set-base-1.html sheet-set-base-1-ref.html
 random-if(cocoaWidget) == sheet-set-switch-1.html sheet-set-switch-1-ref.html # bug 468217
 == insert-rule-1a.html insert-rule-1-ref.html
 == insert-rule-1b.html insert-rule-1-ref.html
 == delete-rule-1.html delete-rule-1-ref.html
-skip-if(styloVsGecko) == media-query-add-1.html media-query-add-1-ref.html # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
-skip-if(styloVsGecko) == media-query-remove-1.html media-query-remove-1-ref.html # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
+== media-query-add-1.html media-query-add-1-ref.html
+== media-query-remove-1.html media-query-remove-1-ref.html
 != media-query-add-1-ref.html media-query-remove-1-ref.html
 
 == ahem-metrics-1.html ahem-metrics-1-ref.html
 == ex-unit-1.html ex-unit-1-ref.html
 == ex-unit-1-dynamic.html ex-unit-1-ref.html
 
 == local-1.html local-1-ref.html
 == local-styled-1.html local-styled-1-ref.html
--- a/layout/reftests/font-features/reftest.list
+++ b/layout/reftests/font-features/reftest.list
@@ -49,17 +49,17 @@
 == font-features-order-3.html font-features-noliga.html
 == font-features-order-4.html font-features-noliga.html
 == font-features-order-5.html font-features-hlig.html
 
 # check priority involving feature settings and font-variant-alternates
 == alternates-order.html alternates-order-ref.html
 
 # check that font-specific values line up with @font-face feature settings
-skip-if((stylo||styloVsGecko)&&winWidget) == annotations.html annotations-ref.html
+skip-if(winWidget) == annotations.html annotations-ref.html # bug 1447257
 
 # font-variant subproperties
 # test for specific features being on and others off, based on prop values
 # (debug problems with font-variant-debug.html which displays all props)
 == font-variant-alternates.html font-variant-alternates-ref.html
 == font-variant-caps.html font-variant-caps-ref.html
 == font-variant-east-asian.html font-variant-east-asian-ref.html
 == font-variant-ligatures.html font-variant-ligatures-ref.html
--- a/layout/reftests/font-inflation/reftest.list
+++ b/layout/reftests/font-inflation/reftest.list
@@ -34,17 +34,17 @@ test-pref(font.size.inflation.emPerLine,
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == input-text-3-noheight.html input-text-3-noheight-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == textarea-1.html textarea-1-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == textarea-2.html textarea-2-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == textarea-3.html textarea-3-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == css-transform-1.html css-transform-1-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) fuzzy-if(webrender,0-1,0-19) == css-transform-2.html css-transform-2-ref.html
 # skipped - bug 1380830
 fuzzy-if(asyncPan&&!layersGPUAccelerated,102,1764) skip test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == container-with-clamping.html container-with-clamping-ref.html
-test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) skip-if(styloVsGecko) load video-1.html
+test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) load video-1.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-min-1.html intrinsic-min-1-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-max-1.html intrinsic-max-1-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-fit-1a.html intrinsic-fit-1a-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-fit-1b.html intrinsic-fit-1b-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-fit-1c.html intrinsic-fit-1c-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-fit-2a.html intrinsic-fit-1a-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-fit-2b.html intrinsic-fit-1b-ref.html
 test-pref(font.size.inflation.emPerLine,15) test-pref(font.size.inflation.forceEnabled,true) test-pref(font.size.inflation.lineThreshold,0) == intrinsic-fit-2c.html intrinsic-fit-1c-ref.html
--- a/layout/reftests/forms/legend/reftest.list
+++ b/layout/reftests/forms/legend/reftest.list
@@ -1,4 +1,4 @@
 == legend.html legend-ref.html
 #bug 1418002 fuzzy-if(skiaContent,1,7) pref(dom.webcomponents.shadowdom.enabled,true) == shadow-dom.html shadow-dom-ref.html
 == 1273433.html 1273433-ref.html
-fails-if(styloVsGecko||stylo) == 1339287.html 1339287-ref.html
+fails == 1339287.html 1339287-ref.html # bug 1383868
--- a/layout/reftests/image-element/reftest.list
+++ b/layout/reftests/image-element/reftest.list
@@ -1,16 +1,16 @@
 random == bug-364968.html bug-364968-ref.html
 == bug-463204.html bug-463204-ref.html
 == canvas-outside-document.html canvas-inside-document.html
 == mozsetimageelement-01.html mozsetimageelement-01-ref.html
 == mozsetimageelement-02.html about:blank
 == image-outside-document-invalidate.html about:blank
 == canvas-outside-document-invalidate-01.html about:blank
-fails-if(azureSkia) fails-if(cocoaWidget) skip-if(styloVsGecko) == canvas-outside-document-invalidate-02.html about:blank # See bug 666800
+fails-if(azureSkia) fails-if(cocoaWidget) == canvas-outside-document-invalidate-02.html about:blank # See bug 666800
 #fails with Skia due to Skia bug http://code.google.com/p/skia/issues/detail?id=568
 == element-paint-simple.html element-paint-simple-ref.html
 == element-paint-repeated.html element-paint-repeated-ref.html
 == element-paint-recursion.html element-paint-recursion-ref.html
 == element-paint-continuation.html element-paint-continuation-ref.html
 == element-paint-transform-01.html element-paint-transform-01-ref.html
 random-if(d2d) == element-paint-transform-02.html element-paint-transform-02-ref.html # bug 587133
 fuzzy-if(d2d&&/^Windows\x20NT\x206\.1/.test(http.oscpu),16,90) == element-paint-background-size-01.html element-paint-background-size-01-ref.html
--- a/layout/reftests/layers/reftest.list
+++ b/layout/reftests/layers/reftest.list
@@ -1,31 +1,31 @@
 == move-to-background-1.html move-to-background-1-ref.html
 fuzzy-if(cocoaWidget,2,6) random-if(Android) == component-alpha-exit-1.html component-alpha-exit-1-ref.html # bug 760275
 fuzzy-if(cocoaWidget,2,6) random-if(Android) == component-alpha-enter-1.html component-alpha-enter-1-ref.html
 
 != pull-background-1.html about:blank
-skip-if(styloVsGecko) != pull-background-2.html about:blank # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
+!= pull-background-2.html about:blank
 != pull-background-3.html about:blank
 != pull-background-4.html about:blank
-fuzzy-if(styloVsGecko,1,1) != pull-background-5.html about:blank
+!= pull-background-5.html about:blank
 != pull-background-6.html about:blank
 
 # The animated-position tests are disabled for intermittent failures / passes, bug 1150941
 skip != pull-background-animated-position-1.html about:blank # Fails with event regions
 skip != pull-background-animated-position-2.html about:blank
 skip != pull-background-animated-position-3.html about:blank # Fails because PaintedLayer item assignment doesn't recognize overflow:hidden clips
 skip != pull-background-animated-position-4.html about:blank # Fails because PaintedLayer item assignment and background pulling don't recognize overflow:hidden clips
 skip != pull-background-animated-position-5.html about:blank # Fails because ownLayer bounds don't anticipate changes of animated contents, but doesn't fail with event regions
 
 skip-if(!asyncPan) != pull-background-displayport-1.html about:blank
-skip-if(!asyncPan) skip-if(styloVsGecko) != pull-background-displayport-2.html about:blank # skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
+skip-if(!asyncPan) != pull-background-displayport-2.html about:blank
 skip-if(!asyncPan) != pull-background-displayport-3.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
 skip-if(!asyncPan) != pull-background-displayport-4.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
-skip-if(!asyncPan) fuzzy-if(styloVsGecko,1,1) != pull-background-displayport-5.html about:blank
+skip-if(!asyncPan) != pull-background-displayport-5.html about:blank
 skip-if(!asyncPan) != pull-background-displayport-6.html about:blank # fails with non-overlay scrollbars and event regions due to bug 1148515
 
 fuzzy(2,30150) == opacity-blending.html opacity-blending-ref.html
 fuzzy(16,5) == mask-layer-transform.html mask-layer-transform-ref.html
 fuzzy-if(gtkWidget,1,17) fuzzy-if(Android,3,4) == forced-bg-color-outside-visible-region.html forced-bg-color-outside-visible-region-ref.html
 != layerize-over-fixed-bg-1.html about:blank
 skip-if(!asyncPan) != fixed-pos-scrolled-clip-layerize.html about:blank
 skip-if(!asyncPan) == fixed-pos-scrolled-clip-opacity-layerize.html fixed-pos-scrolled-clip-opacity-inside-layerize.html
--- a/layout/reftests/mathml/reftest.list
+++ b/layout/reftests/mathml/reftest.list
@@ -362,17 +362,17 @@ fuzzy-if(OSX,1,100) fuzzy-if(skiaContent
 == mfrac-C-2.html mfrac-C-2-ref.html
 == mfrac-C-3.html mfrac-C-3-ref.html
 == mfrac-C-4.html mfrac-C-4-ref.html
 fuzzy-if(OSX,1,100) fuzzy-if(skiaContent,1,14) == mfrac-D-1.html mfrac-D-1-ref.html
 == mfrac-D-2.html mfrac-D-2-ref.html
 == mfrac-D-3.html mfrac-D-3-ref.html
 == mfrac-D-4.html mfrac-D-4-ref.html
 == mfrac-E-1.html mfrac-E-1-ref.html
-test-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == shadow-dom-1.html shadow-dom-1-ref.html
+test-pref(dom.webcomponents.shadowdom.enabled,true) == shadow-dom-1.html shadow-dom-1-ref.html
 pref(dom.meta-viewport.enabled,true) pref(font.size.inflation.emPerLine,25) == font-inflation-1.html font-inflation-1-ref.html
 test-pref(font.minimum-size.x-math,40) == default-font.html default-font-ref.html
 != radicalbar-1.html about:blank
 != radicalbar-1a.html about:blank
 != radicalbar-1b.html about:blank
 != radicalbar-1c.html about:blank
 fails-if(webrender) != radicalbar-1d.html about:blank
 != radicalbar-2.html about:blank
--- a/layout/reftests/native-theme/reftest.list
+++ b/layout/reftests/native-theme/reftest.list
@@ -34,17 +34,17 @@ skip-if(!winWidget) != 403458-winmenu-lt
 
 == 470711-1.xul 470711-1-ref.xul
 
 == 482955-1.xul 482955-1-ref.xul
 
 == 492155-1.html about:blank
 == 492155-2.html about:blank
 == 492155-3.html about:blank
-fails-if(Android&&!asyncPan) fuzzy-if(styloVsGecko,0-1,0-1) != 492155-4.html about:blank
+fails-if(Android&&!asyncPan) != 492155-4.html about:blank
 
 != box-shadow-input.html box-shadow-input-ref.html
 != box-shadow-button.html box-shadow-button-ref.html
 != box-shadow-listbox.html box-shadow-listbox-ref.html
 != box-shadow-combobox.html box-shadow-combobox-ref.html
 
 # RTL mirroring tests
 == checkbox-not-mirrored-when-rtl.html checkbox-not-mirrored-when-rtl-ref.html
--- a/layout/reftests/pixel-rounding/reftest.list
+++ b/layout/reftests/pixel-rounding/reftest.list
@@ -174,10 +174,10 @@ fuzzy-if(skiaContent,1,145) == rounded-b
 == background-image-tiling.html background-image-tiling-ref.html
 
 != border-image-width-0.html border-image-width-10.html
 == border-image-width-4.html border-image-width-0.html
 == border-image-width-9.html border-image-width-0.html
 
 == iframe-1.html iframe-1-ref.html
 
-fuzzy-if(stylo||styloVsGecko,128,220) == viewport-units-rounding-1.html viewport-units-rounding-1-ref.html
+fuzzy(128,220) == viewport-units-rounding-1.html viewport-units-rounding-1-ref.html
 == viewport-units-rounding-2.html about:blank
--- a/layout/reftests/reftest-sanity/reftest.list
+++ b/layout/reftests/reftest-sanity/reftest.list
@@ -106,18 +106,18 @@ require-or(unrecognizedCondition,skip) s
 require-or(true&&unrecognizedCondition,skip) script scripttest-fail.html
 require-or(unrecognizedCondition&&true,skip) script scripttest-fail.html
 require-or(unrecognizedCondition,fails) script scripttest-fail.html
 require-or(true,fails) script scripttest-pass.html
 require-or(true&&true,fails) script scripttest-pass.html
 
 # tests for pref(...) syntax in manifest, including "fails" examples with incorrect prefs
 # a boolean pref
-pref(gfx.downloadable_fonts.enabled,true) skip-if(styloVsGecko) != font-download.html font-default.html
-pref(gfx.downloadable_fonts.enabled,false) skip-if(styloVsGecko) == font-download.html font-default.html
+pref(gfx.downloadable_fonts.enabled,true) != font-download.html font-default.html
+pref(gfx.downloadable_fonts.enabled,false) == font-download.html font-default.html
 fails pref(gfx.downloadable_fonts.enabled,0) == font-download.html font-default.html
 fails pref(gfx.downloadable_fonts.enabled,"foo") == font-download.html font-default.html
 # a non-existent pref
 fails pref(not.a.real.pref.name,1) == font-download.html font-default.html
 # an integer pref
 pref(font.size.variable.x-western,16) == font-size-16.html font-default.html
 pref(font.size.variable.x-western,16) != font-size-24.html font-default.html
 pref(font.size.variable.x-western,24) == font-size-24.html font-default.html
@@ -127,41 +127,41 @@ fails pref(font.size.variable.x-western,
 # a string pref
 pref(font.default.x-western,"serif") == font-serif.html font-default.html
 pref(font.default.x-western,"serif") != font-sans-serif.html font-default.html
 pref(font.default.x-western,"sans-serif") == font-sans-serif.html font-default.html
 pref(font.default.x-western,"sans-serif") != font-serif.html font-default.html
 fails pref(font.default.x-western,true) == font-serif.html font-default.html
 fails pref(font.default.x-western,0) == font-serif.html font-default.html
 # tests for ref-pref, and test-pref
-ref-pref(font.size.variable.x-western,16) skip-if(styloVsGecko) == font-size-16.html font-default.html
-ref-pref(font.size.variable.x-western,16) skip-if(styloVsGecko) != font-size-24.html font-default.html
-ref-pref(font.size.variable.x-western,24) skip-if(styloVsGecko) == font-size-24.html font-default.html
-ref-pref(font.size.variable.x-western,24) skip-if(styloVsGecko) != font-size-16.html font-default.html
+ref-pref(font.size.variable.x-western,16) == font-size-16.html font-default.html
+ref-pref(font.size.variable.x-western,16) != font-size-24.html font-default.html
+ref-pref(font.size.variable.x-western,24) == font-size-24.html font-default.html
+ref-pref(font.size.variable.x-western,24) != font-size-16.html font-default.html
 fails ref-pref(font.size.variable.x-western,false) == font-size-16.html font-default.html
 fails ref-pref(font.size.variable.x-western,"foo") == font-size-16.html font-default.html
 test-pref(font.size.variable.x-western,16) == font-default.html font-size-16.html
 test-pref(font.size.variable.x-western,16) != font-default.html font-size-24.html
 test-pref(font.size.variable.x-western,24) == font-default.html font-size-24.html
 test-pref(font.size.variable.x-western,24) != font-default.html font-size-16.html
 fails test-pref(font.size.variable.x-western,false) == font-default.html font-size-16.html
 fails test-pref(font.size.variable.x-western,"foo") == font-default.html font-size-16.html
-ref-pref(font.size.variable.x-western,16) test-pref(font.size.variable.x-western,24) skip-if(styloVsGecko) != font-default.html font-default.html
-ref-pref(font.size.variable.x-western,24) test-pref(font.size.variable.x-western,16) skip-if(styloVsGecko) != font-default.html font-default.html
-ref-pref(font.size.variable.x-western,24) test-pref(font.size.variable.x-western,24) skip-if(styloVsGecko) == font-default.html font-default.html
+ref-pref(font.size.variable.x-western,16) test-pref(font.size.variable.x-western,24) != font-default.html font-default.html
+ref-pref(font.size.variable.x-western,24) test-pref(font.size.variable.x-western,16) != font-default.html font-default.html
+ref-pref(font.size.variable.x-western,24) test-pref(font.size.variable.x-western,24) == font-default.html font-default.html
 
 # reftest syntax: fuzzy(maxPixelDifference,maxNumberDifferingPixels)
 fuzzy(1,250000) == fuzzy.html fuzzy-ref.html
 fuzzy(1,250000) != too-fuzzy.html fuzzy-ref.html
 fuzzy-if(true,1,250000) == fuzzy.html fuzzy-ref.html
 fuzzy-if(false,2,1) == fuzzy-ref.html fuzzy-ref.html
 # test some ranged fuzzes
-fuzzy(1-10,1-250000) fuzzy-if(false,5-10,250000) skip-if(styloVsGecko) == fuzzy.html fuzzy-ref.html
-fuzzy(0-0,250000) skip-if(styloVsGecko) != fuzzy.html fuzzy-ref.html
-fuzzy(1,0-2) skip-if(styloVsGecko) != fuzzy.html fuzzy-ref.html
+fuzzy(1-10,1-250000) fuzzy-if(false,5-10,250000) == fuzzy.html fuzzy-ref.html
+fuzzy(0-0,250000) != fuzzy.html fuzzy-ref.html
+fuzzy(1,0-2) != fuzzy.html fuzzy-ref.html
 # If enabled, the following two should result in UNEXPECTED-PASS because
 # they are both overfuzzed
 # fuzzy(3-4,250000) == fuzzy.html fuzzy-ref.html
 # fuzzy(1,250001-250002) == fuzzy.html fuzzy-ref.html
 #
 # When using 565 fuzzy.html and fuzzy-ref.html will compare as equal
 fails fuzzy-if(false,2,1) random-if(Android) == fuzzy.html fuzzy-ref.html
 
--- a/layout/reftests/reftest.list
+++ b/layout/reftests/reftest.list
@@ -295,17 +295,17 @@ include pixel-rounding/reftest.list
 # plugin/
 include ../../dom/plugins/test/reftest/reftest.list
 
 # position-dynamic-changes/
 include position-dynamic-changes/reftest.list
 
 # printing
 # SkiaPDF is required for printing tests to control printing to PDF files.
-skip-if(!skiaPdf||styloVsGecko) include printing/reftest.list
+skip-if(!skiaPdf) include printing/reftest.list
 
 # pagination
 include pagination/reftest.list
 
 # scrolling
 include scrolling/reftest.list
 
 # selection
--- a/layout/reftests/scrolling/reftest.list
+++ b/layout/reftests/scrolling/reftest.list
@@ -1,9 +1,9 @@
-skip-if(styloVsGecko) HTTP == deferred-anchor.xhtml#d deferred-anchor-ref.xhtml#d # bug 1354406
+HTTP == deferred-anchor.xhtml#d deferred-anchor-ref.xhtml#d
 fuzzy-if(xulRuntime.widgetToolkit=="gtk3",1,23) == deferred-anchor2.xhtml deferred-anchor-ref.xhtml#d # bug 1182632
 HTTP == fixed-1.html fixed-1.html?ref
 fuzzy-if(skiaContent,1,32200) HTTP == fixed-table-1.html fixed-table-1.html?ref
 HTTP == fixed-opacity-1.html fixed-opacity-1.html?ref
 HTTP == fixed-opacity-2.html fixed-opacity-2.html?ref
 random-if(gtkWidget) fuzzy-if(Android,3,60) HTTP == fixed-text-1.html fixed-text-1.html?ref
 HTTP == fixed-text-2.html fixed-text-2.html?ref
 random-if(Android) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),1,12) == iframe-border-radius.html iframe-border-radius-ref.html # bug 760269
@@ -17,17 +17,17 @@ pref(layout.css.scroll-behavior.enabled,
 pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-5.html scroll-behavior-5.html?ref
 pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-6.html scroll-behavior-6.html?ref
 pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-7.html scroll-behavior-7.html?ref
 pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-8.html scroll-behavior-8.html?ref
 pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-9.html scroll-behavior-9.html?ref
 pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-10.html scroll-behavior-10.html?ref
 pref(layout.css.scroll-behavior.enabled,true) pref(layout.css.scroll-behavior.property-enabled,true) == scroll-behavior-textarea.html scroll-behavior-textarea.html?ref
 HTTP == simple-1.html simple-1.html?ref
-skip-if(styloVsGecko) HTTP == subpixel-1.html#d subpixel-1-ref.html#d # bug 1354406
+HTTP == subpixel-1.html#d subpixel-1-ref.html#d
 fuzzy-if(Android,4,120) HTTP == text-1.html text-1.html?ref
 fuzzy-if(Android,4,120) HTTP == text-2.html?up text-2.html?ref
 fuzzy-if(d2d,1,4) fuzzy-if(webrender,0-1,0-42) HTTP == transformed-1.html transformed-1.html?ref
 fuzzy-if(webrender,0-1,0-43) HTTP == transformed-1.html?up transformed-1.html?ref
 fuzzy-if(Android,5,20000) == uncovering-1.html uncovering-1-ref.html
 fuzzy-if(Android,5,20000) == uncovering-2.html uncovering-2-ref.html
 fuzzy-if(asyncPan&&!layersGPUAccelerated,149,4520) == less-than-scrollbar-height.html less-than-scrollbar-height-ref.html
 == huge-horizontal-overflow.html huge-horizontal-overflow-ref.html
--- a/layout/reftests/svg/smil/reftest.list
+++ b/layout/reftests/svg/smil/reftest.list
@@ -137,17 +137,17 @@ fuzzy-if(skiaContent,1,600) == anim-feGa
 
 # animate some boolean attributes:
 == anim-feConvolveMatrix-preserveAlpha-01.svg lime.svg
 
 # animate some viewBox attributes
 fuzzy-if(Android,4,1) == anim-svg-viewBox-01.svg lime.svg
 == anim-svg-viewBox-02.svg lime.svg
 == anim-svg-viewBox-03.svg lime.svg
-skip-if(styloVsGecko) == anim-view-01.svg#view lime.svg # bug 1354406
+== anim-view-01.svg#view lime.svg
 
 # animate some preserveAspectRatio attributes
 == anim-feImage-preserveAspectRatio-01.svg lime.svg
 == anim-svg-preserveAspectRatio-01.svg lime.svg
 
 # animate some string attributes:
 == anim-filter-href-01.svg lime.svg
 == anim-gradient-href-01.svg lime.svg
--- a/layout/reftests/svg/smil/style/reftest.list
+++ b/layout/reftests/svg/smil/style/reftest.list
@@ -48,19 +48,19 @@ fuzzy-if(skiaContent,1,580) == anim-css-
 # check handling of overflowing color values
 # NOTE: Some of the tests below fail in Gecko because we compute
 # "from + by" as the animation end-point, and we clamp that final color value
 # (due to bug 515919) and use the clamped value for interpolation.
 # That's earlier than the SVG spec wants us to clamp -- we're only supposed to
 # clamp *final presentation values*.
 # (Reference: SVG 1.1 Appendix F.4)
 == anim-css-fill-overflow-1-by.svg       anim-css-fill-overflow-1-ref.svg
-fails-if(!stylo) == anim-css-fill-overflow-1-from-by.svg anim-css-fill-overflow-1-ref.svg # bug 515919
-fails-if(!stylo) == anim-css-stopcolor-overflow-1-from-by.svg anim-css-stopcolor-overflow-1-ref.svg # bug 515919
-fails-if(!stylo) == anim-css-floodcolor-overflow-1-from-by.svg anim-css-floodcolor-overflow-1-ref.svg # bug 515919
+== anim-css-fill-overflow-1-from-by.svg anim-css-fill-overflow-1-ref.svg # bug 515919
+== anim-css-stopcolor-overflow-1-from-by.svg anim-css-stopcolor-overflow-1-ref.svg # bug 515919
+== anim-css-floodcolor-overflow-1-from-by.svg anim-css-floodcolor-overflow-1-ref.svg # bug 515919
 
 # 'fill-opacity' property
 fuzzy-if(skiaContent,1,885) == anim-css-fillopacity-1-by.svg            anim-css-fillopacity-1-ref.svg
 fuzzy-if(skiaContent,1,210) == anim-css-fillopacity-1-from-by.svg       anim-css-fillopacity-1-ref.svg
 == anim-css-fillopacity-1-from-to.svg       anim-css-fillopacity-1-ref.svg
 fuzzy-if(skiaContent,1,550) == anim-css-fillopacity-1-to.svg            anim-css-fillopacity-1-ref.svg
 == anim-css-fillopacity-2-paced.svg         anim-css-fillopacity-2-ref.svg
 fails == anim-css-fillopacity-3-clamp-big.svg     anim-css-fillopacity-3-ref.svg # bug 501188
--- a/layout/reftests/svg/svg-integration/reftest.list
+++ b/layout/reftests/svg/svg-integration/reftest.list
@@ -21,17 +21,17 @@ fuzzy-if(Android,255,30) == clipPath-htm
 == conditions-outer-svg-01.xhtml ../pass.svg
 == conditions-outer-svg-02.xhtml ../pass.svg
 == dynamic-conditions-outer-svg-01.xhtml ../pass.svg
 == dynamic-conditions-outer-svg-02.xhtml ../pass.svg
 == dynamic-conditions-outer-svg-03.xhtml ../pass.svg
 == dynamic-conditions-outer-svg-04.xhtml ../pass.svg
 == filter-html-01.xhtml filter-html-01-ref.svg
 == filter-html-dynamic-01.xhtml filter-html-dynamic-01-ref.xhtml
-random-if(Android) skip-if(styloVsGecko) == filter-html-01-extref.xhtml filter-html-01-ref.svg # Android: bug 1198380. skip styloVsGecko for imperceptible pixel rounding differences between Stylo and Gecko
+random-if(Android) == filter-html-01-extref.xhtml filter-html-01-ref.svg # Android: bug 1198380
 == filter-html-zoomed-01.xhtml filter-html-01-ref.svg
 fuzzy-if(webrender,1,125414) == mask-html-01.xhtml mask-html-01-ref.svg
 fuzzy-if(webrender,1,125414) == mask-html-01-extref-01.xhtml mask-html-01-ref.svg
 random == mask-html-01-extref-02.xhtml mask-html-01-ref.svg # random due to bug 877661
 fuzzy-if(webrender,1,125414) == mask-html-zoomed-01.xhtml mask-html-01-ref.svg
 fuzzy-if(webrender,1,125414) == mask-html-xbl-bound-01.html mask-html-01-ref.svg
 == mask-transformed-html-01.xhtml ../pass.svg
 == mask-transformed-html-02.xhtml ../pass.svg
--- a/layout/reftests/table-background/reftest.list
+++ b/layout/reftests/table-background/reftest.list
@@ -1,16 +1,16 @@
 # these could be moved to crashtests
 != backgr_border-table-cell.html empty.html
-fuzzy-if(styloVsGecko,5,330) != backgr_border-table-column-group.html empty.html # Bug 1386543
+!= backgr_border-table-column-group.html empty.html
 # This seems to be caused by bug 527825
-fuzzy-if(styloVsGecko,5,579) asserts-if(gtkWidget,0-12) != backgr_border-table-column.html empty.html # Bug 1386543
-asserts-if(gtkWidget,0-6) fuzzy-if(styloVsGecko&&(winWidget||cocoaWidget),32,88) != backgr_border-table-quirks.html empty.html
-fuzzy-if(styloVsGecko,1,168) != backgr_border-table-row-group.html empty.html # Bug 1386543
-fuzzy-if(styloVsGecko,1,204) != backgr_border-table-row.html empty.html # Bug 1386543
+asserts-if(gtkWidget,0-12) != backgr_border-table-column.html empty.html
+asserts-if(gtkWidget,0-6) != backgr_border-table-quirks.html empty.html
+!= backgr_border-table-row-group.html empty.html
+!= backgr_border-table-row.html empty.html
 != backgr_border-table.html empty.html
 != backgr_fixed-bg.html empty.html
 != backgr_index.html empty.html
 != backgr_layers-hide.html empty.html
 != backgr_layers-opacity.html empty.html
 != backgr_layers-show.html empty.html
 != backgr_position-table-cell.html empty.html
 != backgr_position-table-column-group.html empty.html
--- a/layout/reftests/text/reftest.list
+++ b/layout/reftests/text/reftest.list
@@ -146,17 +146,17 @@ fuzzy-if(gtkWidget,1,177) fuzzy-if(skiaC
 # the following will fail when rendering with Core Text (see bug 389074) due to what appears to be
 # an Apple bug: the presence of ZWNJ disturbs the positioning of an adjacent glyph. rdar://6427865
 random-if(cocoaWidget) random-if(gtkWidget) == zwnj-01.xhtml zwnj-01-ref.xhtml # gtkWidget:bug 1309113
 == zwnj-02.xhtml zwnj-02-ref.xhtml
 != zwnj-01.html zwnj-01-notref.html
 == initial-zwj-1.html initial-zwj-1-ref.html
 == cgj-01.html cgj-01-ref.html
 == 444656.html 444656-ref.html
-fails-if(cocoaWidget&&styloVsGecko) == 449555-1.html 449555-1-ref.html
+== 449555-1.html 449555-1-ref.html
 == 467722.html 467722-ref.html
 fuzzy-if(skiaContent,1,600) == 475092-sub.html 475092-ref.html
 fails-if(Android) fuzzy-if(skiaContent&&!Android,90,3100) == 475092-pos.html 475092-sub.html # bug 482596
 == 476378-soft-hyphen-fallback.html 476378-soft-hyphen-fallback-ref.html
 # Test for bug 484954
 == rgba-text.html rgba-text-ref.html
 # Test for bug 575695, 'kern' table support
 != kerning-01.html kerning-01-notref.html
@@ -322,17 +322,17 @@ pref(gfx.font_rendering.graphite.enabled
 == hyphenation-control-3.html hyphenation-control-3-ref.html
 == hyphenation-control-4.html hyphenation-control-4-ref.html
 
 # osx-font-smoothing - with and without subpixel AA, only under OSX
 fails-if(!cocoaWidget) != osx-font-smoothing.html osx-font-smoothing-ref.html
 fails-if(!cocoaWidget) != osx-font-smoothing-2.html osx-font-smoothing-2-notref.html
 == osx-font-smoothing-2.html osx-font-smoothing-2-ref.html
 
-pref(layout.css.text-align-unsafe-value.enabled,true) fails-if(styloVsGecko||stylo) == text-align-unsafe.html text-align-unsafe-ref.html
+pref(layout.css.text-align-unsafe-value.enabled,true) fails == text-align-unsafe.html text-align-unsafe-ref.html # bug 1388949
 
 # stray control chars should be visible by default, bug 1099557
 != control-chars-01a.html control-chars-01-notref.html
 != control-chars-01b.html control-chars-01-notref.html
 != control-chars-01c.html control-chars-01-notref.html
 != control-chars-01d.html control-chars-01-notref.html
 != control-chars-02.html control-chars-02-notref.html
 == control-chars-03a.html control-chars-03-ref.html
--- a/layout/reftests/transform/reftest.list
+++ b/layout/reftests/transform/reftest.list
@@ -137,13 +137,11 @@ pref(svg.transform-box.enabled,true) == 
 == transform-origin-svg-2b.svg transform-origin-svg-2-ref.svg
 # Bug 1122526
 == animate-layer-scale-inherit-1.html animate-layer-scale-inherit-1-ref.html
 == animate-layer-scale-inherit-2.html animate-layer-scale-inherit-2-ref.html
 == animate-layer-scale-inherit-3.html animate-layer-scale-inherit-1-ref.html
 # Bug 1301500
 == dynamic-add-without-change-cb-1.html dynamic-add-without-change-cb-1-ref.html
 fuzzy-if(d2d,1,5) fuzzy-if(skiaContent,26,208) == table-overflowed-by-animation.html table-overflowed-by-animation-ref.html
-# Bug 1392161. These tests are failed on Gecko (Bug 1396535). The viewport
-# length transform test is also failed on Servo backend.
-fails-if(!stylo) == translate-rounding-1.html translate-rounding-ref.html
-fails-if(!stylo) == translate-rounding-2.html translate-rounding-ref.html
-fails == translate-rounding-3.html translate-rounding-viewport-ref.html
+== translate-rounding-1.html translate-rounding-ref.html
+== translate-rounding-2.html translate-rounding-ref.html
+fails == translate-rounding-3.html translate-rounding-viewport-ref.html # bug 1397146
--- a/layout/reftests/w3c-css/failures.list
+++ b/layout/reftests/w3c-css/failures.list
@@ -30,19 +30,16 @@ fuzzy-if(OSX||Android,78,197) css-values
 fuzzy(50,160) css-values/ch-unit-002.html
 fuzzy(78,197) css-values/ch-unit-004.html
 
 # Bug 435426
 fails css-values/attr-*.html
       css-values/attr-*-invalid-fallback.html
       css-values/attr-invalid-type-???.html
 
-# Bug 1256575
-fails-if(!stylo||styloVsGecko) css-values/calc-in-media-queries-???.html
-
 # because of dynamic change
 skip css-values/vh_not_refreshing_on_chrome.html
 skip css-values/vh_not_refreshing_on_chrome_iframe.html
 
 # because of support files (in iframe subdir) not being copied (bug 1256580)
 skip css-values/vh-support-transform-origin.html
 skip css-values/vh-support-transform-translate.html
 
--- a/layout/reftests/w3c-css/received/reftest.list
+++ b/layout/reftests/w3c-css/received/reftest.list
@@ -207,18 +207,18 @@ fails == css-values/attr-length-invalid-
 == css-values/attr-length-invalid-fallback.html css-values/reference/200-200-green.html
 fails == css-values/attr-length-valid-zero-nofallback.html css-values/reference/200-200-green.html
 fails == css-values/attr-length-valid-zero.html css-values/reference/200-200-green.html
 fails == css-values/attr-length-valid.html css-values/reference/200-200-green.html
 fails == css-values/attr-px-invalid-cast.html css-values/reference/200-200-green.html
 == css-values/attr-px-invalid-fallback.html css-values/reference/200-200-green.html
 fails == css-values/attr-px-valid.html css-values/reference/200-200-green.html
 == css-values/calc-in-calc.html css-values/reference/all-green.html
-fails-if(!stylo||styloVsGecko) == css-values/calc-in-media-queries-001.html css-values/reference/all-green.html
-fails-if(!stylo||styloVsGecko) == css-values/calc-in-media-queries-002.html css-values/reference/all-green.html
+== css-values/calc-in-media-queries-001.html css-values/reference/all-green.html
+== css-values/calc-in-media-queries-002.html css-values/reference/all-green.html
 == css-values/calc-invalid-range-clamping.html css-values/reference/200-200-green.html
 == css-values/calc-parenthesis-stack.html css-values/reference/all-green.html
 fuzzy-if(OSX||Android,78,197) == css-values/ch-unit-001.html css-values/reference/ch-unit-001-ref.html
 fuzzy(50,160) == css-values/ch-unit-002.html css-values/reference/ch-unit-002-ref.html
 fails == css-values/ch-unit-003.html css-values/reference/ch-unit-001-ref.html
 fuzzy(78,197) == css-values/ch-unit-004.html css-values/reference/ch-unit-001-ref.html
 skip == css-values/ex-calc-expression-001.html css-values/ex-calc-expression-001-ref.html
 skip == css-values/ic-unit-001.html css-values/reference/ic-unit-001-ref.html
--- a/layout/reftests/w3c-css/submitted/transforms/reftest.list
+++ b/layout/reftests/w3c-css/submitted/transforms/reftest.list
@@ -1,16 +1,14 @@
 == transform-containing-block-dynamic-1a.html containing-block-dynamic-1-ref.html
 == transform-containing-block-dynamic-1b.html containing-block-dynamic-1-ref.html
 == perspective-containing-block-dynamic-1a.html containing-block-dynamic-1-ref.html
 == perspective-containing-block-dynamic-1b.html containing-block-dynamic-1-ref.html
 == perspective-zero.html reference/green.html
 == perspective-zero-2.html perspective-zero-2-ref.html
 
 default-preferences pref(layout.css.individual-transform.enabled,true)
-# stylo-vs-gecko comparison fails since we support individual transform on new
-# style system only.
-fails-if(!stylo||styloVsGecko) == individual-transform-1.html individual-transform-1-ref.html
-fails-if(!stylo||styloVsGecko) == individual-transform-2a.html individual-transform-2-ref.html
-fails-if(!stylo||styloVsGecko) == individual-transform-2b.html individual-transform-2-ref.html
-fails-if(!stylo||styloVsGecko) == individual-transform-2c.html individual-transform-2-ref.html
-fails-if(!stylo||styloVsGecko) == individual-transform-2d.html individual-transform-2-ref.html
-fails-if(!stylo||styloVsGecko) == individual-transform-2e.html individual-transform-2-ref.html
+== individual-transform-1.html individual-transform-1-ref.html
+== individual-transform-2a.html individual-transform-2-ref.html
+== individual-transform-2b.html individual-transform-2-ref.html
+== individual-transform-2c.html individual-transform-2-ref.html
+== individual-transform-2d.html individual-transform-2-ref.html
+== individual-transform-2e.html individual-transform-2-ref.html
--- a/layout/reftests/webcomponents/reftest.list
+++ b/layout/reftests/webcomponents/reftest.list
@@ -1,23 +1,23 @@
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == cross-tree-selection-1.html cross-tree-selection-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-shadow-1.html basic-shadow-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-shadow-2.html basic-shadow-2-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-shadow-3.html basic-shadow-3-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-shadow-4.html basic-shadow-4-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == fallback-content-1.html fallback-content-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == remove-insertion-point-1.html remove-insertion-point-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == nested-insertion-point-1.html nested-insertion-point-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) == update-dist-node-descendants-1.html update-dist-node-descendants-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) fuzzy-if(Android,2,7) == input-transition-1.html input-transition-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) == dynamic-insertion-point-distribution-1.html dynamic-insertion-point-distribution-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) == dynamic-insertion-point-distribution-2.html dynamic-insertion-point-distribution-2-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == remove-append-shadow-host-1.html remove-append-shadow-host-1-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == reframe-shadow-child-1.html reframe-shadow-child-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == reframe-shadow-child-2.html reframe-shadow-child-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == style-sharing.html style-sharing-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) skip-if(!stylo||styloVsGecko) == style-sharing-across-shadow.html style-sharing-ref.html # bug 1412400
+pref(dom.webcomponents.shadowdom.enabled,true) == cross-tree-selection-1.html cross-tree-selection-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == basic-shadow-1.html basic-shadow-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == basic-shadow-2.html basic-shadow-2-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == basic-shadow-3.html basic-shadow-3-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == basic-shadow-4.html basic-shadow-4-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == fallback-content-1.html fallback-content-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == remove-insertion-point-1.html remove-insertion-point-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == nested-insertion-point-1.html nested-insertion-point-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == update-dist-node-descendants-1.html update-dist-node-descendants-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) fuzzy-if(Android,2,7) == input-transition-1.html input-transition-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == dynamic-insertion-point-distribution-1.html dynamic-insertion-point-distribution-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == dynamic-insertion-point-distribution-2.html dynamic-insertion-point-distribution-2-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == remove-append-shadow-host-1.html remove-append-shadow-host-1-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == reframe-shadow-child-1.html reframe-shadow-child-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == reframe-shadow-child-2.html reframe-shadow-child-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == style-sharing.html style-sharing-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == style-sharing-across-shadow.html style-sharing-ref.html # bug 1412400
 pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-1.html basic-slot-1-ref.html
 pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-2.html basic-slot-2-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-slot-3.html basic-slot-3-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-slot-4.html basic-slot-3-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-slot-5.html basic-slot-5-ref.html
-pref(dom.webcomponents.shadowdom.enabled,true) fails-if(!stylo||styloVsGecko) == basic-slot-6.html basic-slot-6-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-3.html basic-slot-3-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-4.html basic-slot-3-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-5.html basic-slot-5-ref.html
+pref(dom.webcomponents.shadowdom.enabled,true) == basic-slot-6.html basic-slot-6-ref.html
--- a/layout/style/crashtests/crashtests.list
+++ b/layout/style/crashtests/crashtests.list
@@ -261,14 +261,14 @@ load 1411143.html
 load 1411478.html
 load 1413288.html
 load 1413361.html
 load 1413670.html
 load 1415663.html
 pref(dom.webcomponents.shadowdom.enabled,true) load 1415353.html
 pref(dom.webcomponents.shadowdom.enabled,true) load 1415021.html
 load 1418059.html
-skip-if(!stylo) test-pref(dom.animations-api.core.enabled,true) load 1418867.html
+test-pref(dom.animations-api.core.enabled,true) load 1418867.html
 pref(dom.webcomponents.shadowdom.enabled,true) load 1419554.html
 load 1426312.html
 load 1439793.html
 load 1409183.html
 pref(dom.webcomponents.shadowdom.enabled,true) load 1445682.html
--- a/layout/style/test/mochitest.ini
+++ b/layout/style/test/mochitest.ini
@@ -161,17 +161,16 @@ support-files = file_bug1089417_iframe.h
 [test_bug1232829.html]
 [test_bug1292447.html]
 [test_bug1371488.html]
 [test_bug1375944.html]
 support-files = file_bug1375944.html Ahem.ttf
 [test_bug1382568.html]
 support-files = bug1382568-iframe.html
 [test_bug1394302.html]
-skip-if = !stylo # This is a stylo test; gecko isn't deterministic here
 [test_bug1443344-1.html]
 scheme = https
 support-files = file_bug1443344.css
 [test_bug1443344-2.html]
 scheme = https
 support-files = file_bug1443344.css
 [test_cascade.html]
 [test_ch_ex_no_infloops.html]
@@ -181,17 +180,16 @@ support-files = file_bug1443344.css
 [test_compute_data_with_start_struct.html]
 skip-if = toolkit == 'android'
 [test_computed_style.html]
 [test_computed_style_bfcache_display_none.html]
 [test_computed_style_grid_with_pseudo.html]
 [test_computed_style_in_created_document.html]
 [test_computed_style_min_size_auto.html]
 [test_computed_style_no_flush.html]
-skip-if = !stylo # gecko will fail without some hack, see bug 1401857
 [test_computed_style_no_pseudo.html]
 [test_computed_style_prefs.html]
 [test_condition_text.html]
 [test_condition_text_assignment.html]
 [test_contain_formatting_context.html]
 [test_counter_descriptor_storage.html]
 [test_counter_style.html]
 [test_crash_with_content_policy.html]
@@ -201,17 +199,16 @@ skip-if = toolkit == 'android' #bug 5366
 [test_css_eof_handling.html]
 [test_css_escape_api.html]
 [test_css_function_mismatched_parenthesis.html]
 [test_css_loader_crossorigin_data_url.html]
 [test_css_parse_error_smoketest.html]
 [test_css_supports.html]
 [test_css_supports_variables.html]
 [test_custom_content_inheritance.html]
-skip-if = !stylo # Gecko fails this and messes up inheritance
 [test_default_bidi_css.html]
 [test_default_computed_style.html]
 [test_descriptor_storage.html]
 [test_descriptor_syntax_errors.html]
 [test_dont_use_document_colors.html]
 [test_dynamic_change_causing_reflow.html]
 [test_exposed_prop_accessors.html]
 [test_extra_inherit_initial.html]
@@ -243,17 +240,16 @@ support-files =
 [test_ident_escaping.html]
 [test_inherit_computation.html]
 skip-if = toolkit == 'android'
 [test_inherit_storage.html]
 [test_initial_computation.html]
 skip-if = toolkit == 'android'
 [test_initial_storage.html]
 [test_invalidation_basic.html]
-skip-if = !stylo
 [test_keyframes_rules.html]
 [test_keyframes_vendor_prefix.html]
 [test_load_events_on_stylesheets.html]
 support-files = slow_broken_sheet.sjs slow_ok_sheet.sjs
 [test_logical_properties.html]
 [test_media_queries.html]
 skip-if = android_version == '18' #debug-only failure; timed out #Android 4.3 aws only; bug 1030419
 [test_media_queries_dynamic.html]
@@ -304,17 +300,16 @@ support-files =
 [test_shorthand_property_getters.html]
 [test_specified_value_serialization.html]
 support-files = file_specified_value_serialization_individual_transforms.html
 [test_style_attr_listener.html]
 [test_style_attribute_quirks.html]
 [test_style_attribute_standards.html]
 [test_style_struct_copy_constructors.html]
 [test_stylesheet_additions.html]
-skip-if = !stylo
 [test_stylesheet_clone_font_face.html]
 [test_supports_rules.html]
 [test_system_font_serialization.html]
 [test_text_decoration_shorthands.html]
 [test_transitions_and_reframes.html]
 [test_transitions_and_restyles.html]
 [test_transitions_and_zoom.html]
 [test_transitions_at_start.html]
--- a/layout/tools/reftest/globals.jsm
+++ b/layout/tools/reftest/globals.jsm
@@ -65,17 +65,16 @@ for (let [key, val] of Object.entries({
     cleanupPendingCrashes: false,
     totalChunks: 0,
     thisChunk: 0,
     containingWindow: null,
     urlFilterRegex: {},
     contentGfxInfo: null,
     focusFilterMode: "all",
     compareRetainedDisplayLists: false,
-    compareStyloToGecko: false,
 
     browser: undefined,
     // Are we testing web content loaded in a separate process?
     browserIsRemote: undefined,        // bool
     // Are we using <iframe mozbrowser>?
     browserIsIframe: undefined,        // bool
     browserMessageManager: undefined,  // bool
     canvas1: undefined,
--- a/layout/tools/reftest/manifest.jsm
+++ b/layout/tools/reftest/manifest.jsm
@@ -63,20 +63,16 @@ function ReadManifest(aURL, aFilter)
     var sandbox = BuildConditionSandbox(aURL);
     var lineNo = 0;
     var urlprefix = "";
     var defaultTestPrefSettings = [], defaultRefPrefSettings = [];
     if (g.compareRetainedDisplayLists) {
         AddRetainedDisplayListTestPrefs(sandbox, defaultTestPrefSettings,
                                         defaultRefPrefSettings);
     }
-    if (g.compareStyloToGecko) {
-        AddStyloTestPrefs(sandbox, defaultTestPrefSettings,
-                          defaultRefPrefSettings);
-    }
     for (var str of lines) {
         ++lineNo;
         if (str.charAt(0) == "#")
             continue; // entire line was a comment
         var i = str.search(/\s+#/);
         if (i >= 0)
             str = str.substring(0, i);
         // strip leading and trailing whitespace
@@ -105,20 +101,16 @@ function ReadManifest(aURL, aFilter)
                 if (!AddPrefSettings(m[1], m[2], m[3], sandbox, defaultTestPrefSettings, defaultRefPrefSettings)) {
                     throw "Error in pref value in manifest file " + aURL.spec + " line " + lineNo;
                 }
             }
             if (g.compareRetainedDisplayLists) {
                 AddRetainedDisplayListTestPrefs(sandbox, defaultTestPrefSettings,
                                                 defaultRefPrefSettings);
             }
-            if (g.compareStyloToGecko) {
-                AddStyloTestPrefs(sandbox, defaultTestPrefSettings,
-                                  defaultRefPrefSettings);
-            }
             continue;
         }
 
         var expected_status = EXPECTED_PASS;
         var allow_silent_fail = false;
         var minAsserts = 0;
         var maxAsserts = 0;
         var needs_focus = false;
@@ -322,17 +314,17 @@ function ReadManifest(aURL, aFilter)
 
             if (items[0] == TYPE_REFTEST_NOTEQUAL &&
                 expected_status == EXPECTED_FUZZY &&
                 (fuzzy_delta.min > 0 || fuzzy_pixels.min > 0)) {
                 throw "Error in manifest file " + aURL.spec + " line " + lineNo + ": minimum fuzz must be zero for tests of type " + items[0];
             }
 
             var type = items[0];
-            if (g.compareStyloToGecko || g.compareRetainedDisplayLists) {
+            if (g.compareRetainedDisplayLists) {
                 type = TYPE_REFTEST_EQUAL;
 
                 // We expect twice as many assertion failures when running in
                 // styloVsGecko mode because we run each test twice: once in
                 // Stylo mode and once in Gecko mode.
                 minAsserts *= 2;
                 maxAsserts *= 2;
 
@@ -496,21 +488,19 @@ sandbox.compareRetainedDisplayLists = g.
     // the real check in `nsLayoutUtils.cpp` to ensure they test the same way.
     if (env.get("STYLO_FORCE_ENABLED")) {
         styloEnabled = true;
     } else if (env.get("STYLO_FORCE_DISABLED")) {
         styloEnabled = false;
     } else {
         styloEnabled = prefs.getBoolPref("layout.css.servo.enabled", false);
     }
-    sandbox.stylo = styloEnabled && !g.compareStyloToGecko;
-    sandbox.styloVsGecko = g.compareStyloToGecko;
+    sandbox.stylo = styloEnabled;
 #else
     sandbox.stylo = false;
-    sandbox.styloVsGecko = false;
 #endif
 
     sandbox.skiaPdf = false;
 
 #ifdef RELEASE_OR_BETA
     sandbox.release_or_beta = true;
 #else
     sandbox.release_or_beta = false;
@@ -578,23 +568,16 @@ sandbox.compareRetainedDisplayLists = g.
 function AddRetainedDisplayListTestPrefs(aSandbox, aTestPrefSettings,
                                          aRefPrefSettings) {
     AddPrefSettings("test-", "layout.display-list.retain", "true", aSandbox,
                     aTestPrefSettings, aRefPrefSettings);
     AddPrefSettings("ref-", "layout.display-list.retain", "false", aSandbox,
                     aTestPrefSettings, aRefPrefSettings);
 }
 
-function AddStyloTestPrefs(aSandbox, aTestPrefSettings, aRefPrefSettings) {
-    AddPrefSettings("test-", "layout.css.servo.enabled", "true", aSandbox,
-                    aTestPrefSettings, aRefPrefSettings);
-    AddPrefSettings("ref-", "layout.css.servo.enabled", "false", aSandbox,
-                    aTestPrefSettings, aRefPrefSettings);
-}
-
 function AddPrefSettings(aWhere, aPrefName, aPrefValExpression, aSandbox, aTestPrefSettings, aRefPrefSettings) {
     var prefVal = Cu.evalInSandbox("(" + aPrefValExpression + ")", aSandbox);
     var prefType;
     var valType = typeof(prefVal);
     if (valType == "boolean") {
         prefType = PREF_BOOLEAN;
     } else if (valType == "string") {
         prefType = PREF_STRING;
@@ -602,18 +585,17 @@ function AddPrefSettings(aWhere, aPrefNa
         prefType = PREF_INTEGER;
     } else {
         return false;
     }
     var setting = { name: aPrefName,
                     type: prefType,
                     value: prefVal };
 
-    if ((g.compareStyloToGecko && aPrefName != "layout.css.servo.enabled") ||
-        (g.compareRetainedDisplayLists && aPrefName != "layout.display-list.retain")) {
+    if (g.compareRetainedDisplayLists && aPrefName != "layout.display-list.retain") {
         // ref-pref() is ignored, test-pref() and pref() are added to both
         if (aWhere != "ref-") {
             aTestPrefSettings.push(setting);
             aRefPrefSettings.push(setting);
         }
     } else {
         if (aWhere != "ref-") {
             aTestPrefSettings.push(setting);
@@ -685,18 +667,16 @@ function CreateUrls(test) {
         var testURI = g.ioService.newURI(file, null, testbase);
         secMan.checkLoadURIWithPrincipal(principal, testURI,
                                          Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT);
         return testURI;
     }
 
     let files = [test.url1, test.url2];
     [test.url1, test.url2] = files.map(FileToURI);
-    if (test.url2 && g.compareStyloToGecko)
-        test.url2 = test.url1;
 
     return test;
 }
 
 function AddTestItem(aTest, aFilter) {
     if (!aFilter)
         aFilter = [null, [], false];
 
--- a/layout/tools/reftest/reftest.jsm
+++ b/layout/tools/reftest/reftest.jsm
@@ -260,21 +260,16 @@ function InitAndStartRefTests()
 
     try {
         g.focusFilterMode = prefs.getCharPref("reftest.focusFilterMode");
     } catch(e) {}
 
     try {
         g.compareRetainedDisplayLists = prefs.getBoolPref("reftest.compareRetainedDisplayLists");
     } catch (e) {}
-#ifdef MOZ_STYLO
-    try {
-        g.compareStyloToGecko = prefs.getBoolPref("reftest.compareStyloToGecko");
-    } catch(e) {}
-#endif
 
 #ifdef MOZ_ENABLE_SKIA_PDF
     try {
         // We have to disable printing via parent or else silent print operations
         // (the type that we use here) would be treated as non-silent -- in other
         // words, a print dialog would appear for each print operation, which
         // would interrupt the test run.
         // See http://searchfox.org/mozilla-central/rev/bd39b6170f04afeefc751a23bb04e18bbd10352b/layout/printing/nsPrintEngine.cpp#617
--- a/netwerk/base/nsStandardURL.cpp
+++ b/netwerk/base/nsStandardURL.cpp
@@ -3585,20 +3585,39 @@ nsStandardURL::Write(nsIObjectOutputStre
 inline
 ipc::StandardURLSegment
 ToIPCSegment(const nsStandardURL::URLSegment& aSegment)
 {
     return ipc::StandardURLSegment(aSegment.mPos, aSegment.mLen);
 }
 
 inline
-nsStandardURL::URLSegment
-FromIPCSegment(const ipc::StandardURLSegment& aSegment)
+MOZ_MUST_USE bool
+FromIPCSegment(const nsACString& aSpec, const ipc::StandardURLSegment& aSegment, nsStandardURL::URLSegment& aTarget)
 {
-    return nsStandardURL::URLSegment(aSegment.position(), aSegment.length());
+    // This seems to be just an empty segment.
+    if (aSegment.length() == -1) {
+        aTarget = nsStandardURL::URLSegment();
+        return true;
+    }
+
+    // A value of -1 means an empty segment, but < -1 is undefined.
+    if (NS_WARN_IF(aSegment.length() < -1)) {
+        return false;
+    }
+
+    // Make sure the segment does not extend beyond the spec.
+    if (NS_WARN_IF(aSegment.position() + aSegment.length() > aSpec.Length())) {
+        return false;
+    }
+
+    aTarget.mPos = aSegment.position();
+    aTarget.mLen = aSegment.length();
+
+    return true;
 }
 
 void
 nsStandardURL::Serialize(URIParams& aParams)
 {
     MOZ_ASSERT(mSpec.Length() <= (uint32_t) net_GetURLMaxLength(),
                "The spec should never be this long, we missed a check.");
     StandardURLParams params;
@@ -3655,32 +3674,47 @@ nsStandardURL::Deserialize(const URIPara
         default:
             NS_NOTREACHED("bad urlType");
             return false;
     }
 
     mPort = params.port();
     mDefaultPort = params.defaultPort();
     mSpec = params.spec();
-    mScheme = FromIPCSegment(params.scheme());
-    mAuthority = FromIPCSegment(params.authority());
-    mUsername = FromIPCSegment(params.username());
-    mPassword = FromIPCSegment(params.password());
-    mHost = FromIPCSegment(params.host());
-    mPath = FromIPCSegment(params.path());
-    mFilepath = FromIPCSegment(params.filePath());
-    mDirectory = FromIPCSegment(params.directory());
-    mBasename = FromIPCSegment(params.baseName());
-    mExtension = FromIPCSegment(params.extension());
-    mQuery = FromIPCSegment(params.query());
-    mRef = FromIPCSegment(params.ref());
+    NS_ENSURE_TRUE(mSpec.Length() <= (uint32_t) net_GetURLMaxLength(), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.scheme(), mScheme), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.authority(), mAuthority), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.username(), mUsername), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.password(), mPassword), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.host(), mHost), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.path(), mPath), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.filePath(), mFilepath), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.directory(), mDirectory), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.baseName(), mBasename), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.extension(), mExtension), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.query(), mQuery), false);
+    NS_ENSURE_TRUE(FromIPCSegment(mSpec, params.ref(), mRef), false);
+
     mMutable = params.isMutable();
     mSupportsFileURL = params.supportsFileURL();
 
     // mSpecEncoding and mDisplayHost are just caches that can be recovered as needed.
+
+    // Some sanity checks
+    NS_ENSURE_TRUE(mScheme.mPos == 0, false);
+    NS_ENSURE_TRUE(mScheme.mLen > 0, false);
+    // Make sure scheme is followed by :// (3 characters)
+    NS_ENSURE_TRUE(mScheme.mLen < INT32_MAX - 3, false); // avoid overflow
+    NS_ENSURE_TRUE(mSpec.Length() >= (uint32_t) mScheme.mLen + 3, false);
+    NS_ENSURE_TRUE(nsDependentCSubstring(mSpec, mScheme.mLen, 3).EqualsLiteral("://"), false);
+    NS_ENSURE_TRUE(mPath.mLen != -1 && mSpec.CharAt(mPath.mPos) == '/', false);
+    NS_ENSURE_TRUE(mPath.mPos == mFilepath.mPos, false);
+    NS_ENSURE_TRUE(mQuery.mLen == -1 || mSpec.CharAt(mQuery.mPos - 1) == '?', false);
+    NS_ENSURE_TRUE(mRef.mLen == -1 || mSpec.CharAt(mRef.mPos - 1) == '#', false);
+
     return true;
 }
 
 //----------------------------------------------------------------------------
 // nsStandardURL::nsIClassInfo
 //----------------------------------------------------------------------------
 
 NS_IMETHODIMP
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -212,16 +212,17 @@ HttpBaseChannel::HttpBaseChannel()
   , mDecodedBodySize(0)
   , mEncodedBodySize(0)
   , mRequestContextID(0)
   , mContentWindowId(0)
   , mTopLevelOuterContentWindowId(0)
   , mRequireCORSPreflight(false)
   , mReportCollector(new ConsoleReportCollector())
   , mAltDataLength(0)
+  , mAltDataForChild(false)
   , mForceMainDocumentChannel(false)
   , mIsTrackingResource(false)
   , mLastRedirectFlags(0)
   , mReqContentLength(0U)
   , mReqContentLengthDetermined(false)
 {
   LOG(("Creating HttpBaseChannel @%p\n", this));
 
@@ -3684,16 +3685,18 @@ HttpBaseChannel::SetupReplacementChannel
 
     // Preserve Redirect mode flag.
     rv = httpInternal->SetRedirectMode(mRedirectMode);
     MOZ_ASSERT(NS_SUCCEEDED(rv));
 
     // Preserve Integrity metadata.
     rv = httpInternal->SetIntegrityMetadata(mIntegrityMetadata);
     MOZ_ASSERT(NS_SUCCEEDED(rv));
+
+    httpInternal->SetAltDataForChild(mAltDataForChild);
   }
 
   // transfer application cache information
   nsCOMPtr<nsIApplicationCacheChannel> appCacheChannel =
     do_QueryInterface(newChannel);
   if (appCacheChannel) {
     appCacheChannel->SetApplicationCache(mApplicationCache);
     appCacheChannel->SetInheritApplicationCache(mInheritApplicationCache);
@@ -4433,16 +4436,22 @@ void
 HttpBaseChannel::SetCorsPreflightParameters(const nsTArray<nsCString>& aUnsafeHeaders)
 {
   MOZ_RELEASE_ASSERT(!mRequestObserversCalled);
 
   mRequireCORSPreflight = true;
   mUnsafeHeaders = aUnsafeHeaders;
 }
 
+void
+HttpBaseChannel::SetAltDataForChild(bool aIsForChild)
+{
+  mAltDataForChild = aIsForChild;
+}
+
 NS_IMETHODIMP
 HttpBaseChannel::GetBlockAuthPrompt(bool* aValue)
 {
   if (!aValue) {
     return NS_ERROR_FAILURE;
   }
 
   *aValue = mBlockAuthPrompt;
--- a/netwerk/protocol/http/HttpBaseChannel.h
+++ b/netwerk/protocol/http/HttpBaseChannel.h
@@ -258,16 +258,17 @@ public:
   NS_IMETHOD GetRedirectMode(uint32_t* aRedirectMode) override;
   NS_IMETHOD SetRedirectMode(uint32_t aRedirectMode) override;
   NS_IMETHOD GetFetchCacheMode(uint32_t* aFetchCacheMode) override;
   NS_IMETHOD SetFetchCacheMode(uint32_t aFetchCacheMode) override;
   NS_IMETHOD GetTopWindowURI(nsIURI **aTopWindowURI) override;
   NS_IMETHOD SetTopWindowURIIfUnknown(nsIURI *aTopWindowURI) override;
   NS_IMETHOD GetProxyURI(nsIURI **proxyURI) override;
   virtual void SetCorsPreflightParameters(const nsTArray<nsCString>& unsafeHeaders) override;
+  virtual void SetAltDataForChild(bool aIsForChild) override;
   NS_IMETHOD GetConnectionInfoHashKey(nsACString& aConnectionInfoHashKey) override;
   NS_IMETHOD GetIntegrityMetadata(nsAString& aIntegrityMetadata) override;
   NS_IMETHOD SetIntegrityMetadata(const nsAString& aIntegrityMetadata) override;
   NS_IMETHOD GetLastRedirectFlags(uint32_t *aValue) override;
   NS_IMETHOD SetLastRedirectFlags(uint32_t aValue) override;
 
   inline void CleanRedirectCacheChainIfNecessary()
   {
@@ -699,16 +700,19 @@ protected:
 
   nsCOMPtr<nsIConsoleReportCollector> mReportCollector;
 
   // Holds the name of the preferred alt-data type.
   nsCString mPreferredCachedAltDataType;
   // Holds the name of the alternative data type the channel returned.
   nsCString mAvailableCachedAltDataType;
   int64_t   mAltDataLength;
+  // This flag will be true if the consumer is requesting alt-data AND the
+  // consumer is in the child process.
+  bool mAltDataForChild;
 
   bool mForceMainDocumentChannel;
   Atomic<bool, ReleaseAcquire> mIsTrackingResource;
 
   uint64_t mChannelId;
 
   // If this channel was created as the result of a redirect, then this value
   // will reflect the redirect flags passed to the SetupReplacementChannel()
--- a/netwerk/protocol/http/HttpChannelParent.cpp
+++ b/netwerk/protocol/http/HttpChannelParent.cpp
@@ -694,18 +694,24 @@ HttpChannelParent::DoAsyncOpen(  const U
 
   nsCOMPtr<nsICacheInfoChannel> cacheChannel =
     do_QueryInterface(static_cast<nsIChannel*>(httpChannel.get()));
   if (cacheChannel) {
     cacheChannel->SetCacheKey(cacheKey);
     cacheChannel->PreferAlternativeDataType(aPreferredAlternativeType);
 
     cacheChannel->SetAllowStaleCacheContent(aAllowStaleCacheContent);
+
+    // This is to mark that the results are going to the content process.
+    if (httpChannelImpl) {
+      httpChannelImpl->SetAltDataForChild(true);
+    }
   }
 
+
   httpChannel->SetContentType(aContentTypeHint);
 
   if (priority != nsISupportsPriority::PRIORITY_NORMAL) {
     httpChannel->SetPriority(priority);
   }
   if (classOfService) {
     httpChannel->SetClassFlags(classOfService);
   }
@@ -2271,17 +2277,21 @@ HttpChannelParent::NotifyDiversionFailed
 nsresult
 HttpChannelParent::OpenAlternativeOutputStream(const nsACString & type, nsIOutputStream * *_retval)
 {
   // We need to make sure the child does not call SendDocumentChannelCleanup()
   // before opening the altOutputStream, because that clears mCacheEntry.
   if (!mCacheEntry) {
     return NS_ERROR_NOT_AVAILABLE;
   }
-  return mCacheEntry->OpenAlternativeOutputStream(type, _retval);
+  nsresult rv = mCacheEntry->OpenAlternativeOutputStream(type, _retval);
+  if (NS_SUCCEEDED(rv)) {
+    mCacheEntry->SetMetaDataElement("alt-data-from-child", "1");
+  }
+  return rv;
 }
 
 NS_IMETHODIMP
 HttpChannelParent::GetAuthPrompt(uint32_t aPromptReason, const nsIID& iid,
                                  void** aResult)
 {
   nsCOMPtr<nsIAuthPrompt2> prompt =
     new NeckoParent::NestedFrameAuthPrompt(Manager(), mNestedFrameId);
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -4783,17 +4783,26 @@ nsHttpChannel::OpenCacheInputStream(nsIC
     }
 
     // Open an input stream for the entity, so that the call to OpenInputStream
     // happens off the main thread.
     nsCOMPtr<nsIInputStream> stream;
 
     // If an alternate representation was requested, try to open the alt
     // input stream.
-    if (!mPreferredCachedAltDataType.IsEmpty()) {
+    // If the entry has a "is-from-child" metadata, then only open the altdata stream if the consumer is also from child.
+    bool altDataFromChild = false;
+    {
+        nsCString value;
+        rv = cacheEntry->GetMetaDataElement("alt-data-from-child",
+                                            getter_Copies(value));
+        altDataFromChild = !value.IsEmpty();
+    }
+
+    if (!mPreferredCachedAltDataType.IsEmpty() && (altDataFromChild == mAltDataForChild)) {
         rv = cacheEntry->OpenAlternativeInputStream(mPreferredCachedAltDataType,
                                                     getter_AddRefs(stream));
         if (NS_SUCCEEDED(rv)) {
             // We have succeeded.
             mAvailableCachedAltDataType = mPreferredCachedAltDataType;
             // Set the correct data size on the channel.
             int64_t altDataSize;
             if (NS_SUCCEEDED(cacheEntry->GetAltDataSize(&altDataSize))) {
@@ -7869,17 +7878,23 @@ NS_IMETHODIMP
 nsHttpChannel::OpenAlternativeOutputStream(const nsACString & type, nsIOutputStream * *_retval)
 {
     // OnStopRequest will clear mCacheEntry, but we may use mAltDataCacheEntry
     // if the consumer called PreferAlternativeDataType()
     nsCOMPtr<nsICacheEntry> cacheEntry = mCacheEntry ? mCacheEntry : mAltDataCacheEntry;
     if (!cacheEntry) {
         return NS_ERROR_NOT_AVAILABLE;
     }
-    return cacheEntry->OpenAlternativeOutputStream(type, _retval);
+    nsresult rv = cacheEntry->OpenAlternativeOutputStream(type, _retval);
+    if (NS_SUCCEEDED(rv)) {
+        // Clear this metadata flag in case it exists.
+        // The caller of this method may set it again.
+        cacheEntry->SetMetaDataElement("alt-data-from-child", nullptr);
+    }
+    return rv;
 }
 
 //-----------------------------------------------------------------------------
 // nsHttpChannel::nsICachingChannel
 //-----------------------------------------------------------------------------
 
 NS_IMETHODIMP
 nsHttpChannel::GetCacheToken(nsISupports **token)
--- a/netwerk/protocol/http/nsIHttpChannelInternal.idl
+++ b/netwerk/protocol/http/nsIHttpChannelInternal.idl
@@ -297,16 +297,19 @@ interface nsIHttpChannelInternal : nsISu
 
     /**
      * Make cross-origin CORS loads happen with a CORS preflight, and specify
      * the CORS preflight parameters.
      */
     [noscript, notxpcom, nostdcall]
     void setCorsPreflightParameters(in StringArrayRef unsafeHeaders);
 
+    [noscript, notxpcom, nostdcall]
+    void setAltDataForChild(in boolean aIsForChild);
+
     /**
      * When set to true, the channel will not pop any authentication prompts up
      * to the user.  When provided or cached credentials lead to an
      * authentication failure, that failure will be propagated to the channel
      * listener.  Must be called before opening the channel, otherwise throws.
      */
     [infallible]
     attribute boolean blockAuthPrompt;
--- a/netwerk/protocol/viewsource/nsViewSourceChannel.cpp
+++ b/netwerk/protocol/viewsource/nsViewSourceChannel.cpp
@@ -1114,16 +1114,22 @@ nsViewSourceChannel::SetIsMainDocumentCh
 
 // Have to manually forward SetCorsPreflightParameters since it's [notxpcom]
 void
 nsViewSourceChannel::SetCorsPreflightParameters(const nsTArray<nsCString>& aUnsafeHeaders)
 {
   mHttpChannelInternal->SetCorsPreflightParameters(aUnsafeHeaders);
 }
 
+void
+nsViewSourceChannel::SetAltDataForChild(bool aIsForChild)
+{
+    mHttpChannelInternal->SetAltDataForChild(aIsForChild);
+}
+
 NS_IMETHODIMP
 nsViewSourceChannel::LogBlockedCORSRequest(const nsAString& aMessage)
 {
   if (!mHttpChannel) {
     NS_WARNING("nsViewSourceChannel::LogBlockedCORSRequest mHttpChannel is null");
     return NS_ERROR_UNEXPECTED;
   }
   return mHttpChannel->LogBlockedCORSRequest(aMessage);
copy from netwerk/test/unit/test_alt-data_simple.js
copy to netwerk/test/unit/test_alt-data_cross_process.js
--- a/netwerk/test/unit/test_alt-data_simple.js
+++ b/netwerk/test/unit/test_alt-data_cross_process.js
@@ -67,28 +67,22 @@ function check_has_alt_data_in_index(aHa
   }
   var hasAltData = {};
   cache_storage.getCacheIndexEntryAttrs(createURI(URL), "", hasAltData, {});
   Assert.equal(hasAltData.value, aHasAltData);
 }
 
 function run_test()
 {
-  do_get_profile();
   httpServer = new HttpServer();
   httpServer.registerPathHandler("/content", contentHandler);
   httpServer.start(-1);
   do_test_pending();
 
-  if (!inChildProcess()) {
-    cache_storage = getCacheStorage("disk") ;
-    wait_for_cache_index(asyncOpen);
-  } else {
-    asyncOpen();
-  }
+  asyncOpen();
 }
 
 function asyncOpen()
 {
   var chan = make_channel(URL);
 
   var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
   cc.preferAlternativeDataType(altContentType);
@@ -108,34 +102,24 @@ function readServerContent(request, buff
     var os = cc.openAlternativeOutputStream(altContentType);
     os.write(altContent, altContent.length);
     os.close();
 
     executeSoon(flushAndOpenAltChannel);
   });
 }
 
-// needs to be rooted
-var cacheFlushObserver = cacheFlushObserver = { observe: function() {
-  cacheFlushObserver = null;
-  openAltChannel();
-}};
-
 function flushAndOpenAltChannel()
 {
   // We need to do a GC pass to ensure the cache entry has been freed.
   gc();
-  if (!inChildProcess()) {
-    Services.cache2.QueryInterface(Ci.nsICacheTesting).flush(cacheFlushObserver);
-  } else {
-    do_send_remote_message('flush');
-    do_await_remote_message('flushed').then(() => {
-      openAltChannel();
-    });
-  }
+  do_send_remote_message('flush');
+  do_await_remote_message('flushed').then(() => {
+    openAltChannel();
+  });
 }
 
 function openAltChannel() {
   var chan = make_channel(URL);
   var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
   cc.preferAlternativeDataType(altContentType);
 
   chan.asyncOpen2(new ChannelListener(readAltContent, null));
@@ -143,33 +127,15 @@ function openAltChannel() {
 
 function readAltContent(request, buffer)
 {
   var cc = request.QueryInterface(Ci.nsICacheInfoChannel);
 
   Assert.equal(servedNotModified, true);
   Assert.equal(cc.alternativeDataType, altContentType);
   Assert.equal(buffer, altContent);
-  check_has_alt_data_in_index(true);
 
-  requestAgain();
-}
-
-function requestAgain()
-{
-  shouldPassRevalidation = false;
-  var chan = make_channel(URL);
-  var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
-  cc.preferAlternativeDataType(altContentType);
-  chan.asyncOpen2(new ChannelListener(readEmptyAltContent, null));
+  // FINISH
+  do_send_remote_message('done');
+  do_await_remote_message('finish').then(() => {
+    httpServer.stop(do_test_finished);
+  });
 }
-
-function readEmptyAltContent(request, buffer)
-{
-  var cc = request.QueryInterface(Ci.nsICacheInfoChannel);
-
-  // the cache is overwrite and the alt-data is reset
-  Assert.equal(cc.alternativeDataType, "");
-  Assert.equal(buffer, responseContent2);
-  check_has_alt_data_in_index(false);
-
-  httpServer.stop(do_test_finished);
-}
--- a/netwerk/test/unit/xpcshell.ini
+++ b/netwerk/test/unit/xpcshell.ini
@@ -15,16 +15,17 @@ support-files =
   data/test_readline6.txt
   data/test_readline7.txt
   data/test_readline8.txt
   data/signed_win.exe
   socks_client_subprocess.js
   test_link.desktop
   test_link.url
   ../../dns/effective_tld_names.dat
+  test_alt-data_cross_process.js
 
 [test_network_activity.js]
 [test_nsIBufferedOutputStream_writeFrom_block.js]
 [test_cache2-00-service-get.js]
 [test_cache2-01-basic.js]
 [test_cache2-01a-basic-readonly.js]
 [test_cache2-01b-basic-datasize.js]
 [test_cache2-01c-basic-hasmeta-only.js]
copy from netwerk/test/unit_ipc/test_alt-data_simple_wrap.js
copy to netwerk/test/unit_ipc/test_alt-data_cross_process_wrap.js
--- a/netwerk/test/unit_ipc/test_alt-data_simple_wrap.js
+++ b/netwerk/test/unit_ipc/test_alt-data_cross_process_wrap.js
@@ -1,15 +1,81 @@
 ChromeUtils.import("resource://gre/modules/Services.jsm");
+ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
 
 // needs to be rooted
 var cacheFlushObserver = { observe: function() {
   cacheFlushObserver = null;
   do_send_remote_message('flushed');
 }};
 
+// We get this from the child a bit later
+var URL = null;
+
+// needs to be rooted
+var cacheFlushObserver2 = { observe: function() {
+  cacheFlushObserver2 = null;
+  openAltChannel();
+}};
+
 function run_test() {
   do_get_profile();
   do_await_remote_message('flush').then(() => {
     Services.cache2.QueryInterface(Ci.nsICacheTesting).flush(cacheFlushObserver);
   });
-  run_test_in_child("../unit/test_alt-data_simple.js");
+
+  do_await_remote_message('done').then(() => { sendCommand("URL;", load_channel); });
+
+  run_test_in_child("../unit/test_alt-data_cross_process.js");
+}
+
+function load_channel(url) {
+  ok(url);
+  URL = url; // save this to open the alt data channel later
+  var chan = make_channel(url);
+  var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
+  cc.preferAlternativeDataType("text/binary");
+  chan.asyncOpen2(new ChannelListener(readTextData, null));
+}
+
+function make_channel(url, callback, ctx) {
+  return NetUtil.newChannel({uri: url, loadUsingSystemPrincipal: true});
 }
+
+function readTextData(request, buffer)
+{
+  var cc = request.QueryInterface(Ci.nsICacheInfoChannel);
+  // Since we are in a different process from what that generated the alt-data,
+  // we should receive the original data, not processed content.
+  Assert.equal(cc.alternativeDataType, "");
+  Assert.equal(buffer, "response body");
+
+  // Now let's generate some alt-data in the parent, and make sure we can get it
+  var altContent = "altContentParentGenerated";
+  executeSoon(() => {
+    var os = cc.openAlternativeOutputStream("text/parent-binary");
+    os.write(altContent, altContent.length);
+    os.close();
+
+    executeSoon(() => {
+      Services.cache2.QueryInterface(Ci.nsICacheTesting).flush(cacheFlushObserver2);
+    });
+  });
+}
+
+function openAltChannel() {
+  var chan = make_channel(URL);
+  var cc = chan.QueryInterface(Ci.nsICacheInfoChannel);
+  cc.preferAlternativeDataType("text/parent-binary");
+  chan.asyncOpen2(new ChannelListener(readAltData, null));
+}
+
+function readAltData(request, buffer)
+{
+  var cc = request.QueryInterface(Ci.nsICacheInfoChannel);
+
+  // This was generated in the parent, so it's OK to get it.
+  Assert.equal(buffer, "altContentParentGenerated");
+  Assert.equal(cc.alternativeDataType, "text/parent-binary");
+
+  // FINISH
+  do_send_remote_message('finish');
+}
--- a/netwerk/test/unit_ipc/xpcshell.ini
+++ b/netwerk/test/unit_ipc/xpcshell.ini
@@ -54,16 +54,17 @@ support-files =
   !/netwerk/test/unit/data/test_readline7.txt
   !/netwerk/test/unit/data/test_readline8.txt
   !/netwerk/test/unit/data/signed_win.exe
   !/netwerk/test/unit/test_alt-data_simple.js
   !/netwerk/test/unit/test_alt-data_stream.js
   !/netwerk/test/unit/test_channel_priority.js
   !/netwerk/test/unit/test_multipart_streamconv.js
   !/netwerk/test/unit/test_original_sent_received_head.js
+  !/netwerk/test/unit/test_alt-data_cross_process.js
 
 [test_bug528292_wrap.js]
 [test_bug248970_cookie_wrap.js]
 [test_cacheflags_wrap.js]
 [test_cache-entry-id_wrap.js]
 [test_cache_jar_wrap.js]
 [test_channel_close_wrap.js]
 [test_cookie_header_wrap.js]
@@ -101,8 +102,9 @@ skip-if = true
 [test_alt-data_simple_wrap.js]
 [test_alt-data_stream_wrap.js]
 [test_original_sent_received_head_wrap.js]
 [test_channel_id.js]
 [test_trackingProtection_annotateChannels_wrap1.js]
 [test_trackingProtection_annotateChannels_wrap2.js]
 [test_channel_priority_wrap.js]
 [test_multipart_streamconv_wrap.js]
+[test_alt-data_cross_process_wrap.js]
--- a/python/mozbuild/mozbuild/test/frontend/data/files-test-metadata/default/tests/reftests/reftest.list
+++ b/python/mozbuild/mozbuild/test/frontend/data/files-test-metadata/default/tests/reftests/reftest.list
@@ -1,1 +1,1 @@
-fails-if(styloVsGecko) == test1.html test1-ref.html
\ No newline at end of file
+== test1.html test1-ref.html
--- a/python/mozbuild/mozbuild/test/frontend/data/test-manifest-emitted-includes/reftest.list
+++ b/python/mozbuild/mozbuild/test/frontend/data/test-manifest-emitted-includes/reftest.list
@@ -1,2 +1,2 @@
-fails-if(styloVsGecko) == reftest1.html reftest1-ref.html
+== reftest1.html reftest1-ref.html
 include included-reftest.list
--- a/python/mozbuild/mozbuild/test/frontend/data/test-manifest-keys-extracted/reftest.list
+++ b/python/mozbuild/mozbuild/test/frontend/data/test-manifest-keys-extracted/reftest.list
@@ -1,1 +1,1 @@
-fails-if(styloVsGecko) == reftest1.html reftest1-ref.html
+== reftest1.html reftest1-ref.html
--- a/security/sandbox/chromium-shim/base/logging.cpp
+++ b/security/sandbox/chromium-shim/base/logging.cpp
@@ -23,16 +23,17 @@
 #endif
 
 #if defined(OS_WIN)
 #include "base/strings/utf_string_conversions.h"
 #endif
 
 #include <algorithm>
 
+#include "mozilla/Assertions.h"
 #include "mozilla/Unused.h"
 
 namespace logging {
 
 namespace {
 
 int g_min_log_level = 0;
 
@@ -110,16 +111,19 @@ LogMessage::LogMessage(const char* file,
 
 LogMessage::LogMessage(const char* file, int line, LogSeverity severity,
                        std::string* result)
     : severity_(severity), file_(file), line_(line) {
   delete result;
 }
 
 LogMessage::~LogMessage() {
+  if (severity_ == LOG_FATAL) {
+    MOZ_CRASH("Hit fatal chromium sandbox condition.");
+  }
 }
 
 SystemErrorCode GetLastSystemErrorCode() {
 #if defined(OS_WIN)
   return ::GetLastError();
 #elif defined(OS_POSIX)
   return errno;
 #else
deleted file mode 100644
--- a/security/sandbox/chromium-shim/patches/after_update/change_USER_NON_ADMIN_to_blacklist.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-# HG changeset patch
-# User Bob Owen <bobowencode@gmail.com>
-# Date 1486465183 0
-#      Tue Feb 07 10:59:43 2017 +0000
-# Node ID 69c8c415e87bd14843e26488e9cff30e39d69750
-# Parent  945bec53811d358e3c668405bc1feb63e671782a
-Change USER_NON_ADMIN access token level from whitelist to blacklist containing Admin SIDs. r=jimm
-
-Originally landed in changeset:
-https://hg.mozilla.org/mozilla-central/rev/0e6bf137521e
-
-diff --git a/security/sandbox/chromium/sandbox/win/src/restricted_token.cc b/security/sandbox/chromium/sandbox/win/src/restricted_token.cc
---- a/security/sandbox/chromium/sandbox/win/src/restricted_token.cc
-+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token.cc
-@@ -254,16 +254,50 @@ DWORD RestrictedToken::AddAllSidsForDeny
-             reinterpret_cast<SID*>(token_groups->Groups[i].Sid));
-       }
-     }
-   }
- 
-   return ERROR_SUCCESS;
- }
- 
-+DWORD RestrictedToken::AddDenyOnlySids(const std::vector<Sid>& deny_only_sids) {
-+  DCHECK(init_);
-+  if (!init_) {
-+    return ERROR_NO_TOKEN;
-+  }
-+
-+  DWORD error;
-+  std::unique_ptr<BYTE[]> buffer =
-+    GetTokenInfo(effective_token_, TokenGroups, &error);
-+
-+  if (!buffer) {
-+    return error;
-+  }
-+
-+  TOKEN_GROUPS* token_groups = reinterpret_cast<TOKEN_GROUPS*>(buffer.get());
-+
-+  // Build the list of the deny only group SIDs
-+  for (unsigned int i = 0; i < token_groups->GroupCount ; ++i) {
-+    if ((token_groups->Groups[i].Attributes & SE_GROUP_INTEGRITY) == 0 &&
-+        (token_groups->Groups[i].Attributes & SE_GROUP_LOGON_ID) == 0) {
-+      for (unsigned int j = 0; j < deny_only_sids.size(); ++j) {
-+        if (::EqualSid(const_cast<SID*>(deny_only_sids[j].GetPSID()),
-+                       token_groups->Groups[i].Sid)) {
-+          sids_for_deny_only_.push_back(
-+              reinterpret_cast<SID*>(token_groups->Groups[i].Sid));
-+          break;
-+        }
-+      }
-+    }
-+  }
-+
-+  return ERROR_SUCCESS;
-+}
-+
- DWORD RestrictedToken::AddSidForDenyOnly(const Sid &sid) {
-   DCHECK(init_);
-   if (!init_)
-     return ERROR_NO_TOKEN;
- 
-   sids_for_deny_only_.push_back(sid);
-   return ERROR_SUCCESS;
- }
-diff --git a/security/sandbox/chromium/sandbox/win/src/restricted_token.h b/security/sandbox/chromium/sandbox/win/src/restricted_token.h
---- a/security/sandbox/chromium/sandbox/win/src/restricted_token.h
-+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token.h
-@@ -83,16 +83,27 @@ class RestrictedToken {
-   //    std::vector<Sid> sid_exceptions;
-   //    sid_exceptions.push_back(ATL::Sids::Users().GetPSID());
-   //    sid_exceptions.push_back(ATL::Sids::World().GetPSID());
-   //    restricted_token.AddAllSidsForDenyOnly(&sid_exceptions);
-   // Note: A Sid marked for Deny Only in a token cannot be used to grant
-   // access to any resource. It can only be used to deny access.
-   DWORD AddAllSidsForDenyOnly(std::vector<Sid> *exceptions);
- 
-+  // Lists all sids in the token and mark them as Deny Only if present in the
-+  // deny_only_sids parameter.
-+  //
-+  // If the function succeeds, the return value is ERROR_SUCCESS. If the
-+  // function fails, the return value is the win32 error code corresponding to
-+  // the error.
-+  //
-+  // Note: A Sid marked for Deny Only in a token cannot be used to grant
-+  // access to any resource. It can only be used to deny access.
-+  DWORD AddDenyOnlySids(const std::vector<Sid>& deny_only_sids);
-+
-   // Adds a user or group SID for Deny Only in the restricted token.
-   // Parameter: sid is the SID to add in the Deny Only list.
-   // The return value is always ERROR_SUCCESS.
-   //
-   // Sample Usage:
-   //    restricted_token.AddSidForDenyOnly(ATL::Sids::Admins().GetPSID());
-   DWORD AddSidForDenyOnly(const Sid &sid);
- 
-diff --git a/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc b/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc
---- a/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc
-+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc
-@@ -26,16 +26,17 @@ DWORD CreateRestrictedToken(TokenLevel s
-                             base::win::ScopedHandle* token) {
-   RestrictedToken restricted_token;
-   restricted_token.Init(NULL);  // Initialized with the current process token
-   if (lockdown_default_dacl)
-     restricted_token.SetLockdownDefaultDacl();
- 
-   std::vector<base::string16> privilege_exceptions;
-   std::vector<Sid> sid_exceptions;
-+  std::vector<Sid> deny_only_sids;
- 
-   bool deny_sids = true;
-   bool remove_privileges = true;
- 
-   switch (security_level) {
-     case USER_UNPROTECTED: {
-       deny_sids = false;
-       remove_privileges = false;
-@@ -50,20 +51,26 @@ DWORD CreateRestrictedToken(TokenLevel s
-         if (ERROR_SUCCESS != err_code) {
-           return err_code;
-         }
-       }
- 
-       break;
-     }
-     case USER_NON_ADMIN: {
--      sid_exceptions.push_back(WinBuiltinUsersSid);
--      sid_exceptions.push_back(WinWorldSid);
--      sid_exceptions.push_back(WinInteractiveSid);
--      sid_exceptions.push_back(WinAuthenticatedUserSid);
-+      deny_sids = false;
-+      deny_only_sids.push_back(WinBuiltinAdministratorsSid);
-+      deny_only_sids.push_back(WinAccountAdministratorSid);
-+      deny_only_sids.push_back(WinAccountDomainAdminsSid);
-+      deny_only_sids.push_back(WinAccountCertAdminsSid);
-+      deny_only_sids.push_back(WinAccountSchemaAdminsSid);
-+      deny_only_sids.push_back(WinAccountEnterpriseAdminsSid);
-+      deny_only_sids.push_back(WinAccountPolicyAdminsSid);
-+      deny_only_sids.push_back(WinBuiltinHyperVAdminsSid);
-+      deny_only_sids.push_back(WinLocalAccountAndAdministratorSid);
-       privilege_exceptions.push_back(SE_CHANGE_NOTIFY_NAME);
-       break;
-     }
-     case USER_INTERACTIVE: {
-       sid_exceptions.push_back(WinBuiltinUsersSid);
-       sid_exceptions.push_back(WinWorldSid);
-       sid_exceptions.push_back(WinInteractiveSid);
-       sid_exceptions.push_back(WinAuthenticatedUserSid);
-@@ -116,16 +123,21 @@ DWORD CreateRestrictedToken(TokenLevel s
-     }
-   }
- 
-   DWORD err_code = ERROR_SUCCESS;
-   if (deny_sids) {
-     err_code = restricted_token.AddAllSidsForDenyOnly(&sid_exceptions);
-     if (ERROR_SUCCESS != err_code)
-       return err_code;
-+  } else if (!deny_only_sids.empty()) {
-+    err_code = restricted_token.AddDenyOnlySids(deny_only_sids);
-+    if (ERROR_SUCCESS != err_code) {
-+      return err_code;
-+    }
-   }
- 
-   if (remove_privileges) {
-     err_code = restricted_token.DeleteAllPrivileges(&privilege_exceptions);
-     if (ERROR_SUCCESS != err_code)
-       return err_code;
-   }
- 
--- a/security/sandbox/chromium-shim/patches/after_update/patch_order.txt
+++ b/security/sandbox/chromium-shim/patches/after_update/patch_order.txt
@@ -1,7 +1,6 @@
 add_interception_logging.patch
 allow_rules_for_network_drive_and_non_file_devices.patch
 add_WOW64_flags_to_allowed_registry_read_flags.patch
-change_USER_NON_ADMIN_to_blacklist.patch
 consult_PermissionsService_for_file_access.patch
 allow_flash_temporary_files.patch
 use_STARTF_FORCEOFFFEEDBACK_flag.patch
--- a/security/sandbox/chromium/sandbox/win/src/restricted_token.cc
+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token.cc
@@ -254,50 +254,16 @@ DWORD RestrictedToken::AddAllSidsForDeny
             reinterpret_cast<SID*>(token_groups->Groups[i].Sid));
       }
     }
   }
 
   return ERROR_SUCCESS;
 }
 
-DWORD RestrictedToken::AddDenyOnlySids(const std::vector<Sid>& deny_only_sids) {
-  DCHECK(init_);
-  if (!init_) {
-    return ERROR_NO_TOKEN;
-  }
-
-  DWORD error;
-  std::unique_ptr<BYTE[]> buffer =
-    GetTokenInfo(effective_token_, TokenGroups, &error);
-
-  if (!buffer) {
-    return error;
-  }
-
-  TOKEN_GROUPS* token_groups = reinterpret_cast<TOKEN_GROUPS*>(buffer.get());
-
-  // Build the list of the deny only group SIDs
-  for (unsigned int i = 0; i < token_groups->GroupCount ; ++i) {
-    if ((token_groups->Groups[i].Attributes & SE_GROUP_INTEGRITY) == 0 &&
-        (token_groups->Groups[i].Attributes & SE_GROUP_LOGON_ID) == 0) {
-      for (unsigned int j = 0; j < deny_only_sids.size(); ++j) {
-        if (::EqualSid(const_cast<SID*>(deny_only_sids[j].GetPSID()),
-                       token_groups->Groups[i].Sid)) {
-          sids_for_deny_only_.push_back(
-              reinterpret_cast<SID*>(token_groups->Groups[i].Sid));
-          break;
-        }
-      }
-    }
-  }
-
-  return ERROR_SUCCESS;
-}
-
 DWORD RestrictedToken::AddSidForDenyOnly(const Sid &sid) {
   DCHECK(init_);
   if (!init_)
     return ERROR_NO_TOKEN;
 
   sids_for_deny_only_.push_back(sid);
   return ERROR_SUCCESS;
 }
--- a/security/sandbox/chromium/sandbox/win/src/restricted_token.h
+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token.h
@@ -83,27 +83,16 @@ class RestrictedToken {
   //    std::vector<Sid> sid_exceptions;
   //    sid_exceptions.push_back(ATL::Sids::Users().GetPSID());
   //    sid_exceptions.push_back(ATL::Sids::World().GetPSID());
   //    restricted_token.AddAllSidsForDenyOnly(&sid_exceptions);
   // Note: A Sid marked for Deny Only in a token cannot be used to grant
   // access to any resource. It can only be used to deny access.
   DWORD AddAllSidsForDenyOnly(std::vector<Sid> *exceptions);
 
-  // Lists all sids in the token and mark them as Deny Only if present in the
-  // deny_only_sids parameter.
-  //
-  // If the function succeeds, the return value is ERROR_SUCCESS. If the
-  // function fails, the return value is the win32 error code corresponding to
-  // the error.
-  //
-  // Note: A Sid marked for Deny Only in a token cannot be used to grant
-  // access to any resource. It can only be used to deny access.
-  DWORD AddDenyOnlySids(const std::vector<Sid>& deny_only_sids);
-
   // Adds a user or group SID for Deny Only in the restricted token.
   // Parameter: sid is the SID to add in the Deny Only list.
   // The return value is always ERROR_SUCCESS.
   //
   // Sample Usage:
   //    restricted_token.AddSidForDenyOnly(ATL::Sids::Admins().GetPSID());
   DWORD AddSidForDenyOnly(const Sid &sid);
 
--- a/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc
+++ b/security/sandbox/chromium/sandbox/win/src/restricted_token_utils.cc
@@ -26,17 +26,16 @@ DWORD CreateRestrictedToken(TokenLevel s
                             base::win::ScopedHandle* token) {
   RestrictedToken restricted_token;
   restricted_token.Init(NULL);  // Initialized with the current process token
   if (lockdown_default_dacl)
     restricted_token.SetLockdownDefaultDacl();
 
   std::vector<base::string16> privilege_exceptions;
   std::vector<Sid> sid_exceptions;
-  std::vector<Sid> deny_only_sids;
 
   bool deny_sids = true;
   bool remove_privileges = true;
 
   switch (security_level) {
     case USER_UNPROTECTED: {
       deny_sids = false;
       remove_privileges = false;
@@ -51,26 +50,20 @@ DWORD CreateRestrictedToken(TokenLevel s
         if (ERROR_SUCCESS != err_code) {
           return err_code;
         }
       }
 
       break;
     }
     case USER_NON_ADMIN: {
-      deny_sids = false;
-      deny_only_sids.push_back(WinBuiltinAdministratorsSid);
-      deny_only_sids.push_back(WinAccountAdministratorSid);
-      deny_only_sids.push_back(WinAccountDomainAdminsSid);
-      deny_only_sids.push_back(WinAccountCertAdminsSid);
-      deny_only_sids.push_back(WinAccountSchemaAdminsSid);
-      deny_only_sids.push_back(WinAccountEnterpriseAdminsSid);
-      deny_only_sids.push_back(WinAccountPolicyAdminsSid);
-      deny_only_sids.push_back(WinBuiltinHyperVAdminsSid);
-      deny_only_sids.push_back(WinLocalAccountAndAdministratorSid);
+      sid_exceptions.push_back(WinBuiltinUsersSid);
+      sid_exceptions.push_back(WinWorldSid);
+      sid_exceptions.push_back(WinInteractiveSid);
+      sid_exceptions.push_back(WinAuthenticatedUserSid);
       privilege_exceptions.push_back(SE_CHANGE_NOTIFY_NAME);
       break;
     }
     case USER_INTERACTIVE: {
       sid_exceptions.push_back(WinBuiltinUsersSid);
       sid_exceptions.push_back(WinWorldSid);
       sid_exceptions.push_back(WinInteractiveSid);
       sid_exceptions.push_back(WinAuthenticatedUserSid);
@@ -123,21 +116,16 @@ DWORD CreateRestrictedToken(TokenLevel s
     }
   }
 
   DWORD err_code = ERROR_SUCCESS;
   if (deny_sids) {
     err_code = restricted_token.AddAllSidsForDenyOnly(&sid_exceptions);
     if (ERROR_SUCCESS != err_code)
       return err_code;
-  } else if (!deny_only_sids.empty()) {
-    err_code = restricted_token.AddDenyOnlySids(deny_only_sids);
-    if (ERROR_SUCCESS != err_code) {
-      return err_code;
-    }
   }
 
   if (remove_privileges) {
     err_code = restricted_token.DeleteAllPrivileges(&privilege_exceptions);
     if (ERROR_SUCCESS != err_code)
       return err_code;
   }
 
--- a/taskcluster/ci/test/reftest.yml
+++ b/taskcluster/ci/test/reftest.yml
@@ -165,15 +165,8 @@ reftest-no-accel:
             by-test-platform:
                 windows10-64.*/opt: false
                 macosx.*: false
                 default: true
     tier:
         by-test-platform:
             windows10-64-asan.*: 3
             default: default
-
-reftest-stylo:
-    description: "Reftest run in Stylo vs. Gecko mode"
-    suite: reftest/reftest-stylo
-    treeherder-symbol: R(Rs)
-    virtualization: virtual-with-gpu
-    chunks: 8
--- a/taskcluster/ci/test/test-platforms.yml
+++ b/taskcluster/ci/test/test-platforms.yml
@@ -35,25 +35,23 @@ linux32-devedition/opt:
         - linux32-tests
         - linux32-opt-tests
 
 linux64/debug:
     build-platform: linux64/debug
     test-sets:
         - common-tests
         - web-platform-tests
-        - reftest-stylo
         - mochitest-headless
 linux64/opt:
     build-platform: linux64/opt
     test-sets:
         - common-tests
         - web-platform-tests
         - opt-only-tests
-        - reftest-stylo
         - desktop-screenshot-capture
         - talos
         - awsy
         - mochitest-headless
         - linux-talos-flex
 linux64-nightly/opt:
     build-platform: linux64-nightly/opt
     test-sets:
@@ -79,36 +77,16 @@ linux64-pgo/opt:
         - web-platform-tests
         - talos
 
 linux64-asan/opt:
     build-platform: linux64-asan/opt
     test-sets:
         - common-tests
 
-# Stylo disabled mode only runs a subset of tests.
-linux32-stylo-disabled/debug:
-    build-platform: linux/debug
-    test-sets:
-        - stylo-disabled-tests
-linux32-stylo-disabled/opt:
-    build-platform: linux/opt
-    test-sets:
-        - stylo-disabled-tests
-linux64-stylo-disabled/debug:
-    build-platform: linux64/debug
-    test-sets:
-        - stylo-disabled-tests
-        - devtools-tests
-linux64-stylo-disabled/opt:
-    build-platform: linux64/opt
-    test-sets:
-        - stylo-disabled-tests
-        - devtools-tests
-
 # Stylo sequential runs check memory and performance when using a single thread.
 linux64-stylo-sequential/opt:
     build-platform: linux64/opt
     test-sets:
         - awsy-stylo-sequential
 
 # QR builds just run a subset right now. Note that the tests in this
 # test set are further restricted in {reftests,talos,...}.yml to run on
--- a/taskcluster/ci/test/test-sets.yml
+++ b/taskcluster/ci/test/test-sets.yml
@@ -78,35 +78,16 @@ awsy:
     - awsy
 
 awsy-stylo-sequential:
     - awsy-stylo-sequential
 
 ##
 # Limited test sets for specific platforms
 
-stylo-disabled-tests:
-    - cppunit
-    - crashtest
-    - reftest
-    - web-platform-tests
-    - web-platform-tests-reftests
-    - mochitest
-    - mochitest-a11y
-    - mochitest-browser-chrome
-    - browser-screenshots
-    - mochitest-chrome
-    - mochitest-clipboard
-    - mochitest-gpu
-    - mochitest-media
-    - mochitest-webgl
-
-reftest-stylo:
-    - reftest-stylo
-
 linux-qr-talos:
     - talos-chrome
     - talos-dromaeojs
     - talos-g1
     # - talos-g2 # doesn't work with QR yet
     - talos-g3
     - talos-g4
     - talos-g5
--- a/taskcluster/taskgraph/test/test_try_option_syntax.py
+++ b/taskcluster/taskgraph/test/test_try_option_syntax.py
@@ -226,23 +226,23 @@ class TestTryOptionSyntax(unittest.TestC
         "-u gtest[linux,win32] selects the linux and win32 platforms for gtest"
         parameters = {'try_options': parse_message('try: -u gtest[linux,win32]')}
         tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
         self.assertEqual(sorted(tos.unittests), sorted([
             {'test': 'gtest', 'platforms': ['linux', 'win32']},
         ]))
 
     def test_u_platforms_pretty(self):
-        """-u gtest[Ubuntu] selects the linux, linux64, linux64-asan, linux64-stylo-disabled,
+        """-u gtest[Ubuntu] selects the linux, linux64, linux64-asan
         and linux64-stylo-sequential platforms for gtest"""
         parameters = {'try_options': parse_message('try: -u gtest[Ubuntu]')}
         tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
         self.assertEqual(sorted(tos.unittests), sorted([
             {'test': 'gtest', 'platforms': ['linux32', 'linux64', 'linux64-asan',
-                                            'linux64-stylo-disabled', 'linux64-stylo-sequential']},
+                                            'linux64-stylo-sequential']},
         ]))
 
     def test_u_platforms_negated(self):
         "-u gtest[-linux] selects all platforms but linux for gtest"
         parameters = {'try_options': parse_message('try: -u gtest[-linux]')}
         tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
         all_platforms = set([x.attributes['test_platform'] for x in unittest_tasks.values()])
         self.assertEqual(sorted(tos.unittests[0]['platforms']), sorted(
--- a/taskcluster/taskgraph/transforms/tests.py
+++ b/taskcluster/taskgraph/transforms/tests.py
@@ -64,21 +64,16 @@ WINDOWS_WORKER_TYPES = {
       'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win7-32-gpu',
       'hardware': 'releng-hardware/gecko-t-win7-32-hw',
     },
     'windows7-32-devedition': {
       'virtual': 'aws-provisioner-v1/gecko-t-win7-32',
       'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win7-32-gpu',
       'hardware': 'releng-hardware/gecko-t-win7-32-hw',
     },
-    'windows7-32-stylo-disabled': {
-      'virtual': 'aws-provisioner-v1/gecko-t-win7-32',
-      'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win7-32-gpu',
-      'hardware': 'releng-hardware/gecko-t-win7-32-hw',
-    },
     'windows10-64': {
       'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
       'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
       'hardware': 'releng-hardware/gecko-t-win10-64-hw',
     },
     'windows10-64-ccov': {
       'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
       'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
@@ -94,21 +89,16 @@ WINDOWS_WORKER_TYPES = {
       'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
       'hardware': 'releng-hardware/gecko-t-win10-64-hw',
     },
     'windows10-64-nightly': {
       'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
       'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
       'hardware': 'releng-hardware/gecko-t-win10-64-hw',
     },
-    'windows10-64-stylo-disabled': {
-      'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
-      'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
-      'hardware': 'releng-hardware/gecko-t-win10-64-hw',
-    },
     'windows10-64-asan': {
       'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
       'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
       'hardware': 'releng-hardware/gecko-t-win10-64-hw',
     },
     'windows10-64-qr': {
       'virtual': 'aws-provisioner-v1/gecko-t-win10-64',
       'virtual-with-gpu': 'aws-provisioner-v1/gecko-t-win10-64-gpu',
@@ -546,28 +536,18 @@ def set_treeherder_machine_platform(conf
         # The build names for Android platforms have partially evolved over the
         # years and need to be translated.
         'android-api-16/debug': 'android-4-3-armv7-api16/debug',
         'android-api-16/opt': 'android-4-3-armv7-api16/opt',
         'android-x86/opt': 'android-4-2-x86/opt',
         'android-api-16-gradle/opt': 'android-api-16-gradle/opt',
     }
     for test in tests:
-        # For most desktop platforms, the above table is not used for "regular"
-        # builds, so we'll always pick the test platform here.
-        # On macOS though, the regular builds are in the table.  This causes a
-        # conflict in `verify_task_graph_symbol` once you add a new test
-        # platform based on regular macOS builds, such as for Stylo.
-        # Since it's unclear if the regular macOS builds can be removed from
-        # the table, workaround the issue for Stylo.
-        if '-stylo-disabled' in test['test-platform']:
-            test['treeherder-machine-platform'] = test['test-platform']
-        else:
-            test['treeherder-machine-platform'] = translation.get(
-                test['build-platform'], test['test-platform'])
+        test['treeherder-machine-platform'] = translation.get(
+            test['build-platform'], test['test-platform'])
         yield test
 
 
 @transforms.add
 def set_tier(config, tests):
     """Set the tier based on policy for all test descriptions that do not
     specify a tier otherwise."""
     for test in tests:
@@ -575,46 +555,36 @@ def set_tier(config, tests):
             resolve_keyed_by(test, 'tier', item_name=test['test-name'])
 
         # only override if not set for the test
         if 'tier' not in test or test['tier'] == 'default':
             if test['test-platform'] in ['linux32/opt',
                                          'linux32/debug',
                                          'linux32-nightly/opt',
                                          'linux32-devedition/opt',
-                                         'linux32-stylo-disabled/debug',
-                                         'linux32-stylo-disabled/opt',
                                          'linux64/opt',
                                          'linux64-nightly/opt',
                                          'linux64/debug',
                                          'linux64-pgo/opt',
                                          'linux64-devedition/opt',
                                          'linux64-asan/opt',
-                                         'linux64-stylo-disabled/debug',
-                                         'linux64-stylo-disabled/opt',
                                          'windows7-32/debug',
                                          'windows7-32/opt',
                                          'windows7-32-pgo/opt',
                                          'windows7-32-devedition/opt',
                                          'windows7-32-nightly/opt',
-                                         'windows7-32-stylo-disabled/debug',
-                                         'windows7-32-stylo-disabled/opt',
                                          'windows10-64/debug',
                                          'windows10-64/opt',
                                          'windows10-64-pgo/opt',
                                          'windows10-64-devedition/opt',
                                          'windows10-64-nightly/opt',
-                                         'windows10-64-stylo-disabled/debug',
-                                         'windows10-64-stylo-disabled/opt',
                                          'macosx64/opt',
                                          'macosx64/debug',
                                          'macosx64-nightly/opt',
                                          'macosx64-devedition/opt',
-                                         'macosx64-stylo-disabled/debug',
-                                         'macosx64-stylo-disabled/opt',
                                          'android-4.3-arm7-api-16/opt',
                                          'android-4.3-arm7-api-16/debug',
                                          'android-4.2-x86/opt']:
                 test['tier'] = 1
             else:
                 test['tier'] = 2
 
         yield test
@@ -885,31 +855,16 @@ def set_test_type(config, tests):
     for test in tests:
         for test_type in ['mochitest', 'reftest']:
             if test_type in test['suite'] and 'web-platform' not in test['suite']:
                 test.setdefault('tags', {})['test-type'] = test_type
         yield test
 
 
 @transforms.add
-def disable_stylo(config, tests):
-    """
-    Disable Stylo for all jobs on `-stylo-disabled` platforms.
-    """
-    for test in tests:
-        if '-stylo-disabled' not in test['test-platform']:
-            yield test
-            continue
-
-        test['mozharness'].setdefault('extra-options', []).append('--disable-stylo')
-
-        yield test
-
-
-@transforms.add
 def single_stylo_traversal_tests(config, tests):
     """Enable single traversal for all tests on the sequential Stylo platform."""
 
     for test in tests:
         if not test['test-platform'].startswith('linux64-stylo-sequential/'):
             yield test
             continue
 
--- a/taskcluster/taskgraph/try_option_syntax.py
+++ b/taskcluster/taskgraph/try_option_syntax.py
@@ -93,17 +93,16 @@ UNITTEST_ALIASES = {
     'mochitest-clipboard-e10s': alias_prefix('mochitest-clipboard-e10s'),
     'mochitest-media': alias_prefix('mochitest-media'),
     'mochitest-media-e10s': alias_prefix('mochitest-media-e10s'),
     'mochitest-vg': alias_prefix('mochitest-valgrind'),
     'reftest': alias_matches(r'^(plain-)?reftest.*$'),
     'reftest-no-accel': alias_matches(r'^(plain-)?reftest-no-accel.*$'),
     'reftests': alias_matches(r'^(plain-)?reftest.*$'),
     'reftests-e10s': alias_matches(r'^(plain-)?reftest-e10s.*$'),
-    'reftest-stylo': alias_matches(r'^(plain-)?reftest-stylo.*$'),
     'reftest-gpu': alias_matches(r'^(plain-)?reftest-gpu.*$'),
     'robocop': alias_prefix('robocop'),
     'web-platform-test': alias_prefix('web-platform-tests'),
     'web-platform-tests': alias_prefix('web-platform-tests'),
     'web-platform-tests-e10s': alias_prefix('web-platform-tests-e10s'),
     'web-platform-tests-reftests': alias_prefix('web-platform-tests-reftests'),
     'web-platform-tests-reftests-e10s': alias_prefix('web-platform-tests-reftests-e10s'),
     'web-platform-tests-wdspec': alias_prefix('web-platform-tests-wdspec'),
@@ -121,23 +120,21 @@ UNITTEST_ALIASES = {
 # every time for such cases.
 #
 # Note that the test platforms here are only the prefix up to the `/`.
 UNITTEST_PLATFORM_PRETTY_NAMES = {
     'Ubuntu': [
         'linux32',
         'linux64',
         'linux64-asan',
-        'linux64-stylo-disabled',
         'linux64-stylo-sequential'
     ],
     'x64': [
         'linux64',
         'linux64-asan',
-        'linux64-stylo-disabled',
         'linux64-stylo-sequential'
     ],
     'Android 4.3': ['android-4.3-arm7-api-16'],
     '10.10': ['macosx64'],
     # other commonly-used substrings for platforms not yet supported with
     # in-tree taskgraphs:
     # '10.10.5': [..TODO..],
     # '10.6': [..TODO..],
--- a/testing/awsy/awsy/process_perf_data.py
+++ b/testing/awsy/awsy/process_perf_data.py
@@ -64,18 +64,16 @@ def create_suite(name, node, data_path):
     suite = {
         'name': name,
         'subtests': [],
         'lowerIsBetter': True,
         'units': 'bytes'
     }
     if 'STYLO_FORCE_ENABLED' in os.environ and os.environ['STYLO_FORCE_ENABLED']:
         suite['extraOptions'] = ["stylo"]
-    if 'STYLO_FORCE_DISABLED' in os.environ and os.environ['STYLO_FORCE_DISABLED']:
-        suite['extraOptions'] = ["stylo-disabled"]
     if 'STYLO_THREADS' in os.environ and os.environ['STYLO_THREADS'] == '1':
         suite['extraOptions'] = ["stylo-sequential"]
     update_checkpoint_paths(glob.glob(os.path.join(data_path, "memory-report*")))
 
     total = 0
     for checkpoint in CHECKPOINTS:
         memory_report_path = os.path.join(data_path, checkpoint['path'])
 
--- a/testing/awsy/mach_commands.py
+++ b/testing/awsy/mach_commands.py
@@ -59,33 +59,23 @@ class MachCommands(MachCommandBase):
         args.binary = binary
 
         if kwargs['quick']:
             kwargs['entities'] = 3
             kwargs['iterations'] = 1
             kwargs['perTabPause'] = 1
             kwargs['settleWaitTime'] = 1
 
-        if 'disable_stylo' in kwargs and kwargs['disable_stylo']:
-            if 'single_stylo_traversal' in kwargs and kwargs['single_stylo_traversal']:
-                print("--disable-stylo conflicts with --single-stylo-traversal")
-                return 1
-            if 'enable_stylo' in kwargs and kwargs['enable_stylo']:
-                print("--disable-stylo conflicts with --enable-stylo")
-                return 1
-
         if 'single_stylo_traversal' in kwargs and kwargs['single_stylo_traversal']:
             os.environ['STYLO_THREADS'] = '1'
         else:
             os.environ['STYLO_THREADS'] = '4'
 
         if 'enable_stylo' in kwargs and kwargs['enable_stylo']:
             os.environ['STYLO_FORCE_ENABLED'] = '1'
-        if 'disable_stylo' in kwargs and kwargs['disable_stylo']:
-            os.environ['STYLO_FORCE_DISABLED'] = '1'
 
         if 'enable_webrender' in kwargs and kwargs['enable_webrender']:
             os.environ['MOZ_WEBRENDER'] = '1'
             os.environ['MOZ_ACCELERATED'] = '1'
 
         runtime_testvars = {}
         for arg in ('webRootDir', 'pageManifest', 'resultsDir', 'entities', 'iterations',
                     'perTabPause', 'settleWaitTime', 'maxTabs', 'dmd'):
@@ -213,19 +203,16 @@ class MachCommands(MachCommandBase):
                      'Defaults to %s.' % PER_TAB_PAUSE)
     @CommandArgument('--settle-wait-time', group='AWSY', action='store', type=int,
                      dest='settleWaitTime',
                      help='Seconds to wait for things to settled down. '
                      'Defaults to %s.' % SETTLE_WAIT_TIME)
     @CommandArgument('--enable-stylo', group='AWSY', action='store_true',
                      dest='enable_stylo', default=False,
                      help='Enable Stylo.')
-    @CommandArgument('--disable-stylo', group='AWSY', action='store_true',
-                     dest='disable_stylo', default=False,
-                     help='Disable Stylo.')
     @CommandArgument('--single-stylo-traversal', group='AWSY', action='store_true',
                      dest='single_stylo_traversal', default=False,
                      help='Set STYLO_THREADS=1.')
     @CommandArgument('--enable-webrender', group='AWSY', action='store_true',
                      dest='enable_webrender', default=False,
                      help='Enable WebRender.')
     @CommandArgument('--dmd', group='AWSY', action='store_true',
                      dest='dmd', default=False,
--- a/testing/mochitest/runtests.py
+++ b/testing/mochitest/runtests.py
@@ -1422,18 +1422,16 @@ toolbar#nav-bar {
 
         tests = []
         manifest = self.getTestManifest(options)
         if manifest:
             if options.extra_mozinfo_json:
                 mozinfo.update(options.extra_mozinfo_json)
             if 'STYLO_FORCE_ENABLED' in os.environ:
                 mozinfo.update({'stylo': True})
-            if 'STYLO_FORCE_DISABLED' in os.environ:
-                mozinfo.update({'stylo': False})
 
             info = mozinfo.info
 
             # Bug 1089034 - imptest failure expectations are encoded as
             # test manifests, even though they aren't tests. This gross
             # hack causes several problems in automation including
             # throwing off the chunking numbers. Remove them manually
             # until bug 1089034 is fixed.
--- a/testing/mozharness/configs/unittests/linux_unittest.py
+++ b/testing/mozharness/configs/unittests/linux_unittest.py
@@ -210,21 +210,16 @@ config = {
                         "--setpref=layers.acceleration.force-enabled=true"],
             "tests": ["tests/reftest/tests/layout/reftests/reftest.list"]
         },
         "reftest-no-accel": {
             "options": ["--suite=reftest",
                         "--setpref=layers.acceleration.disabled=true"],
             "tests": ["tests/reftest/tests/layout/reftests/reftest.list"]
         },
-        "reftest-stylo": {
-            "options": ["--suite=reftest",
-                        "--setpref=reftest.compareStyloToGecko=true"],
-            "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
-        },
     },
     "all_xpcshell_suites": {
         "xpcshell": {
             "options": ["--xpcshell=%(abs_app_dir)s/" + XPCSHELL_NAME,
                         "--manifest=tests/xpcshell/tests/xpcshell.ini"],
             "tests": []
         },
         "xpcshell-addons": {
--- a/testing/mozharness/configs/unittests/mac_unittest.py
+++ b/testing/mozharness/configs/unittests/mac_unittest.py
@@ -166,21 +166,16 @@ config = {
             'options':["--extra-profile-file=tests/jsreftest/tests/user.js",
                        "--suite=jstestbrowser"],
             'tests': ["tests/jsreftest/tests/jstests.list"]
         },
         "reftest": {
             'options': ["--suite=reftest"],
             'tests': ["tests/reftest/tests/layout/reftests/reftest.list"]
         },
-        "reftest-stylo": {
-            "options": ["--suite=reftest",
-                        "--setpref=reftest.compareStyloToGecko=true"],
-            "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
-        },
     },
     "all_xpcshell_suites": {
         "xpcshell": {
             'options': ["--xpcshell=%(abs_app_dir)s/" + XPCSHELL_NAME,
                         "--manifest=tests/xpcshell/tests/xpcshell.ini"],
             'tests': []
         },
         "xpcshell-addons": {
--- a/testing/mozharness/configs/unittests/win_taskcluster_unittest.py
+++ b/testing/mozharness/configs/unittests/win_taskcluster_unittest.py
@@ -199,21 +199,16 @@ config = {
                         "--setpref=layers.gpu-process.force-enabled=true"],
             'tests': ["tests/reftest/tests/layout/reftests/reftest.list"]
         },
         "reftest-no-accel": {
             "options": ["--suite=reftest",
                         "--setpref=layers.acceleration.disabled=true"],
             "tests": ["tests/reftest/tests/layout/reftests/reftest.list"]
         },
-        "reftest-stylo": {
-            "options": ["--suite=reftest",
-                        "--setpref=reftest.compareStyloToGecko=true"],
-            "tests": ["tests/reftest/tests/layout/reftests/reftest.list"],
-        },
     },
     "all_xpcshell_suites": {
         "xpcshell": {
             'options': ["--xpcshell=%(abs_app_dir)s/" + XPCSHELL_NAME,
                         "--manifest=tests/xpcshell/tests/xpcshell.ini"],
             'tests': []
         },
         "xpcshell-addons": {
--- a/testing/mozharness/mozharness/mozilla/testing/talos.py
+++ b/testing/mozharness/mozharness/mozilla/testing/talos.py
@@ -687,20 +687,16 @@ class Talos(TestingMixin, MercurialScrip
         env['STYLO_FORCE_ENABLED'] = '1'
 
         # Remove once Talos is migrated away from buildbot
         if self.buildbot_config:
             platform = self.buildbot_config.get('properties', {}).get('platform', '')
             if 'qr' in platform:
                 env['MOZ_WEBRENDER'] = '1'
                 env['MOZ_ACCELERATED'] = '1'
-            if 'stylo' in platform and 'stylo_disabled' not in platform:
-                env['STYLO_FORCE_ENABLED'] = '1'
-            if 'stylo_disabled' in platform:
-                env['STYLO_FORCE_DISABLED'] = '1'
             if 'styloseq' in platform:
                 env['STYLO_THREADS'] = '1'
 
         # sets a timeout for how long talos should run without output
         output_timeout = self.config.get('talos_output_timeout', 3600)
         # run talos tests
         run_tests = os.path.join(self.talos_path, 'talos', 'run_tests.py')
 
--- a/testing/mozharness/scripts/desktop_unittest.py
+++ b/testing/mozharness/scripts/desktop_unittest.py
@@ -164,22 +164,16 @@ class DesktopUnittest(TestingMixin, Merc
             "help": "Forcibly enable single thread traversal in Stylo with STYLO_THREADS=1"}
          ],
         [["--enable-stylo"], {
             "action": "store_true",
             "dest": "enable_stylo",
             "default": False,
             "help": "Run tests with Stylo enabled"}
          ],
-        [["--disable-stylo"], {
-            "action": "store_true",
-            "dest": "disable_stylo",
-            "default": False,
-            "help": "Run tests with Stylo disabled"}
-         ],
         [["--enable-webrender"], {
             "action": "store_true",
             "dest": "enable_webrender",
             "default": False,
             "help": "Tries to enable the WebRender compositor."}
          ],
     ] + copy.deepcopy(testing_config_options) + \
         copy.deepcopy(blobupload_config_options) + \
@@ -238,18 +232,16 @@ class DesktopUnittest(TestingMixin, Merc
         if 'this_chunk' in c:
             perfherder_parts.append(c['this_chunk'])
 
         if c['e10s']:
             perfherder_options.append('e10s')
 
         if c['enable_stylo']:
             perfherder_options.append('stylo')
-        if c['disable_stylo']:
-            perfherder_options.append('stylo_disabled')
 
         self.resource_monitor_perfherder_id = ('.'.join(perfherder_parts),
                                                perfherder_options)
 
     # helper methods {{{2
     def _pre_config_lock(self, rw_config):
         super(DesktopUnittest, self)._pre_config_lock(rw_config)
         c = self.config
@@ -853,31 +845,23 @@ class DesktopUnittest(TestingMixin, Merc
                     self.mkdir_p(env['MOZ_UPLOAD_DIR'])
 
                 if self.config['allow_software_gl_layers']:
                     env['MOZ_LAYERS_ALLOW_SOFTWARE_GL'] = '1'
                 if self.config['enable_webrender']:
                     env['MOZ_WEBRENDER'] = '1'
                     env['MOZ_ACCELERATED'] = '1'
 
-                if self.config['disable_stylo']:
-                    if self.config['single_stylo_traversal']:
-                        self.fatal("--disable-stylo conflicts with --single-stylo-traversal")
-                    if self.config['enable_stylo']:
-                        self.fatal("--disable-stylo conflicts with --enable-stylo")
-
                 if self.config['single_stylo_traversal']:
                     env['STYLO_THREADS'] = '1'
                 else:
                     env['STYLO_THREADS'] = '4'
 
                 if self.config['enable_stylo']:
                     env['STYLO_FORCE_ENABLED'] = '1'
-                if self.config['disable_stylo']:
-                    env['STYLO_FORCE_DISABLED'] = '1'
 
                 env = self.query_env(partial_env=env, log_level=INFO)
                 cmd_timeout = self.get_timeout_for_category(suite_category)
 
                 for verify_args in self.query_verify_args(suite):
                     if (datetime.now() - self.start_time) > max_verify_time:
                         # Verification has run out of time. That is okay! Stop running
                         # tests so that a task timeout is not triggered, and so that
--- a/testing/mozharness/scripts/web_platform_tests.py
+++ b/testing/mozharness/scripts/web_platform_tests.py
@@ -330,18 +330,16 @@ class WebPlatformTest(TestingMixin, Merc
 
         if self.config['single_stylo_traversal']:
             env['STYLO_THREADS'] = '1'
         else:
             env['STYLO_THREADS'] = '4'
 
         if self.config['enable_stylo']:
             env['STYLO_FORCE_ENABLED'] = '1'
-        if self.config['disable_stylo']:
-            env['STYLO_FORCE_DISABLED'] = '1'
 
         env = self.query_env(partial_env=env, log_level=INFO)
 
         start_time = datetime.now()
         max_verify_time = timedelta(minutes=60)
         max_verify_tests = 10
         verified_tests = 0
 
--- a/toolkit/content/components.css
+++ b/toolkit/content/components.css
@@ -3,8 +3,9 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* ===== components.css =================================================
   == Styles ported from XBL <resources>, loaded as UA styles in every XUL doc
   ======================================================================= */
 
 @import url("chrome://global/skin/menu.css");
 @import url("chrome://global/skin/toolbar.css");
+@import url("chrome://global/skin/splitter.css");
--- a/toolkit/content/tests/widgets/test_videocontrols_standalone.html
+++ b/toolkit/content/tests/widgets/test_videocontrols_standalone.html
@@ -7,16 +7,17 @@
   <script type="text/javascript" src="head.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 </head>
 <body>
 <p id="display"></p>
 
 <pre id="test">
 <script class="testbody" type="text/javascript">
+  SimpleTest.expectAssertions(0, 1);
 
 const videoWidth = 320;
 const videoHeight = 240;
 
 function getMediaElement(aWindow) {
   return aWindow.document.getElementsByTagName("video")[0];
 }
 
--- a/toolkit/content/widgets/splitter.xml
+++ b/toolkit/content/widgets/splitter.xml
@@ -3,26 +3,17 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 
 <bindings id="splitterBindings"
    xmlns="http://www.mozilla.org/xbl"
    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
-  <binding id="splitter" extends="xul:splitter">
-    <resources>
-      <stylesheet src="chrome://global/skin/splitter.css"/>
-    </resources>
-  </binding>
-
   <binding id="grippy" extends="xul:button">
-    <resources>
-      <stylesheet src="chrome://global/skin/splitter.css"/>
-    </resources>
     <handlers>
       <handler event="command">
         <![CDATA[
           var splitter = this.parentNode;
           if (splitter) {
             var state = splitter.getAttribute("state");
             if (state == "collapsed")
               splitter.setAttribute("state", "open");
--- a/toolkit/content/xul.css
+++ b/toolkit/content/xul.css
@@ -840,20 +840,16 @@ menulist > menupopup > menuitem {
 }
 
 dropmarker {
   -moz-binding: url("chrome://global/content/bindings/general.xml#dropmarker");
 }
 
 /********** splitter **********/
 
-splitter {
-  -moz-binding: url("chrome://global/content/bindings/splitter.xml#splitter");
-}
-
 grippy {
   -moz-binding: url("chrome://global/content/bindings/splitter.xml#grippy");
 }
 
 .tree-splitter {
   width: 0px;
   max-width: 0px;
   min-width: 0% ! important;
--- a/tools/tryselect/docs/selectors/fuzzy.rst
+++ b/tools/tryselect/docs/selectors/fuzzy.rst
@@ -101,24 +101,20 @@ Would produce the following ``try_task_c
       "templates":{
         "env":{
           "MOZHARNESS_TEST_PATHS":"layout/reftests/reftest-sanity"
         }
       },
       "tasks":[
         "test-linux64-qr/debug-reftest-e10s-1",
         "test-linux64-qr/opt-reftest-e10s-1",
-        "test-linux64-stylo-disabled/debug-reftest-e10s-1",
-        "test-linux64-stylo-disabled/opt-reftest-e10s-1",
         "test-linux64/debug-reftest-e10s-1",
         "test-linux64/debug-reftest-no-accel-e10s-1",
-        "test-linux64/debug-reftest-stylo-e10s-1",
         "test-linux64/opt-reftest-e10s-1",
         "test-linux64/opt-reftest-no-accel-e10s-1",
-        "test-linux64/opt-reftest-stylo-e10s-1"
       ]
     }
 
 Inside of these tasks, the reftest harness will only run tests that live under
 ``layout/reftests/reftest-sanity``.
 
 Additional Arguments
 --------------------
--- a/xpfe/appshell/nsIWindowMediator.idl
+++ b/xpfe/appshell/nsIWindowMediator.idl
@@ -68,16 +68,22 @@ interface nsIWindowMediator: nsISupports
     *                     ("type" is the |windowtype| attribute of
     *                     the XML <window> element.)
     *                     If null, return the topmost window of any type.
     * @return the topmost window
     */
   mozIDOMWindowProxy getMostRecentWindow(in wstring aWindowType);
 
   /**
+   * Same as getMostRecentWindow, but ignores private browsing
+   * windows.
+   */
+  mozIDOMWindowProxy getMostRecentNonPBWindow(in wstring aWindowType);
+
+  /**
    * Return the outer window with the given ID, if any.  Can return null.
    */
   mozIDOMWindowProxy getOuterWindowWithId(in unsigned long long aOuterWindowID);
 
   /**
     * Return the inner window with the given current window ID, if any.
     * Can return null if no inner window with the ID exists or if it's not
     * a current inner anymore.
@@ -179,20 +185,8 @@ interface nsIWindowMediator: nsISupports
     */
   void addListener(in nsIWindowMediatorListener aListener);
 
   /** Unregister a listener of window status changes.
     * @param aListener the listener to unregister
     */
   void removeListener(in nsIWindowMediatorListener aListener);
 };
-
-// XXXcatalinb: This should be merged to nsIWindowMediator. Using this
-// to avoid UUID change in aurora.
-[scriptable, uuid(b9ed4063-39a2-4302-8e5c-7287eef021fe)]
-interface nsIWindowMediator_44 : nsIWindowMediator
-{
-  /**
-   * Same as getMostRecentWindow, but ignores private browsing
-   * windows.
-   */
-  mozIDOMWindowProxy getMostRecentNonPBWindow(in wstring aWindowType);
-};
--- a/xpfe/appshell/nsWindowMediator.cpp
+++ b/xpfe/appshell/nsWindowMediator.cpp
@@ -752,17 +752,16 @@ nsWindowMediator::SortZOrderBackToFront(
       scan = scan->mHigher;
     }
   } while (!finished);
 
   mSortingZOrder = false;
 }
 
 NS_IMPL_ISUPPORTS(nsWindowMediator,
-  nsIWindowMediator_44,
   nsIWindowMediator,
   nsIObserver,
   nsISupportsWeakReference)
 
 NS_IMETHODIMP
 nsWindowMediator::AddListener(nsIWindowMediatorListener* aListener)
 {
   NS_ENSURE_ARG_POINTER(aListener);
--- a/xpfe/appshell/nsWindowMediator.h
+++ b/xpfe/appshell/nsWindowMediator.h
@@ -20,17 +20,17 @@ class nsASDOMWindowEarlyToLateEnumerator
 class nsASDOMWindowFrontToBackEnumerator;
 class nsASXULWindowFrontToBackEnumerator;
 class nsASDOMWindowBackToFrontEnumerator;
 class nsASXULWindowBackToFrontEnumerator;
 class nsIWindowMediatorListener;
 struct nsWindowInfo;
 
 class nsWindowMediator :
-  public nsIWindowMediator_44,
+  public nsIWindowMediator,
   public nsIObserver,
   public nsSupportsWeakReference
 {
 friend class nsAppShellWindowEnumerator;
 friend class nsASXULWindowEarlyToLateEnumerator;
 friend class nsASDOMWindowEarlyToLateEnumerator;
 friend class nsASDOMWindowFrontToBackEnumerator;
 friend class nsASXULWindowFrontToBackEnumerator;
@@ -42,17 +42,16 @@ protected:
 
 public:
   nsWindowMediator();
 
   nsresult Init();
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSIWINDOWMEDIATOR
-  NS_DECL_NSIWINDOWMEDIATOR_44
   NS_DECL_NSIOBSERVER
 
   static nsresult GetDOMWindow(nsIXULWindow* inWindow,
                                nsCOMPtr<nsPIDOMWindowOuter>& outDOMWindow);
 
 private:
   int32_t AddEnumerator(nsAppShellWindowEnumerator* inEnumerator);
   int32_t RemoveEnumerator(nsAppShellWindowEnumerator* inEnumerator);