Bug 1298218 - Tests. r?mattwoodrow draft
authorMarkus Stange <mstange@themasta.com>
Wed, 07 Sep 2016 23:19:09 -0400
changeset 469208 1b0993c16133f2c60a3037fd01ff529efbe07adc
parent 469207 8df89a7bc06b3cec0dc0668e1a2b40acd86019a5
child 469209 a36f0f41c2ad9dd1729ec368a0b03ad4b31ff865
push id43652
push userbmo:mstange@themasta.com
push dateWed, 01 Feb 2017 21:18:30 +0000
reviewersmattwoodrow
bugs1298218
milestone54.0a1
Bug 1298218 - Tests. r?mattwoodrow MozReview-Commit-ID: LW4I9M5OXc9
layout/reftests/async-scrolling/fixed-pos-scrolled-clip-1-ref.html
layout/reftests/async-scrolling/fixed-pos-scrolled-clip-1.html
layout/reftests/async-scrolling/fixed-pos-scrolled-clip-2-ref.html
layout/reftests/async-scrolling/fixed-pos-scrolled-clip-2.html
layout/reftests/async-scrolling/fixed-pos-scrolled-clip-3-ref.html
layout/reftests/async-scrolling/fixed-pos-scrolled-clip-3.html
layout/reftests/async-scrolling/fixed-pos-scrolled-clip-4-ref.html
layout/reftests/async-scrolling/fixed-pos-scrolled-clip-4.html
layout/reftests/async-scrolling/position-sticky-scrolled-clip-1-ref.html
layout/reftests/async-scrolling/position-sticky-scrolled-clip-1.html
layout/reftests/async-scrolling/position-sticky-scrolled-clip-2-ref.html
layout/reftests/async-scrolling/position-sticky-scrolled-clip-2.html
layout/reftests/async-scrolling/reftest.list
layout/reftests/layers/fixed-pos-scrolled-clip-layerize.html
layout/reftests/layers/fixed-pos-scrolled-clip-opacity-inside-layerize.html
layout/reftests/layers/fixed-pos-scrolled-clip-opacity-layerize.html
layout/reftests/layers/reftest.list
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/fixed-pos-scrolled-clip-1-ref.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+
+<title>Reference for: position:fixed with scrolled clip should prerender everything and correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.greenSquare {
+  position: absolute;
+  top: 300px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: lime;
+}
+
+</style>
+
+<div class="greenSquare"></div>
+
+<script>
+
+document.documentElement.scrollTop = 200;
+
+</script>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/fixed-pos-scrolled-clip-1.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="200">
+
+<title>position:fixed with scrolled clip should prerender everything and correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.absoluteClip {
+  position: absolute;
+  top: 300px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: red;
+  clip: rect(auto auto auto auto);
+}
+
+.fixed {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: linear-gradient(lime, lime) black 0 100px no-repeat;
+  background-size: 100% 200px;
+}
+
+</style>
+
+<div class="absoluteClip">
+  <div class="fixed"></div>
+</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/fixed-pos-scrolled-clip-2-ref.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+
+<title>Reference for: position:fixed should not be clipped by the subframe clip, but it should be clipped by the "clip" clip, and the "clip" clip should be moved by the subframe.</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.subframe {
+  margin-top: 300px;
+  width: 400px;
+  height: 400px;
+  overflow: auto;
+}
+
+.subframeScrolled {
+  height: 800px;
+}
+
+.greenSquare {
+  position: absolute;
+  top: 150px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: lime;
+}
+
+</style>
+
+<div class="subframe">
+  <div class="subframeScrolled"></div>
+</div>
+
+<div class="greenSquare"></div>
+
+<script>
+
+document.documentElement.scrollTop = 50;
+document.querySelector('.subframe').scrollTop = 150;
+
+</script>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/fixed-pos-scrolled-clip-2.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="50">
+
+<title>position:fixed should not be clipped by the subframe clip, but it should be clipped by the "clip" clip, and the "clip" clip should be moved by the subframe.</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.subframe {
+  margin-top: 300px;
+  width: 400px;
+  height: 400px;
+  overflow: auto;
+}
+
+.subframeScrolled {
+  height: 800px;
+  position: relative;
+}
+
+.absoluteClip {
+  position: absolute;
+  top: 0px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: red;
+  clip: rect(auto auto auto auto);
+}
+
+.fixed {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: linear-gradient(lime, lime) black 0 100px no-repeat;
+  background-size: 100% 200px;
+}
+
+</style>
+
+<div class="subframe"
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="400" reftest-displayport-h="800"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="150">
+  <div class="subframeScrolled">
+    <div class="absoluteClip">
+      <div class="fixed"></div>
+    </div>
+  </div>
+</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/fixed-pos-scrolled-clip-3-ref.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+
+<title>Reference for: like fixed-pos-scrolled-clip-1.html, but inside a transform. This also tests that scrolling the root scroll frame moves the "fixed" layer which is only fixed with respect to the transform, not with respect to the viewport.</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.subframe {
+  position: relative;
+  left: 10px;
+  top: 10px;
+  width: 500px;
+  height: 600px;
+  overflow: auto;
+  box-shadow: 0 0 0 2px black;
+}
+
+.scrolled {
+  height: 4000px;
+}
+
+.greenSquare {
+  position: absolute;
+  top: 300px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: lime;
+}
+
+</style>
+
+<div class="subframe">
+  <div class="scrolled">
+    <div class="greenSquare"></div>
+  </div>
+</div>
+
+<script>
+
+document.documentElement.scrollTop = 20;
+document.querySelector('.subframe').scrollTop = 200;
+
+</script>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/fixed-pos-scrolled-clip-3.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="20">
+
+<title>like fixed-pos-scrolled-clip-1.html, but inside a transform. This also tests that scrolling the root scroll frame moves the "fixed" layer which is only fixed with respect to the transform, not with respect to the viewport.</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.transform {
+  transform: translate(10px, 10px);
+  width: 500px;
+}
+
+.subframe {
+  height: 600px;
+  overflow: auto;
+  box-shadow: 0 0 0 2px black;
+}
+
+.scrolled {
+  height: 4000px;
+  position: relative;
+}
+
+.absoluteClip {
+  position: absolute;
+  top: 300px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: red;
+  clip: rect(auto auto auto auto);
+}
+
+.fixed {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: linear-gradient(lime, lime) black 0 100px no-repeat;
+  background-size: 100% 200px;
+}
+
+</style>
+
+<div class="transform">
+  <div class="subframe"
+       reftest-displayport-x="0" reftest-displayport-y="0"
+       reftest-displayport-w="800" reftest-displayport-h="2000"
+       reftest-async-scroll-x="0" reftest-async-scroll-y="200">
+    <div class="scrolled">
+      <div class="absoluteClip">
+        <div class="fixed"></div>
+      </div>
+    </div>
+  </div>
+</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/fixed-pos-scrolled-clip-4-ref.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+
+<title>Reference for: This is fixed-pos-scrolled-clip-1.html in an iframe</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.subframe {
+  position: relative;
+  left: 10px;
+  top: 10px;
+  width: 500px;
+  height: 600px;
+  overflow: auto;
+  box-shadow: 0 0 0 2px black;
+}
+
+.scrolled {
+  height: 4000px;
+}
+
+.greenSquare {
+  position: absolute;
+  top: 300px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: lime;
+}
+
+</style>
+
+<div class="subframe">
+  <div class="scrolled">
+    <div class="greenSquare"></div>
+  </div>
+</div>
+
+<script>
+
+document.documentElement.scrollTop = 20;
+document.querySelector('.subframe').scrollTop = 200;
+
+</script>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/fixed-pos-scrolled-clip-4.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="20">
+
+<title>This is fixed-pos-scrolled-clip-1.html in an iframe</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.subframe {
+  position: relative;
+  left: 10px;
+  top: 10px;
+  border: 0;
+  width: 500px;
+  height: 600px;
+  overflow: auto;
+  box-shadow: 0 0 0 2px black;
+}
+
+</style>
+
+<iframe class="subframe" src="fixed-pos-scrolled-clip-1.html"></iframe>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/position-sticky-scrolled-clip-1-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+
+<title>Reference for: position:sticky with scrolled clip should correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.halfBox {
+  position: absolute;
+  left: 0;
+  top: 100px;
+  width: 100px;
+  height: 50px;
+  box-sizing: border-box;
+  border: 1px solid black;
+  border-bottom: none;
+}
+
+</style>
+
+<div class="halfBox"></div>
+
+<script>
+
+document.documentElement.scrollTop = 100;
+
+</script>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/position-sticky-scrolled-clip-1.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="100">
+
+<title>position:sticky with scrolled clip should correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+  position: relative;
+}
+
+.absoluteClip {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100px;
+  height: 200px;
+  clip: rect(auto, auto, 150px, auto);
+}
+
+.sticky {
+  position: sticky;
+  top: 0;
+  box-sizing: border-box;
+  height: 100px;
+  border: 1px solid black;
+}
+
+</style>
+
+<div class="absoluteClip">
+  <div class="sticky"></div>
+</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/position-sticky-scrolled-clip-2-ref.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+
+<title>Reference for: position:sticky with scrolled clip should prerender everything and correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.completeBox {
+  position: absolute;
+  left: 0;
+  top: 100px;
+  width: 100px;
+  height: 100px;
+  box-sizing: border-box;
+  border: 1px solid black;
+}
+
+</style>
+
+<div class="completeBox"></div>
+
+<script>
+
+document.documentElement.scrollTop = 100;
+
+</script>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/async-scrolling/position-sticky-scrolled-clip-2.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="100">
+
+<title>position:sticky with scrolled clip should prerender everything and correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+  position: relative;
+}
+
+.absoluteClip {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100px;
+  height: 200px;
+  clip: rect(50px, auto, auto, auto);
+}
+
+.sticky {
+  position: sticky;
+  top: 0;
+  box-sizing: border-box;
+  height: 100px;
+  border: 1px solid black;
+}
+
+</style>
+
+<div class="absoluteClip">
+  <div class="sticky"></div>
+</div>
--- a/layout/reftests/async-scrolling/reftest.list
+++ b/layout/reftests/async-scrolling/reftest.list
@@ -44,16 +44,22 @@ fuzzy-if(Android,6,4) skip-if(!asyncPan)
 fuzzy-if(Android,7,4) skip-if(!asyncPan) == perspective-scrolling-1.html perspective-scrolling-1-ref.html
 fuzzy-if(Android,7,4) skip-if(!asyncPan) == perspective-scrolling-2.html perspective-scrolling-2-ref.html
 fuzzy-if(Android,7,4) skip-if(!asyncPan) == perspective-scrolling-3.html perspective-scrolling-3-ref.html
 fuzzy-if(Android,7,4) skip-if(!asyncPan) == perspective-scrolling-4.html perspective-scrolling-4-ref.html
 pref(apz.disable_for_scroll_linked_effects,true) skip-if(!asyncPan) == disable-apz-for-sle-pages.html disable-apz-for-sle-pages-ref.html
 fuzzy-if(browserIsRemote&&d2d,1,19) skip-if(!asyncPan) == background-blend-mode-1.html background-blend-mode-1-ref.html
 skip-if(Android||!asyncPan) != opaque-fractional-displayport-1.html about:blank
 skip-if(Android||!asyncPan) != opaque-fractional-displayport-2.html about:blank
+fuzzy-if(Android,6,4) skip-if(!asyncPan) == fixed-pos-scrolled-clip-1.html fixed-pos-scrolled-clip-1-ref.html
+fuzzy-if(Android,6,8) skip-if(!asyncPan) == fixed-pos-scrolled-clip-2.html fixed-pos-scrolled-clip-2-ref.html
+fuzzy-if(Android,6,8) skip-if(!asyncPan) == fixed-pos-scrolled-clip-3.html fixed-pos-scrolled-clip-3-ref.html
+fuzzy-if(Android,6,8) skip-if(!asyncPan) == fixed-pos-scrolled-clip-4.html fixed-pos-scrolled-clip-4-ref.html
+fuzzy-if(Android,6,4) skip-if(!asyncPan) == position-sticky-scrolled-clip-1.html position-sticky-scrolled-clip-1-ref.html
+fuzzy-if(Android,6,4) skip == position-sticky-scrolled-clip-2.html position-sticky-scrolled-clip-2-ref.html # bug ?????? - incorrectly applying clip to sticky contents
 
 # for the following tests, we want to disable the low-precision buffer
 # as it will expand the displayport beyond what the test specifies in
 # its reftest-displayport attributes, and interfere with where we expect
 # checkerboarding to occur
 default-preferences pref(layers.low-precision-buffer,false)
 skip-if(!asyncPan) == checkerboard-1.html checkerboard-1-ref.html
 skip-if(!asyncPan) == checkerboard-2.html checkerboard-2-ref.html
new file mode 100644
--- /dev/null
+++ b/layout/reftests/layers/fixed-pos-scrolled-clip-layerize.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="200">
+
+<title>position:fixed with scrolled clip should prerender everything and correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.blueBox {
+  margin: 10px;
+  width: 200px;
+  height: 200px;
+  box-sizing: border-box;
+  border: 1px solid blue;
+}
+
+.absoluteClip {
+  position: absolute;
+  top: 300px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: red;
+  clip: rect(auto auto auto auto);
+}
+
+.fixed {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: linear-gradient(lime 300px, black 0);
+}
+
+.absoluteCyanBox {
+  position: absolute;
+  top: 200px;
+  left: 400px;
+  width: 200px;
+  height: 200px;
+  box-sizing: border-box;
+  border: 1px solid cyan;
+}
+
+
+</style>
+
+<div class="blueBox" reftest-assigned-layer="page-background"></div>
+
+<div class="absoluteClip">
+  <div class="fixed"></div>
+</div>
+
+<div class="absoluteCyanBox" reftest-assigned-layer="page-background"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/layers/fixed-pos-scrolled-clip-opacity-inside-layerize.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="200">
+
+<title>position:fixed with scrolled clip should prerender everything and correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.blueBox {
+  margin: 10px;
+  width: 200px;
+  height: 200px;
+  box-sizing: border-box;
+  border: 1px solid blue;
+}
+
+.opacity {
+  opacity: 0.8;
+}
+
+.absoluteClip {
+  position: absolute;
+  top: 300px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  clip: rect(auto auto auto auto);
+}
+
+.fixed {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: linear-gradient(lime 300px, black 0);
+}
+
+.absoluteCyanBox {
+  position: absolute;
+  top: 200px;
+  left: 400px;
+  width: 200px;
+  height: 200px;
+  box-sizing: border-box;
+  border: 1px solid cyan;
+}
+
+
+</style>
+
+<div class="blueBox" reftest-assigned-layer="page-background"></div>
+
+<div class="absoluteClip">
+  <div class="opacity">
+    <div class="fixed"></div>
+  </div>
+</div>
+
+<div class="absoluteCyanBox" reftest-assigned-layer="page-background"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/layers/fixed-pos-scrolled-clip-opacity-layerize.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html reftest-async-scroll
+      reftest-displayport-x="0" reftest-displayport-y="0"
+      reftest-displayport-w="800" reftest-displayport-h="2000"
+      reftest-async-scroll-x="0" reftest-async-scroll-y="200">
+
+<title>position:fixed with scrolled clip should prerender everything and correctly move the clip</title>
+
+<style>
+
+body {
+  margin: 0;
+  height: 4000px;
+}
+
+.blueBox {
+  margin: 10px;
+  width: 200px;
+  height: 200px;
+  box-sizing: border-box;
+  border: 1px solid blue;
+}
+
+.opacity {
+  opacity: 0.8;
+}
+
+.absoluteClip {
+  position: absolute;
+  top: 300px;
+  left: 100px;
+  width: 200px;
+  height: 200px;
+  background: red;
+  clip: rect(auto auto auto auto);
+}
+
+.fixed {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: linear-gradient(lime 300px, black 0);
+}
+
+.absoluteCyanBox {
+  position: absolute;
+  top: 200px;
+  left: 400px;
+  width: 200px;
+  height: 200px;
+  box-sizing: border-box;
+  border: 1px solid cyan;
+}
+
+
+</style>
+
+<div class="blueBox" reftest-assigned-layer="page-background"></div>
+
+<div class="opacity">
+  <div class="absoluteClip">
+    <div class="fixed"></div>
+  </div>
+</div>
+
+<div class="absoluteCyanBox" reftest-assigned-layer="page-background"></div>
--- a/layout/reftests/layers/reftest.list
+++ b/layout/reftests/layers/reftest.list
@@ -17,16 +17,18 @@ skip-if(!asyncPan) != pull-background-di
 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) != 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) == forced-bg-color-outside-visible-region.html forced-bg-color-outside-visible-region-ref.html
 != layerize-over-fixed-bg-1.html about:blank
+!= fixed-pos-scrolled-clip-layerize.html about:blank
+== fixed-pos-scrolled-clip-opacity-layerize.html fixed-pos-scrolled-clip-opacity-inside-layerize.html
 
 # These tests check whether the GPU process is working. We expect it to work if:
 #   E10S is enabled, and
 #   Direct2D 1.1 works (as a proxy for Windows 7 SP1 + Platform Update or higher), OR
 #   The GPU process has been forced on.
 # If these conditions are met, but the GPU process is not on, these tests will turn on
 # and compare false.
 skip-if(!browserIsRemote||!d2d||gpuProcess) == data:text/plain,FAIL about:blank